coge la información y corre

Trabajar con conexiones socket en PHP

31 de Octubre del 2007 Escrito por Alex Barros

Para aquellos que cuenten con CURL en su servidor, sabrán que esta biblioteca ofrece increíbles ventajas. Sin embargo en ocasiones no contamos con esta herramienta en el servidor, o necesitamos trabajar a un nivel más bajo; es decir, sin que CURL nos lo de todo masticadito.

Este nivel es el de interactuación entre máquinas a través de un protocolo (usualmente HTTP).

Voy a centrarme en el uso de la función fsockopen() y en las cabeceras HTTP. Aúnque estas conexiones abarcan más materia, estos puntos resultan más útiles y sencillos de entender.

Para iniciar una conexión con otro dominio de internet, crearemos un puntero mediante fsockopen. Este puntero referencia a la conexión que hemos establecido con el archivo de ese otro dominio, y podremos usar las funciones típicas de un puntero de archivo (fgets() y fputs() principalmente)

La función requiere de un parámetro obligatorio (el archivo remoto) y otros opcionales, que son:

  • Puerto: Cualquier máquina consta de diversos puertos. El 80 (ó 8080 en ocasiones) es el de HTTP (transferencia de documentos web), el que más nos interesa.
  • Error numérico: Número entero que identifica un error ocurrido. 0 si ha habido éxito
  • Error descriptivo: Define en lenguaje natural el error.
  • Tiempo de espera: Puedes indicarle el tiempo para que la conexión expire. Para tener mayor control de este tiempo, puedes usar también stream_set_timeout()

Un ejemplo de conexión usando esta técnica puede ser este:

  1. $da = fsockopen("www.example.com", 80, $errno, $errstr, 30);
  2. if (!$da) {
  3.     echo "$errstr ($errno)
  4. \n"; //ha ocurrido un error …
  5. } else {
  6.     $salida = "GET / HTTP/1.1\r\n"; //conexión usando HTTP1.1 y el metodo GET
  7.     $salida .= "Host: www.example.com\r\n"; //indico el host con el que quiero conectarme, disponible con parse_url()
  8.     $salida .= "Connection: Close\r\n\r\n"; //Cierro la conexion para no seguir gastando recursos
  9.  
  10.     fwrite($da, $salida); //le escribo las ordenes que acabo de generar
  11.     while (!feof($da)) { //recorro fila a fila el archivo
  12.         echo fgets($da, 128); //imprimo esta linea
  13.     }
  14.     fclose($da); //cierro el puntero
  15. }
  16.  

Como podemos observar, nos permite enviar las cabeceras HTTP que creamos oportunas, aúnque para hacer una conexión simple basta con las tres instrucciones indicadas en el ejemplo.

Para chequear el contenido de cualquier URL, sin pararse a personalizar cabeceras se puede emplear este simple script:

  1. function urlContent($host) {
  2.         $da = fsockopen($host, 80);
  3.         if (!$da) {
  4.                 return false;
  5.         } else {
  6.                 $salida = "GET / HTTP/1.1\r\n"; //conexión usando HTTP1.1 y el metodo GET
  7.                 $salida .= "Host: $host\r\n"; //indico el host con el que quiero conectarme, disponible con parse_url()
  8.                 $salida .= "Connection: Close\r\n\r\n"; //Cierro la conexion para no seguir gastando recursos
  9.  
  10.                 fwrite($da, $salida); //le escribo las ordenes que acabo de generar
  11.                 while (!feof($da)) { //recorro fila a fila el archivo
  12.                 $data .= @fgets($da, 128); //imprimo esta linea
  13.                 }
  14.                 fclose($da); //cierro el puntero
  15.                 return $data;
  16.         }
  17. }
  18.  
  19. //Ejemplo de uso
  20. $contenido = urlContent(‘codis.boozox.net’);
  21. echo nl2br(htmlentities($contenido)); //doy formato para leer el codigo

