API para acceder a Twitter en PHP

Para un proyecto que estoy desarrollando para el móvil con nuestro amigo Raúl Jimenes, nos ha tocado lidiar con Twitter desde PHP .Evidentemente estaba claro que tendrían que existir librerias de código que ya tengan los métodos preparados, pero me he llevado una sorpresa muy agradable al trastear con esta Open Source: PHP Twitter API Client de lab.arc90.com.
La librearía emplea curl de PHP para las comunicaciones con servidores externos, protocolos etc, en la instalación base de WAMP (usamos WampServer) no viene activada, pero si que es una dll que está disponible y que podemos poner a funcionar perfectamente o bien desde el php.ini o bien si usamos una versión reciente de WAMPServer, desde las opciones del menú desplegable de esta aplicación.
Una vez que tenemos curl funcionando en nuestro servidor local, hacer consultas es algo tan sencillo como esto:
-
<?php
-
require_once('Arc90/Service/Twitter.php');
-
-
// usuario y contraseña son los valores del login para Twitter con los que queremos trabajar
-
$test = new new Arc90_Service_Twitter('usuario', 'contraseña');
-
-
try
-
{
-
// Pedimos la lista de amigos en formato JSON
-
$response = $test ->getFriends();
-
// Podríamos pedirla en formato XML
-
// $response = $test ->getFriendsTimeline('xml');
-
-
// Sacamos por pantalla el string del JSON recibido
-
-
// Podemos detectar un error en la respuesta desde twitter (401, 503, etc) y por tanto
-
// gestionarlo desde PHP
-
if($response->isError())
-
{
-
}
-
}
-
catch(Arc90_Service_Twitter_Exception $e)
-
{
-
// Sacamos el mensaje de la excepción (parametro no válido, etc)
-
}
-
?>
Además he probado a emplear json_decode que es el método que viene preinstalado con PHP para el manejo de JSON, y funciona perfectamente el parseo de String a array de objetos, ya que la respuesta parece cumplir a rajatabla los estándares impuestos para JSON.
También he probado la llamada pidiendo los datos en formato XML, y el XML que devuelve es bastante limpio, aunque no he visto que se pueda filtrar la cantidad de campos a obtener en la respuesta, cosa que si creo que podría ser útil.
La gente de arc90 se lo han currado (parece que concretamente Matt Williams) con una clase muy bien documentada, con unos métodos clarísimos y muy sencilla de usar.
Espero en no mucho tiempo pode postear aquí el motivo del uso de esta combinación para el proyecto que tenemos entre manos desde BlocketPC.
Recursos para el desarrollo con wordpress
Últimamente nos está tocando lidiar bastante con blogs en los proyectos del estudio, y si bien algunos temas, o el tema por defecto acabas teníendolo claro, para los que no nos hemos dedicado a indagar en las entrañas de un wordpress, en ocasiones cuesta sacar información o módulos que ves en otros blogs.

Con estos enlaces seguro que tenemos la vida un poco más fácil para conocer las bases de un wordpress y por donde hay que tirar para según que cosas.
The Wordpress Help Sheet
The Wordpress Help Sheet en Castellano
The Advanced Wordpress Help Sheet
Cabe destacar que los originales de estas hojas han sido sacados de liquidicity, que me acaba de obligar a reservar parte de mi tiempo a mirarlo en pronfundidad poque tiene pinta de ser un enlace más que interesante ![]()
SQL_BIG_SELECTS
Hace un tiempo desarrollamos una tienda online.
El caso es que hasta ahora había estado funcionando sin ningún problema ni error. Pero ayer nos llega un email del cliente dicièndonos que la tienda ha dejado de funcionar.
Sorprendidos accedemos a la tienda, y efectivamente cuando seleccionabas una categoría la web mostraba un error. El mensaje de error que salía en la página decía lo siguiente:
The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if the SELECT is okay
Cargo la base de datos en local y como en otras muchas ocasiones, funciona.
¡Pues nada, será alguna opción de configuración del servidor!, tras investigar por el maravilloso mundo de internet (con google a la cabeza por supuesto) y darle un poco a la cabeza encontramos la solución.
El problema viene porque la tienda ya tiene un volumen considerable de artículos (unos 2660) y de categorías, y en una de las consultas se hacen bastantes relaciones entre ellas.
Ese error es debido a la variable de MySQL SQL_BIG_SELECTS.
SQL_BIG_SELECTS
Con valor 0, MySQL aborta los comandos SELECT que probablemente tardarán mucho tiempo (esto es, comandos para los que el optimizador estima que el número de registros examinados excede el valor de max_join_size). Esto es útil cuando un comando WHERE no aconsejable se ejecuta. El valor por defecto para una nueva conexión es 1, que permite todos los comandos SELECT .Si cambia la variable de sistema max_join_size a un valor distinto a DEFAULT, SQL_BIG_SELECTS se pone a 0.
Para solucionar el error basta con ejecutar la consulta SET SQL_BIG_SELECTS=1 antes de ejecutar la consulta original problemática y listo!
El problema de todo radica en que cuando se desarrolla un sitio el testeo que se hace suele ser con un volumen pequeño de información, y que que cuando realmente el proyecto lleva un tiempo y ya tiene mucha información pueden surgir este tipo de problemillas.
Talleres de Verano Subflash 2008
Llega el veranito, y por estas fechas si hay algo que no puede faltar... no son las chicas morenas, el sol y la ropa de verano... o las terrazas para tomarse un refresquito.... sino los talleres de verano subflash!!

