La singularidad de Jquery

Un niño se queda perplejo al ver un pájaro volar, incluso lo intenta imitar. Le faltan conocimientos para comprender que volar no sólo depende de mucha ilusión, dependen de otros factores mucho más importantes. Algo parecido me ha sucedido con jquery. Jquery es una librería/framework que facilita el trabajo al programador front-end a la hora de trabajar con el DOM. Desde hace años utilizo esta herramienta tan eficiente, pero nunca me había sumergido en el código, ya sea por ganas o porque para poder analizar el código detenidamente necesitas tiempo y conocimiento. Ahora que tengo un “pelín” más de conocimiento y algo de tiempo  he decidido a bucear por el código, descubriendo muchos aspectos de jquery que no conocía. Después de revisar el potencial y la gran cantidad de trabajo que conlleva realizar un framework de estas características, he seguido leyendo la evolución de jquery desde el año 2006 que salío la versión estable hasta la más reciente. Es impresionante como la colaboración y el conomiento pueden trabajar conjuntamente y eleborar un producto tan genial y sofisticado, que debería ser patrimonio de la humanidad. Y sin obviar la UI de jquery que es genial.

 

Hacer post con JQuery

A veces pecamos de prácticos. Todo buen programador web tiene que pensar como maquetador web, pero no siempre lo hacemos.

Las aplicaciones web o cloud computing se están imponiendo a las aplicaciones de escritorios, pero la forma de trabajar de algunas aplicaciones de gestión, parece que no convencen a las personas habituadas al uso de otras tecnologías más obsoletas. Un usuario con experiencia en el trabajo con aplicaciones de gestión verán con dificultad los refresco de pantalla, los cambios de url, el paso por parámetro. Así que debemos, almenos eso creo yo, en este tipo de apliaciones, “el mareo” de URL.

Una herramienta esencial que hay que conocer para poder llevar a cabo este tipo de modificaciones es la librería Jquery que contiene el método Post.

El método Post

example.html