Ver en ejecución | Descargar:

urlContent.function.zip

El funcionamiento básico de los sockets es algo más complejo que CURL, pero si nuestro servidor no admite esta librería, este script nos vendrá de perlas en más de una ocasión.

Categorias: Código, PHP, Web | 2 comentarios »

De Webmaster windowsero a Webmaster Linuxero, parte II

29 de Octubre del 2007 Escrito por José Cabo

De Webmaster windowsero a Webmaster Linuxero, parte I (estás leyendo la parte II)

Y pasando a la segunda parte, es decir, a la personalización del entorno gráfico para que consiga ser productivo de verdad…

Para empezar y como elemento básico, necesitamos que Compiz Fusion esté activo y si os ponéis incluso en el tema os recomendaría este perfil de configuración que he creado (usad el gestor de preferencias de Compiz Fusion). Esto es debido a que Compiz Fusion nos ofrece un incremento de producción gracias a algunos de sus plugins. Una injusticia hacia Compiz Fusion es que se dice que solo da “belleza”, que también es cierto, pero al mismo tiempo esos pequeños detalles influyen mucho en el rendimiento de nuestro trabajo, en nuestro caso, el de programación.

No se vosotros, pero a mí siempre me ha gustado tener las cosas a mano sin tener que rebuscar entre el menú de aplicaciones (que aunque el menú de Gnome es bastante simple a veces hay que dar más clics de los necesarios y… es un pateo, como diría mi amigo Marcos.) Por eso, siempre recomiendo situar en las barras de Gnome las aplicaciones que queramos usar (las buscamos en el menú y las arrastramos hasta donde las queremos, se creará automáticamente un enlazador).

icons1.png

También sería buena idea crear un acceso directo al directorio donde se encuentran todos los ficheros web (htdocs). Para eso podemos usar el cliente FTP de nautilus. Lo podemos encontrar en Lugares/Conectar con el servidor… en el menú y configurarlo con los credenciales que hayamos puesto. Se nos creará un lanzador en el escritorio y también se habrá añadido al menú Lugares.

ftploginlocal11.png

Ahora entra en juego la gestión de ventanas y el uso de varios escritorios. Con Compiz Fusion podemos gestionar de forma atractiva el cambio entre ventanas y el modo de situarlas. Podemos intercambiarlas entre los distintos escritorios, podremos inicializar exposé para ver las que tenemos abiertas y seleccionar la que necesitemos, etc. Por ejemplo, lo primero es aumentar el nº de escritorio en al menos cuatro (o los que realmente prefieras).

Para aumentar el número de escritorios virtuales simplemente hacemos clic en el applet donde se muestran los que tenemos activos y dando clic derecho/preferencias cambiamos el número de columnas a 4 (o el que nosotros prefiramos).

En el escritorio nº 1 podríamos tener el programa editor que nosotros hayamos elegido y alguna otra ventana más que no moleste. En el escritorio nº 2 podemos usarlo para las ventanas con el FTP y demás cosas relacionadas y, para el escritorio nº 3 podemos dejar presentes las aplicaciones “auxiliares” como puede ser GIMP entre otras cosas. Como siempre, recuerdo que es buena idea usar el efecto exposé (en mis preferencias que os he subido: esquina superior-derecha) y el tabulador (Alt+tab+tab+…).

Probamos ahora a personalizar nuestra aplicación que hayamos elegido para escribir código. Para los usuarios de Gedit, recomiendo echar un vistazo a esta entrada sobre personalizar Gedit de viciao2k3 y si os gustan sus recomendaciones pues usad las que creáis convenientes.