Visitando el foro de subflash me entero (por decir algo... XD) de que ya están en marcha, y que este año se van a realizar en Alicante!
Desde aquí agradezco personalmente la ayuda que nos ha prestado en esta ocasión Elad de Nitsnets, con todo lo que es la reserva del lugar e instalaciones necesarias para llevar a cabo un evento como este. Mil gracias Elad (y también a Andrés Karp, Andrés Cayón, Ramón Masip y mis queridos Jorge y Alberto, que siempre logran que tenga tiempo para dedicarme a esto a base de apurar un poco más su trabajo diario).

El evento tendrá lugar los días 29, 30 y 31 de Agosto de 2008, en la Villa Universitaria de San Vicente del Raspeig, Alicante, y por un precio que ronda los 100€, podremos disfrutar de 3 días inolvidables. Las instalaciones, este año prometen ser de lujo, y tambien las ponencias, que abarcarán más temas de los habituales y variados, como diseño, programación flash, posicionamiento en buscadores...
Aquí podéis ver todos los detalles del evento, plazas, precio, modalidades, direcciones, etc.
Aun no se ha terminado de desarrollar el microsite para este año, pero estad atentos, porque seguro que se pone en marcha en muy poco tiempo

Para los que no sepáis que son los talleres, aquí os dejo unos links a años anteriores, y también podéis ver videos en youtube, o fotos en flickr.
Yo me apunto desde ya!!!
Cheat Sheets: hazme la vida más sencilla…