$.post( ‘example.php’, { email: $(“#myemail”).val(), name: $(“#name”).val() },
//El primer parámetro es la url que recibe los parámetros. En este caso el parametro email y name pasado por post.

//el parámetro devuelto para la función puede llamarse como te venga en gana. Yo de forma personal suelo utilizarlo como forma de capturar errors.Si es contrario a falso, sacaremos el valor de error por pantalla y mostraremos el error al usuario. Por el contrario si es false, significará que no ha producido ningún error y por tanto podemos continuar con las acciones.

function(error) {

if(error != “false”) {

$(#error).val() = error;

}else{

//Lo que querramos hacer cuando nos devuelva

}
}

});

example.php

$email = $_POST['email'];

if(vericamos($email)){
echo false;
}else{
echo “Error: No ha pasado la verificación”;
}

El método GET es muy parecido pero vamos otro día lo pongo. Por cierto no olvidar las referencias en el a jquey.

La paginación en codeigniter sin condiciones

El titulo quizás sea muy retórico para hablar de temas técnicos.  LLevo unos meses trabajando bastante con Codeigniter. Hasta ahora nos ha ido de lujo, pero de vez en cuando cojea, no todo puede ser perfecto. Nos hemos dado cuenta, dentro del equipo de desarrollo de Adlemons.com, que codeigniter, almenos con la versión que trabajamos, tiene serios problemas con la librería de paginación,  la cual no te permite combinar filtros en las búsquedas.

Nosotros hemos solucionado el problema con javascript, php y mucha imaginación, ya que  el entorno donde se originaba el problema permitía tomarse la licencia de pasarse la parte SEO por el arco del triunfo y hacerlo todo de forma dinámica con Objetos Ajax.

Hemos creado una librería apodada “paginations.php” ( muy originales teniendo en cuenta que la primitiva de codeigniter es pagination) que recoje unos parámetros, entre ellos el nombre de la función que actualiza el div con nueva página y la cual devuelve los links de pagination con el formato adecuado haciendo referencia a la función de javascript que actualiza el div del resultado de la búsqueda. Acontinuación voy a anotar como utilizamos la librería paginations.php:

Qué cambios se ha realizado en la librería pagination.php para llamarse paginations.php?
antes

$output .= $this->num_tag_open.'".$loop."".$this->num_tag_close;

después

$output .= $this->num_tag_open."base_url."('.$n.'); ">".$loop."".$this->num_tag_close;

El secreto reside en la lamada en el href del vinculo a la función javascript que refresca el DIV.

antes

$this->base_url = rtrim($this->base_url, '/') .'/';

después

$this->base_url = rtrim($this->base_url, '') .''; // evitas que ponga una barra invertida detrás

Así se utiliza:

1º introducimos los parámetros $this->load->library(‘paginations’);

$config['base_url'] = 'update'//es el nombre de la funcion javascript que llama

$config['total_rows'] = 'Numero de elementos a filtrar';

$config['per_page'] = 'elementos por páginas a mostrar';

$config['uri_segment'] = 'Segmento de la url que contiene el número de paginación';

$this->paginations->initialize($config); // Inicializamos

//Está función devuelve la cadena string con formato HTML con los elementos de la páginación << < 1 2 3 4 5 > >>

$parapasaravista=$this->paginations->create_links();

Y en la vista tengo una función, en este caso llamada ‘update’ , en ajax que refresca el DIV con los filtros creados.

El debate de Geonio.com

Siempre he querido colaborar en la comunidad Opensource, que tanto nos ha dado, con un pequeño grano de arena. Así que he decidido poner Geonio en licencia GPL.

Para comenzar en este proceso he decidido, empezar de cero otra vez, pero esta vez con un framework. Primero empece buscando por la red documentación para elegir el framework que necesitaba de acuerdo a las características de Geonio.com. Mi primera opción fue CakePHP, lo instalé comence a implementar código. Me convencio su gran comunidad de desarrolladores. Pero empeze a darme cuenta que el software era demasiado extenso y tienen tropecientasmil cosas potentes pero con procesos demasiado costosos. Así que alfinal me hice con codeigniter que es mucho más ligero y simple, permitiendote realizar cualquier tipo de desarrollo sin depender de él sistematicamente.

Acabo de empezar a reusar el código que tenia migrándolo a codeigniter, reusando vistas, modificando controladores y creando los modelos nuevos por cambios en E-R de la Mysql.

Si quereis tener acceso al código solo teneis que ir aquí. Pd: no os asusteis que está en fase ALPHA ;) .

Codeigniter: An Error Was Encountered The URI you submitted has disallowed characters.

Sin querer actualicé mi versión de PHP y me surgierona algunos problemas con las URI y los carácteres especiales, que se resuelven así:

Necesitas sustituir la línea:

if(!preg_match("|^[". preg_quote($this->config->item('permitted_uri_chars'))."]+$|i", rawurlencode($str)))

por

if(!preg_match("|^[".($this->config->item('permitted_uri_chars'))."]+$|i", rawurlencode($str)))

en el archivo URI.php del libraries de Codeigniter y cambiar en el config.php de la configuración del proyecto los carácteres aceptados para la URL:
antes
$config['permitted_uri_chars'] = 'a-z 0-9~%.:_-';

ahora

$config['permitted_uri_chars'] = 'a-z 0-9~%\.\:_\-';
.
Espero que tengais suerte. Saludos.

La mejor tortilla la de mi madre

La elección de framework es una elección muy delicada que puede provocar dolores de cabeza a no muy largo plazo. Conocer las características del framework y tus necesidades es una de las cosas a tener en cuenta, pero ni mucho menos la única y nisiquiera la más importante. Uno de los detalles, que yo particularmente no había considerado hasta hoy, que puede ser foco de problema son las licencias de los frameworks.

Las licencias

La mayoría te permite realizar un uso corriente del framework para generar un servicio, ejemplo facebook que utiliza Zend. Pero si este portal quiesiera comercializar un producto generado mediante un framework con licencia MIT o BSO, tendría la obligación de liberar el código.

La comunidad

El problema de depender de un framework (empresas) es que pueden aparecer bugs innesperados en el momento en el que la empresa haya dejado el proyecto. Podría causar grandes problemas de seguridad, y arreglarlo metiendo mano en código ajeno a ese nivel, la verdad no lo recomiendo es verdaderamente complejo. Así que una de las cosas a valorar en la elección, es la comunidad desarrollo que está detrás del producto.

Alternativas

Soy partidario de no inventar la rueda cada vez que se programa, pero existen casos por las complejidad del proyecto, que obligan al programador (o equipo) a cocinarse su propio framework.

Si lo tuyo es crear tu propio Framework te recomiendo que busques información en google sobre Patrones de Diseño, MVC y UML. Existen multitud de libros que ayudan en la creación de tu nuevo framework. También es necesario desmigajar los frameworks de PHP para comprobar como funciona su núcleo. En el momento que sepas como esta estructurado, y si te han sobrado ganas, empieza con tu propio código.

El otro día conocí Akelos un framework creado por Bermi Labs ( Berni Ferrer ) un valenciano residente en Barcelona. Una muy buena opción de desarrollo, echad un ojo a su página y su código sobretodo si teneis intención de empezar en la programación con framework.