Os pongo los atajos de teclado (y ratón) que más uso y que podéis encontrar en las preferencias que antes puse a vuestra disposición:
* Cambiar de escritorio (derecha o izquierda) –> CONTROL+ALT+DERECHA ó CONTROL+ALT+IZQUIERDA
* Cambiar la ventana enfocada de escritorio (derecha o izquierda) –> CONTROL+ALT+SHIFT+DERECHA ó CONTROL+ALT+SHIFT+IZQUIERDA
* Efecto Exposé –> Esquina Superior Derecha
* Efecto Wall –> Esquina Superior Izquierda
* Tabular Ventanas –> ALT+Tab
* Screenshot de Area –> SUPER+CuadradoHechoConElRatón
* Agrupar Ventanas –> CONTROL+S ([Selec]Seleccionas las ventanas que quieres) + CONTROL+G ([Group]Agrupa las ventanas que has seleccionado, mueve una de ellas ;)) + CONTROL+T ([Tab]Convierte las ventanas en una sola pudiendo usarse ‘tabs’ desde la barra de título) y CONTROL+U ([Ungroup]para deshacer todo lo anterior)
* Etc…. ;), podéis des-seleccionar el plugin ‘wooby’ (ventanas gelatinosas) si os resulta molesto, pero… es que a mi si no veo la ventana moverse de esa forma me parece que estoy en el pleistoceno.

Si tenéis más ideas, ya sabéis, a colaborar con las mismas.

Categorias: Aplicaciones, Escritorio 3D, GNU/Linux, Pa' gustos colores | 9 comentarios »

¿Qué orden de nombres debería usar para nombrar a las Ubuntu’s?

25 de Octubre del 2007 Escrito por José Cabo

¿Qué orden de versiones, sabores y gustos debería usar para nombrar correctamente a las diferentes Ubuntu’s que han salido desde el 2004?

Yo mismo me he hecho esa pregunta, qué nomenclatura debería usar para nombrar correctamente y al mismo tiempo de forma vistosa y con estilo el propio nombre de Ubuntu. Ubuntu lo que son nombres ha tenido para parir; versiones; gustos; X’s; K’s; etc…. pero pocas veces, a la hora de referirnos a éstas o simplemente a la hora de escribir en el CD hemos sabido como hacerlo.

Yo os traigo un método que creo que es el que se debería usar ahora, aunque admite variaciones y opiniones. Todo está basado en permitir una fácil y completa lectura.

Estos son ejemplo:

* Para Ubuntu Feisty:
– Ubuntu GNU/Linux 7.04 Feisty Fawn i384 Desktop BETA1
– Ubuntu GNU/Linux 7.10 Gutsy Gibbon AMD64 Alternate
– KUbuntu GNU/Linux 7.10 Gutsy Gibbon i384 Desktop
* Para Dapper
– Ubuntu GNU/Linux 6.06.1 LTS Dapper Drake i384 InstallCD
.
.
.

Acabáis de ver con ejemplos una forma fácil de nombrar las distribuciones y versiones de Ubuntu. Básicamente y en forma de esquema quedaría:

[DISTRIBUCIÓN] [SISTEMA-OPERATIVO] [VERSIÓN] [NOMBRE DE LA VERSIÓN] [ARQUITECTURA] [TYPE] [EXTRAS]

En donde:
[DISTRIBUCIÓN] Son los diferentes gustos: Ubuntu, Kubuntu, Xubuntu, Edubuntu, Gobuntu, ?ubuntu, ….
[SISTEMA-OPERATIVO] Es la etiqueta MÁS IMPORTANTE de todas. Nos recuerda que Ubuntu es una distribución entre otras tantas y que el sistema operativo es Linux: GNU/Linux. Porque ni Ubuntu es Linux ni Linux es Ubuntu. Sin éste, Ubuntu no existiría de ninguna de las maneras.
[VERSIÓN] Básicamente… se refiere al número de la versión que correspondiente: 4.10; 5.04; 5.10; 6.06; 6.06.1; 6.10; 7.04; 7.10; …
[NOMBRE DE LA VERSIÓN] El nombre de la versión que se le ha dado: Warty Warthog; Hoary Hedgehog; Breezy Badger; Dapper Drake; Edgy Eft; Feisty Fawn; Gutsy Gibbon; … En esta etiqueta se incluiría si lo fuera “LTS” (En Dapper y en la próxima Hardy, por ejemplo).
[ARQUITECTURA] Para la arquitectura a la que se destinará la instalación: i386 (32bits); AMD64 (64bits); MAC
[TYPE] El tipo de CD que es: LiveCD; InstallCD; Desktop; Alternate; ¿Server?;…
[EXTRAS] Los extras que podamos añadir como información. Esto puede ser si es una RC, una BETA, una ‘flight‘, etc.

