Index - Blog Juegosocio

Blog sobre todo aquello que nunca quisiste saber pero ese amigo friki se empeña en recordarte

creando un api en php: paso 2

Por mameyugo el 19.Jan.2010 facebook_16 twitter_16 delicious_16

la elecccion del protocolo, es una de las primeras decisiones que hay que tomar en la creaccion de un web service, existen varios metodos:

- SOAP: es un protocolo para el intercambio de informacion entre ordenadores (independientemente del sistema, y del lenguaje), puede usar distintos protocolos, pero aqui el que nos interesa es HTTP, utiliza XML como encapsulamiento de datos, lo normal seria tener un xml de definicion de servicio( que es un xml que describe los metodos que se puedesn usar y los parametros a pasar). Es considerablemente lento, ya que aparte del tamaño de la llamada esta requiere una gran cantidad de flujo de informacion. La manera normal de usarlo seria, el cliente pide el xml de definicion, el servidor lo sirve, el cliente lo procesa y crea una llamada de acuerdo a esta definicion, el servidor recibe esta llamada y devuelve la respuesta al la llamada.

La manera normal de usarlo seria (ejemplo de wikipedia):

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
     <getProductDetails xmlns="http://warehouse.example.com/ws">
       <productId>827635</productId>
     </getProductDetails>
   </soap:Body>
</soap:Envelope>

Esta peticion devolveria los datos del producto con ese identificador.

Desde PHP 5 soap tiene soporte nativo, lo que lo hace muy facil de usar para crear nuestra propia API o consumir servicios web de otra pagina, en otro post explicare una manera facil de hacerlo.

- REST: al igual que SOAP es un protocolo para el intercambio de informacion entre ordenadores, pero solo puede usarse con el protocolo HTTP, que por otro lado es el que nos interesa. No tiene restricciones en cuanto a encapsulamiento de datos, podemos enviarlos y recibirlos de la manera que queramos JSON, XML, HTML, CSV... y utiliza los metodos propios de HTML, los comunmente conocidos y que manejan nuestros navegadores: GET y POST, y los menos conocidos pero igualmente utiles PUT y DELETE. Es un protocolo muchisimo mas rapido que SOAP, ya que realmente SOAP es un REST con un monton de restricciones, de formato, de envio, de encapsulamiento...

La manera normal de usarlo seria:

- POST -> http://www.ejemplo.com/mensaje/nuevo (el metodo nos indica la accion a realizar, INSERTAR un nuevo dato y la url nos indicaria el que, un nuevo mensaje, los parametros que se envian con la peticion, nos dan los datos a insertar, titulo=nuevo titulo&mensaje=hola mundo)

- PUT -> http://www.ejemplo.com/mensaje/5 (el metodo nos indica la accion a realizar, MODIFICAR y la url el que, el mensaje 5, los parametros que se envian con la peticion, nos dan los datos a modificar, titulo=nuevo titulo 2&mensaje=adios mundo)

- GET -> http://www.ejemplo.com/mensaje/8 (el metodo nos indica la accion a realizar, MOSTRAR y la url el que, el mensaje 8)

- DELETE -> http://www.ejemplo.com/mensaje/13/comentario/2 (el metodo nos indica la accion a realizar, BORRAR y la url el que, el comentario 2 del mensaje 13)

 PHP no tiene una libreria especifica para el manejo de peticiones REST, dado que no tendria sentido, ya que REST esta basado en el mismo protocolo que la web, por lo tanto no se puede distinguir a priori entre peticiones al web service y peticiones normales de web.

 

Tags: php, api, webservice, Categorías: PHP, programacion, Comentarios: 0, Lecturas: 118

creando un api en php: paso 1

Por mameyugo el 19.Jan.2010 facebook_16 twitter_16 delicious_16

crear un api en php, en principio es facil, no deja de ser peticiones y respuestas, un cliente api, te envia una peticion en un formato, y tu servidor de api tiene que responderle de manera adecuada.

cliente: dameUltimosProductos

servidor:

<ultimosProductos>

<producto>12</producto>

<producto>11</producto>

<producto>10</producto>

</ultimosProductos>

no existe mucha documentacion al respecto, pero lo que si es seguro es que necesitas una herramienta para realizar las primeras pruevas, pues la herramienta podria ser este addon para firefox: addons.mozilla.org/en-US/firefox/addon/2691

 

Tags: api, webservice, addon, Categorías: PHP, programacion, Comentarios: 0, Lecturas: 104

eclipse indentar correctamente todo el archivo

Por mameyugo el 22.Dec.2009 facebook_16 twitter_16 delicious_16

puedes pasarte tranquilamente 5 min indentando correctamente un archivo, hasta que queda a tu gusto, (malditos editores chungos). Pues bien, si trabajas con eclipse acabas de perder 5 minutos, simplemente pulsa:

 Ctrl + Shift + F

ya has terminado!

Tags: php, Categorías: programacion, Comentarios: 1, Lecturas: 117

eclipse: agregar soporte a php a cualquier proyecto

Por mameyugo el 10.Nov.2009 facebook_16 twitter_16 delicious_16

cuando creas un nuevo proyecto con eclipse, en mi caso el caso es un nuevo proyecto Mercurial, si no creas el proyecto especificamente con soporte php, no se lo puedes agregar mas tarde, al menos en modo grafico.

