Zumbe.net

Archivo de la categoria ‘Código’

Comet, la nueva etapa de Ajax

generic-comet.jpgAjax sigue siendo un completo desconocido para muchos programadores web. Se habla de que es un lenguaje (no lo es, es una herramienta!) y se asocia automáticamente a la nueva generación de webs, más potentes, amigables, sociales, usables…

Ajax consiste, básicamente, en mandar mensajes (con formato XML, o texto plano) del servidor al cliente mediante una petición asíncrona por parte del cliente.

Un ejemplo: Cuando el usuario pulsa en un botón de búsqueda, se envía una petición al servidor solicitando los resultados de esta búsqueda, cuando los tiene los devuelve, y el usuario los ve en pantalla, todo sin cambiar de página.

Esto implica que para que el servidor me de información, el cliente tiene que solicitarla, es decir, al ocurrir algún evento en el lado cliente. Y aquí radica la diferencia entre AJAX y Comet (o HTTP Push), y es que Comet no requiere que el ordenador cliente solicite ninguna información, sinó que es el servidor el que decide cuándo enviar la información al cliente, de forma asíncrona.

Un ejemplo: En un sistema de mensajería instantánea, en lugar de hacer contínuos chequeos al servidor, para ver si hay nuevos mensajes, símplemente cada vez que el servidor recibe un nuevo mensaje envía esta información a las máquinas cliente.

La forma de hacer esto es mediante una conexión HTTP de larga duración, de esta forma el servidor tiene una línea contínua de comunicación con el cliente. Aquí el cliente envía información al servidor, y el servidor al cliente; pero cada uno lo hace en el momento oportuno, en lugar de viajar la información como bloque de datos en respuesta a una petición.

Para usar esta tecnología tendremos que usar alguno de los pocos frameworks que actualmente existen con soporte para Comet, por ejemplo Xaja, un framework PHP que permite este tipo de conexión, o HTTP.Push, pequeña biblioteca javascript con este tipo de llamada.

Personalmente todabía he de investigar sobre esta tecnología, porque no tengo muy claro lo de generar eventos en el servidor, o lo de que un archivo en lado servidor esté siempre disponible con el cliente.

Ningún comentario | tags: Código, Páginas Web, General

Las cadenas también son arrays

Reivindiquemos el derecho de las cadenas alfanuméricas a ser arrays!

Así es, en PHP las cadenas tienen esta curiosa propiedad. Y esque se comportan como un array, donde el índice es un número representando la posición del cacarter, y el valor es el caracter que se encuentra en esa posición.

Veamos un código de ejemplo:

Código (php)
  1. $cadena = ‘ABCDEFGHIJKLMNOPQRSTUVWXYZ’;
  2. echo $cadena[25],$cadena[20],$cadena[12],$cadena[1],$cadena[4];

El ejemplo anterior imprimiría en pantalla la palabra ZUMBE .

Así que ya sabéis, no discriminéis a una cadena por no tener índices, estaríais cayendo en un grave error!

Un comentario | tags: PHP, Código, General

Recorrer un Array en PHP

Para recorrer un array en PHP tenemos tres opciones. Cada una es apropiada para distintas situaciones.

1: Bucle For

Este bucle es apropiado para arrays con un índice numérico. Si no hemos definido índices a nuestro array, por defecto será numérico.
Requiere tres parámetros, el primero es dónde empieza a contar, el segundo hasta cuándo, y el tercero las variaciones que va sufriendo la variable en cada iteración.

Código (php)
  1. $vector = array(‘a’,‘b’,‘c’);
  2. $vector[] = ‘d’;
  3. $vector[] = ‘e’;
  4. for($i=0;$i<count($vector);$i++)
  5. echo "<p>El vector con indice $i tiene el valor $vector[$i] </p>";

ver resultado

Otra ventaja de este bucle es que podemos recorrerlo parcialmente, o ir botándonos elementos. Por ejemplo, vamos a recorrer un array desde el elemento 3 hasta el 9, de dos en dos.

Código (php)
  1. $vector = array(‘a’,‘b’,‘c’,‘d’,‘e’,‘f’,‘g’,‘h’);
  2. $vector[] = ‘i’;
  3. $vector[] = ‘j’;
  4. for($i=3;$i<=9;$i+= 2)
  5. echo "<p>El vector con indice $i tiene el valor $vector[$i] </p>";

ver resultado

2: Bucle Foreach

Este bucle es el más indicado para arrays con índices no numéricos, aúnque sirve también para recorrer fácilmente uno numérico. La ventaja es que da igual cuántos elementos tenga el array, o cómo sean; foreach los recorrerá sin problema.

Código (php)
  1. $vector = array(‘uno’=>‘a’,‘dos’=>‘b’,‘tres’=>‘c’,‘cuatro’=>‘d’);
  2. foreach($vector as $c=>$v)
  3. echo "<p>El vector con indice $c tiene el valor $v </p>";

ver resultado

3: Bucle While

Para recorrer un bucle con índices, podemos optar también por el bucle While. Pero tendremos que hacer uso de las funciones list y each.