Se aceptan sugerencias.

Categorias: Canonical, GNU/Linux, Pa' gustos colores, Ubuntu | No hay comentarios »

GStat supera el medio millón de registros

23 de Octubre del 2007 Escrito por Alex Barros

cumple!Algunos de vosotros recordaréis el proyecto GStat que emprendí hace pocos meses.

La idea fundamental era recaudar información del software que usaba la gente para navegar, y hacer estadísticas generales y particulares de los internautas.

Pues bien, después del lanzamiento, en el cual hubo una gran acojida, ha permanecido dormitando todo este tiempo, pero sin dejar de recaudar datos día sí, día también sin descanso.

Hoy echando un vistazo a la base de datos, observo con alegría que ya se ha superado la notable cantidad de medio millón de registros (concretamente 506.546 en este instante)

No quiero adelantar acontecimientos, pero estas navidades GStat va a mudar la piel, para convertirse en un servicio de calidad, abierto las 24 hs a cualquier persona. Sólo diré que me lo estoy pasando genial al desarrollar este proyecto, y eso es un buen indicador.

PD: me gustaría agradecer a las webs que colaboran. Como son tantas voy a poner un estracto de links de la diversidad de webs que colaboran:

Categorias: Aplicaciones, Boozox, Internet, Novedades | 11 comentarios »

De Webmaster windowsero a Webmaster Linuxero, parte I

23 de Octubre del 2007 Escrito por José Cabo

20-xampp-logo-trio.jpg¿Eres webmaster, usas Windows, pero te sientes vacío y quieres ir a más y considerarte un webmaster de calidad?

Pero ello te plantea dos posibles opciones: la primera consiste en abandonar todo lo que sabes y dedicarte a ver cómo crece tu jardín (que probablemente ni tengas) porque en Windows nunca serás ‘lo más cool’ ni lo más ‘profesional’ que querrías ser.

La segunda opción es pasarte a GNU/Linux. Aprender a desarrollar en una verdadera plataforma de desarrollo, aprender a -trabajar- en un escritorio profesional de verdad, en un ordenador que realmente computa información de manera efectiva. Seguro que al final, con insistencia, alguna de estas cualidades de GNU/Linux se te contagian y puedes completar tu formación de webmaster/administrador.

Para comenzar dividiremos nuestro cambio de sistema en dos partes: La primera y más importante será la referente al software y, la segunda será la referente a la ‘adaptación del entorno de escritorio a nuestro gusto’, es decir, la personalización del escritorio, con enlaces a las aplicaciones que más vamos a usar, uso de los diferentes escritorios, etc…

Una parte muy importante y necesaria para un buen webmaster es un ’servidor de pruebas’ en donde subiremos nuestros scripts web (html, php, etc…) antes de subirlos al hosting. Hablo de software pero en realidad debería hablar de hardware, el problema viene cuando nosotros somos pobres trabajadores explotados por la burguesía y no podemos permitirnos tener una sala especial para montar nuestro servidor para hacer pruebas así que nos limitaremos a usar nuestro propio ordenador. Por lo tanto lo primero que deberemos hacer es elegir una distribución - que en mi caso es Ubuntu GNU/Linux 7.10 Gutsy Gibbon, liberada el reciente 18 de Octubre, aunque puede servir cualquier distribución reciente de Linux (Fedora, Mandriva, OpenSuse, …). Obviamente, nuestro entorno de trabajo por defecto será Gnome (mi favorito… y para mi gusto el mejor, aunque siempre podéis probar con KDE o con Xfce entre otros montones).