existe solucion al problema, entra en la carpeta en la que has creado el proyecto y busca el archivo oculto proyect, en Linux ( .proyect), editalo:

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
        <name>stocks</name>
        <comment>
                Cloned from default ([protocolo]://[tu_ruta]/)
        </comment>
        <projects></projects>
        <buildSpec></buildSpec>
        <natures></natures>
</projectDescription>

y cambialo por:

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
        <name>stocks</name>
        <comment>
                Cloned from default (
[protocolo]://[tu_ruta]/)
        </comment>
        <projects></projects>
        <buildSpec>
                <buildCommand>
                        <name>org.eclipse.php.core.PhpIncrementalProjectBuilder</name>
                        <arguments>
                        </arguments>
                </buildCommand>
                <buildCommand>
                        <name>org.eclipse.php.core.ValidationManagerWrapper</name>
                        <arguments>
                        </arguments>
                </buildCommand>
        </buildSpec>
        <natures>
                <nature>org.eclipse.php.core.PHPNature</nature>
        </natures>
</projectDescription>

despues crea un nuevo proyecto php y copia los archivos que tendra tu proyecto en la carpeta oculta .settings, a la carpeta .settings de tu proyecto.

Cierra eclipse, y vuelve a abrirlo, tendras un proyecto mercurial con soporte php.

Tags: Categorías: PHP, programacion, Comentarios: 1, Lecturas: 115

expresiones regulares con mysql

Por mameyugo el 04.Nov.2009 facebook_16 twitter_16 delicious_16

Existe la posibilidad de hacer busquedas en mysql a traves de expresiones regulares, para ello utilizaremos REGEXP.
esta seria la sintaxis:

SELECT * FROM tabla WHERE (SELECT campo REGEXP '^[a-f.]{7,9}' )=1

Esta query nos devuelve el resultado de todos los resgistros en los que campo contenga en su inicio entre 7 y 9 letras de de las comprendidas entre la a y la f.

Pero hay que tener mucho cuidado al hacer

Tags: mysql, Categorías: programacion, Comentarios: 0, Lecturas: 62

lo que te pierdes mientras pestañeas

Por mameyugo el 01.Nov.2009 facebook_16 twitter_16 delicious_16

Imaginate mirando por la ventana, llueve, pasan 2 coches por delante de tu casa en direcciones opuestas, pestañeas, un estruendo!, 1 segundo despues, tus ojos vuelven a enfocar, los dos coches estan parados, los dos abollados, no es un gran golpe.

que ha pasado durante ese segundo?

Pues para nosotros en un primer vistazo, la respuesta es clara, dos coches han chocado enfrente de tu casa, supongo que a causa de la lluvia.

Pero realmente han sucedido un monton de cosas, una de las mas impresionantes

Tags: Ciencia, Categorías: Curiosidades, Comentarios: 1, Lecturas: 65

Mysql: LIKE con campos integer

Por mameyugo el 27.Oct.2009 facebook_16 twitter_16 delicious_16

acabamos de probarlo, simplemente increible, no es nada del otro mundo, pero..

resulta que se puede hacer un like en mysql de un campo integer

la query:

SELECT * FROM tabla WHERE id LIKE '3%'

devuelve todos los resultados cuyo identificador de campo empiece por 3.

Tags: mysql, Categorías: PHP, Comentarios: 0, Lecturas: 105

There is an instance of aMule already running

Por mameyugo el 17.Oct.2009 facebook_16 twitter_16 delicious_16

ya llevaba unos dias que no me funcionaba el amule, clicaba y no funcionaba, pero no le di importancia (has probado a reiniciar?), pero hoy me ha vuelto a pasar, y al ejecutarlo en consola me devolvia el siguiente error:

xxxxxxx@xxxxxxxx-desktop:~$ /usr/bin/amule
Initialising aMule
Checking if there is an instance already running...
There is an instance of aMule already running
Raising current running instance.

?????????

como?

no puede ser, o eso creo, por si acaso mato el proceso del amule:

xxxxxxx@xxxxxxxx-desktop:~$ killall amule
amule: no process killed

y por supuesto buscar en google la solución, y la encontré:

Tags: Categorías: Curiosidades, Comentarios: 0, Lecturas: 77

como borrar de una pizarra veleda rotulador permanente

Por mameyugo el 15.Oct.2009 facebook_16 twitter_16 delicious_16

Escribir en una pizarra veleda con un rotulador permanente, y luego intentar borrarlo es una ardua tarea, y adema es una situacion que puede sucederte en algun momento de tu vida, en la veleda de la nevera o en la del techo del baño.

pero existe una solucion sencilla y este comico video de 20 segundos nos lo demuestra.

Tags: Ciencia, Categorías: Curiosidades, Comentarios: 5, Lecturas: 145

almacenar imagenes en mysql

Por mameyugo el 07.Aug.2009 facebook_16 twitter_16 delicious_16

como almacenar imagenes en una base de datos, es una pregunta que me hizo el amigo nico hace unos dias, y respondo en forma de post, si, es posible, y depende la situacion puede ser ventajoso (desde luego, no desde el punto de vista del rendimiento).
realmente el proceso es bien sencillo, abrimos el archivo almacenandolo en una variable, que contiene datos indescifrables (puedes probar a abrir una imagen con un editor de textos), a continuacion cambiamos la codificacion de esta variable a

Tags: gd, mysql, Categorías: PHP, programacion, Comentarios: 0, Lecturas: 127