Como todos los que me conocen saben, soy un gran defensor de la literatura técnica como medio de aprendizaje. Siempre que se pueda adquirir un buen libro, creo que es una buena inversión, porque muchas veces se encuentran en ellos cosas a las que en un futuro te puedes enfrentar, o lo que es mejor, cosas que no te esperabas aprender, visiones sobre determinados temas que enriquecen y complementan la propia, o incluso soluciones a planteamientos que no sabías hasta entonces abordar.
Con ésto no quiero decir que todos los libros son buenos ("malos, haberlos haylos") , pero sin duda si te tomas la molestia de hacer un análisis de lo que vas a comprar antes de adquirirlo y de ver la opinión que otros han dejado sobre él, las probabilidades de éxito son muy altas.
Pocos libros he leído últimamente que no me hayan aportado nuevas perlas (principalmente porque al que anda escaso, todo es nuevo...) sobre pequeños detalles y que en su mayoría no estaban directamente relacionados con la temática principal del libro. A veces a la vuelta de la esquina de un párrafo denso y tedioso, te encuentras una nota entre paréntesis, o una explicación adicional que te descubre algo en lo que nunca te habías fijado o no conocías su existencia.
Pero sin duda, un libro, por muy buena encuadernación y estructuración que tenga, no es la mejor herramienta a la hora de salir de dudas sobre un propiedad o la sintaxis de un método, un atajo de teclado o un repaso a las posibilidades que tienes frente a un efecto en javascript con jQuery. Para ello creo que de un tiempo a esta parte han ido apareciendo unos de los mejores aliados de los desarrolladores cuando se enfrentan a algo nuevo u olvidado en el pasado... las cheatsheets (si, si hojas para hacer trampas... y que!?). Sirva esta colección de ellas como prueba:
ILoveJackDaniels
Impresionante recurso para obtener cheatsheets de calidad: HTML, SQL Server, Expresiones Regulares, Microformatos, Ruby on Rails, ASP, Entidades HTML, Javascript, MySQL, Mod Rewrite, CSS, PHP...
ILoveJackDaniels Cheatsheets
Pete Freitag
Otra referencia para tener en cuenta, una recopilación de 30 cheatsheets para desarrolladores.
Cheat Sheet Roundup
Smashing Magazine
Estos gañanes no podían faltar, como siempre sacando recursos a paladas, y de buenísima calidad. Me arrepiento todos los días del momento en que un listo me los presentó en mi navegador junto a netvibes...
Cheat Sheet Round-Up
Designers Cheat Sheets
También hay cheat sheets para el mundo del diseño, que no solo de código vive el hombre...
Designer color Charts, y photoshop cheat sheets vía Scott Klarr
Fuzzy Opinions
Excelente recopilación categorizada por áreas temáticas: Bases de Datos, programación, sistemas operativos, desarrollo web, miscelánea...
The developer cheat sheet compilation
What is.com
Este recurso ya abarca más que las convencionales para desarrollo o diseño web, aunque algunas interesantes, como la de atajos de photoshop para windows o mac
Our favorite cheet sheets
Google Cheat Sheets
Pues si, también hay para el buscador más famoso del pueblo..., vía feedsforme.
Google Cheat Sheets
Web Developer List: eConsultant
Y aqui ya vamos al por mayor, con una recopilación de 119 hojas.
Top 119 Cheat Sheets
No podía despedirme sin dejar una de nuestro querido ActionScript, otra de nuestro nuevo amigo jQuery y otra que me ha sorprendido especialmente, dedicada al mundo del SEO
Y como yo no soy el primero que se da cuenta que esto es un gran invento, podemos encontrar incluso un MEGA DIRECTORIO, con dominio propio: cheat-sheets.org
Historia del UTF-8
Cuantas veces nos hemos dado de tortas con el tema de la codificación de las páginas.
Al final nos quedamos con las dos cosas básicas que hay que hacer:
- Poner la codificación de los carácteres que vamos a emplear en el parámetro "charset" de todos los metas de las páginas.
- Guardar las páginas con esa misma codificación (que la página tenga la codificación en el "charset" puesta no implica que esté guardada en ese mismo formato).
Aquí os dejo un link a un artículo muy interesante acerca del nacimiento del "UTF-8" para todos aquellos que a veces se pregunten el por qué de poner esas palabrejas tan raras (UTF-8, iso-8859-1 ...)
Enlace al articulo sobre UTF-8 del blog de juque
El artículo lo encontre a través de la web Diseñorama.
Recursos en forma de tutorial
Sin duda la formación espcecializada es un buen aliado para adentrarse en el mundo de la web y el diseño, y sienta unas bases importantes para los siguientes pasos. No obstante nuestra experiencia (en la cual me incluyo por completo al ser un claro ejemplo de lo que voy a comentar) nos dice que en un mundo como el del diseño y la web, no basta nunca con lo que has aprendido, sino con lo que te queda por aprender.

No se si existirán muchas áreas de negocio donde estar al día en cuanto a técnicas, lenguajes, programas, etc. sea tan complicado como en nuestro mundo, pero lo que está claro es que esto es de locos. Y para solucionar en cierta medida la urgencia con la que se necesita aprender, sin duda los tutoriales son un recurso precioso, que combinado con una búsqueda en google un poco curiosa, hacen que podamos acceder a recursos como éste:
Problemas con comillas en cajas de texto
Cuantas veces nos hemos topado con el problema de las comillas en las cajas de texto. Es decir, creamos un registro que tiene comillas simples o dobles y cuando nos ponemos a modificarla... no sale bien.
El problema está en que el valor del input va entre comillas, y entonces las comillas del registro las interpreta como comillas de PHP. Para solucionarlo tenemos la función de PHP htmlentities y usaremos los siguientes valores para los parámetros opcionales que tiene esta función: ENT_QUOTES [Convertirá las comillas dobles y sencillas] y la codificación que tiene la página.
Ejemplo:
Filtrado para insertar el valor de una variable tomada de una base de datos para un input (mediante su atributo value) que se encuentra en una página con codificación "UTF-8". Es decir el siguiente código iría rodeado de comillas dobles en el input, dentro del atributo value.
htmlentities($registro['nombre'], ENT_QUOTES, "UTF-8")
Espero que os sirva. Es la típica tontería a la que nos enfrentamos muchas veces y nos lleva un tiempo encontrar como la habíamos solucionado.