Sigue leyendo esta entrada »

Categorias: GNU/Linux, HOWTO/CóMO, Web | 12 comentarios »

Mis camisetas preferidas de ThikGeek

22 de Octubre del 2007 Escrito por Alex Barros

Los chicos de ThinkGeek son de lo más originales y estrambóticos en sus diseños y creaciones. Son pioneros en la venta de camisetas con luces, tanto animaciones, como detectores de señal WIFI o ecualizadores; además de sus miles de trastitos, que son más de fardar y de hacer el chorra que de darles un uso práctico.

Quiero mostraros las camisetas que más me gustan de esta curiosa tienda online.

Queda fatal explicar los chistes, pero por no discriminar, voy a explicar estos chistes tan súmamente geeks, junto a la camiseta en cuestión.

There’s no place like 127.0.0.1
127.0.0.1 es la dirección que representa a nuestra propia máquina, nuestro ordenador. Se le suele llamar localhost. En este caso, es nuestro entrañable hogar!

2b or not 2b
Esta es algo compleja. En primer lugar, se trata de una expresión regular, que podría leerse como: “o dos letras ‘b’ , o cualquier caracter menos dos letras ‘b’”. La gracia está en que en inglés puede leerse como “two b, or not two b”, lo cual suena igual que “to be, or not to be”, mítica frase de la obra Hamlet de Shakespeare

Try, try again
Esta representa el bucle While. Este bucle funciona de tal forma que, mientras la expresión entre paréntesis no se evalue como cierta, seguirá repitiéndose. En este caso, “mientras no tenga éxito tu intento, continúa intentándolo”. Este me gusta mucho, tiene un componente filosófico, además del componente chorra.

include love
Esta es la más tierna. En los lenguajes C y C++, justo antes de declarar los programas en el código fuente, se ha de dedicar unas líneas a dar indicaciones al compilador. Una de las más importantes es #include, el cual indica al compilador que requiere de la librería que se le está pidiendo para que funcione. En este caso, la librería love.h incluiría funciones para el manejo de… ¿el amor?

En fin, si alguien me quiere regalar una de estas camisetas, que no lo dude! Aúnque por más que me contengo, creo que acabaré por comprarme una yo mismo…

Categorias: Aparatos, Entretenimiento, Geek, meme | 1 comentario »

Review de Ubuntu Gutsy 7.10

19 de Octubre del 2007 Escrito por José Cabo

Un día después de la salida de Ubuntu GNU/Linux 7.10 Gutsy Gibbon os traigo una pequeña review para explicar las novedades que se agradecen y las que incluso, no se agradecen. Que como en cada cambio existen.

. La versión final, como ya he dicho muchas veces en otros posts, una de las novedades que trae Ubuntu será la inclusión (y activación) de serie de Compiz Fusion. Es decir, que en el momento en que dispongamos de aceleración 3D (mediante el Gestor de Paquetes Restringidos o por donde sea) tendremos Compiz Fusion funcionando (aunque a un nivel básico por mera cuestión de recursos).

Sigue leyendo esta entrada »

Categorias: Canonical, Novedades, Release, Review, Ubuntu | 4 comentarios »

¡¡¡Ya tenemos aquí Ubuntu 7.10 Gutsy Gibbon!!!

18 de Octubre del 2007 Escrito por José Cabo

masthead-left-gutsy2.jpg¡¡Por fin!!, 6 meses después tenemos a nuestra total disposición la esperada última versión de la archiconocida ubuntu por parte de Canonical: Ubuntu GNU/Linux 7.10 Gutsy Gibbon. Ha sido liberada hoy día 18 de Octubre.