Código (php)
  1. $vector = array(‘uno’=>‘a’,‘dos’=>‘b’,‘tres’=>‘c’,‘cuatro’=>‘d’);
  2. while (list($clave, $valor) = each($vector)) {
  3. echo "<p>El vector con indice $clave tiene el valor $valor </p>";

ver resultado

Elije en cada ocasión la que más te convenga, pero ten siempre en mente todas las opciones.

2 comentarios | tags: PHP, Código, General

Trabajar con clases y objetos en PHP

Programacion orientada a objetosEste verano comencé a orientar todos mis scripts a Objetos. Esta metodología es muy recomendada para cualquier proyecto con más de 100 líneas de código. Te permite agrupar en entidades tus herramientas de trabajo, de esta forma tu código es fácilmente reutilizable, mucho más comprensible, y mejor estructurado.

Voy a tratar de explicaros en qué consiste, y cómo programar clases y objetos en el lenguaje PHP. Advierto que muchas veces este concepto es complicado; a mí me costó mucho comprenderlo, y lo hice gracias a JavaScript y MooTools, que tiene un mejor soporte de objetos.

Sigue leyendo »

5 comentarios | tags: Código, General

CURLOPT de CURL

Aúnque el título parezca más bien un trabalenguas proviniente del mismísimo Chiquito de la Calzada, hoy voy a comentar algunas potentes opciones que nos brinda la biblioteca CURL.

Para mí CURL era un auténtico desconocido, cuando en el anterior host no tenia ni fopen para urls externas. Pero una vez lo conoces se convierte en una herramienta muy potente y útil.

Lo primero a realizar en nuestro código, es siempre la inicialización de curl, con la función curl_init()

Código (php)
  1. $ch = curl_init();

Hecho esto tendremos en la variable $ch el identificador de nuestra sesión CURL. Ahora sólo nos tenemos que dedicar a marcarle nuestras preferencias para la conexión. Voy a mostraros a continuación las que me parecen más importantes, pero recordad que hay muchas más.

Código (php)
  1. // Indicamos la URL a la que queremos acceder
  2. curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
  3. // Si la conexión tarda más de 30 segundos, que no siga
  4. curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,30);
  5. // Si la conexión falla, que lo haga de forma "silenciosa"
  6. curl_setopt($ch, CURLOPT_FAILONERROR, 1);
  7. // Permitir que la conexión se redirija si le es indicado
  8. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  9. // El resultado lo quiero almacenar en una variable, en lugar de que lo imprima por pantalla
  10. curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
  11. // Voy a enviar contenido en forma de variables POST
  12. curl_setopt($ch, CURLOPT_POST, 1);
  13. // Estos son los campos POST, en forma de array asociativo
  14. curl_setopt($ch, CURLOPT_POSTFIELDS, array(‘nombre’=>"Alex",‘apellido’=>"Barros"));
  15. // Voy a finjir que tengo una serie de Cookies, incluida la de sesión
  16. curl_setopt($ch, CURLOPT_COOKIE, ‘nombre=Alex; galleta=chocolate; PHPSESSID=0123456789qwertyasdfg9876543210′);
  17. // Foy a finjir que provengo de otra web, la que yo quiera
  18. curl_setopt($ch, CURLOPT_REFERER, ‘http://zumbe.net/’);
  19. // Voy a indicar qué User Agent estoy usando. Por ejemplo el de un iPhone
  20. curl_setopt($ch, CURLOPT_USERAGENT, ‘mozilla/5.0 (iphone; u; cpu like mac os x; en) applewebkit/420+ (khtml, like gecko) version/3.0 mobile/1c25 safari/419.3′);

Por último, ejecutamos la sesión, y cerramos la misma.

Código (php)
  1. // Almaceno en la variable $resultado el codigo de la pagina
  2. $resultado = curl_exec($ch);
  3. // Se cierra el recurso CURL y se liberan los recursos del sistema
  4. curl_close($ch);

Sólo con esas herramientas ya podemos hacer un proxy muy completo, que nos haga lo que nosotros queramos.
Ahora sólo es echarle imaginación, ingenio y paciencia.

15 comentarios | tags: Código, General

De cómo hackear y después arrepentirse

codigo.jpgSí, lo confieso. Hoy me he comportado como un auténtico hacker (aunque tampoco querría dármelas).

Tras recibir una sugerencia para almacenar la procedencia de los visitantes de GStat, con el fin de obtener información aún más específica, me puse a investigar cómo obtener una geolocalización a partir de una IP.

Mi sorpresa fue que no existía apenas software con este fin, y menos aún libre. El servicio más eficaz, que daba una infromación muy certera y específica, tenía como medida anti-robots un sistema de registro mediante e-mail, con lo que obtenias 50 oportunidades al día.

Esto me interponía dos barreras: 50 al día no puede sincronizarse con los 30.000 registros diarios de GStat. Además el sistema de registro mediante mail obligaría a hacerlo a mano, cada día, y olvidarse de un robot.

Sin embargo, donde podría ver barreras, yo ví desafíos.

Sigue leyendo »

11 comentarios | tags: Código, Software libre, General

Zumbe.net es administrado por WordPress
Puedes suscribirte a las Entradas (RSS) o los Comentarios (RSS).
Esta obra se encuentra bajo una licencia de Creative Commons.