Actualmente no está avisado en la página oficial de Ubuntu, pero la página que gestiona las descargas ya está activa.

Tenemos a nuestra disposición a Ubuntu, Kubuntu, Xubuntu y Edubuntu. Recordad.. que los servidores están totalmente colapsados así que mi recomendación es que os lo descarguéis por vía torrent (o por donde sea) menos por descarga directa. Más que nada para ahorrar un desperdicio de ancho de banda de los servidores de Ubuntu.

Pronto pondré más noticias relacionadas con Ubuntu, mientras tanto, ¿qué tal sí nos comentas tus experiencias, frustadas o no, con tu versión de Ubuntu? Pruebala y cuenta.

PD: Por cierto!, para los desarrolladores de aplicaciones (sobretodo de web) que tanto abundan últimamente en Boozox (en gran parte atraídos por mi compañero Alex Barros) e interesados pienso hacer en breve un pequeño manual sobre qué se necesita para poder trabajar en nuestro ordenador para ser Webmaster o programador. Espero que os guste.

Categorias: Canonical, GNU/Linux, Novedades, Release, Software libre, Ubuntu | 2 comentarios »

Conseguir comentarios en nuestro Blog

17 de Octubre del 2007 Escrito por Alex Barros

Todos los que tenemos un blog sabemos lo importante que son los comentarios. Te ayudan a continuar con tu labor, a corregir errores, a completar información, a conocer a tus lectrores, y sobre todo pasar un buen rato.

Por eso es muy importante potenciar los comentarios, y darles el valor que se merecen. Voy a explicar una serie de estrategias que pueden hacer que se comente más en tu blog, o por lo menos que sea más agradable hacerlo.

Sigue leyendo esta entrada »

Categorias: Código, Diseño, HOWTO/CóMO, PHP, Plugins, Web, Wordpress | 2 comentarios »

Carga asíncrona de archivos JavaScript

16 de Octubre del 2007 Escrito por Alex Barros

Me gustaría recalcar esta técnica, ya que según mi opinión no está valorada lo suficiente.

Se trata de la carga asíncrona de archivos Javascript, es decir, no cargar un archivo JavaScript hasta que lo necesite.

¿Cómo hago esto?

Es muy sencillo, una simple función puede facilitarte increíblemente el trabajo. Es la siguiente:

  1. function include(path){
  2.         var j = document.createElement("script");
  3.         j.type = "text/javascript";
  4.         j.src = path;
  5.         document.body.appendChild(j);
  6. }

Como puede apreciarse, la función crea “al vuelo” un elemento tipo script, y lo introduce en el cuerpo del documento. De esta forma no tenemos que cargar muchas librerías, o grandes archivos, hasta que no los necesitemos.

  1. if(programa == ‘test’) {
  2.         include(‘test.js’);
  3. } else {
  4.         include(‘default.js’);
  5. }

Es posible que incluso con el evento onLoad tengamos el control del instante en que se ha cargado, pero esto se atiene más a compatibilidades entre navegadores.

Este tema lo he rescatado, porque la versión 2.1 de Imaset va a tener una fuerte carga de Javascript, lo que hará que el manejo sea más rápido y llevadero, y evitará envíos AJAX innecesarios. Pero para esto debo cargar el gran fichero JS, únicamente cuando se solicite usar el plugin. De ahí su gran potencial.

Categorias: Código, JavaScript | 2 comentarios »

« Entradas Anteriores

del.icio.us meneame.net RSS

Buscar:

Gpsia Descubre y comparte rutas por todo el mundo, tomadas con GPS. Ver más Imaset Edita tus imágenes de Wordpress con este sencillo plugin. Ver más

¡Mi música es tuya!

Digo yo que...

Mis fotos de Flickr

Entradas Recientes

Meta:

Respeta el copyleft

,