Google Static Map API
No creo que quede mucha gente que use Internet que no conozca GoogleMaps, pero hoy he descubierto un elemento relacionado que no conocía y que me parece bastante práctico en según que ocasiones. Resulta que para “capturas” o “pantallazos” de una zona de un mapa, no es necesario hacer una captura para obtener la imagen, sino que en Google Maps ya han pensando en ello y han creado la Google Static Map API.

Además por si fuera poco, han preparado un asistente para poder configurar de una manera mucho más sencilla nuestra captura de una zona del mapa, pudiendo incluir incluso un trazo sobre el mismo.
Una bonita manera de emplear una “captura” de Google Maps sin sacar nuestra propia copia, con la seguridad legal que eso nos da.
Asistente Google Static Map API
Documentación API
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 ![]()
publicar libros online
No hace mucho, cuando me convencí a mi mismo de que Mobile Web Design de Cameron Moll era un gran libro para adquirir, di con Lulú, un curioso serivicio en la web que me pareció una gran idea.
Básicamente permite a cualquier persona publicar un libro en unas condiciones decentes (no digo que excelentes, pero si decentes) sin requerir de una editorial o una inversión inicial, y además elegir unos cuantos elementos del mismo como:
- Varios aspectos del formato
- Tipo de tapa
- Color o Blanco&Negro
Además cuenta con elementos interesantes como una calculadora de coste (por ejemplo, un libro de tapa blanda, grapado, tamaño A5 en blanco y negro de 64 páginas valdría.... 4,67€!!! A partir de ese coste, que es el mínimo, tu fijas tu propio precio para comercializarlo, y por tanto tu margen de beneficio. Desde luego con este sistema quien no escribe un libro es porque no quiere.

Pues bien todo esto para comentaros que vía Andrés Karp, el otro día he encontrado otro sitio totalmente similar, llamado Bubok, que tiene sede en España, que permite elegir tu PDF, formato, elegir diseño de portada, tapas y por supuesto precio de venta (tanto el libro como el ebook).
La razón de postearlo es que Andrés ha comentado el excelente servicio postventa del que hacen gala, y que hoy en día creo que es necesario destacar cosas como esas. Mi más sincera enhorabuena a Angel María, y para entederme, solo hay que leer el post citado anteriormente.
Como siempre digo, si alguno conoce algún servicio similar, del que crea que es merecedor hablar por razones positivas, que no dude en comentarlo!
Firefox 3 ya está disponible!

Pues ya podemos descargarnos Firefox 3, no para batir ningún record de descargas, sino para ver qué nos espera de esta nueva versión de tan fantástico navegador. En la web se promocionan con más de 15.000 mejoras (lo cual puede ser bueno o malo según como se mire... XD) pero yo me quedo con estas que he podido leer:
- Mejoras de seguridad: anti-pishing, anti-malware, gestor de contraseñas...
- Optimización de velocidad de carga y de uso de memoria (por comprobar a fondo)
- Barra de direcciones inteligente
- Mejoras en el gestor de descargas, con posibilidad de pausarlas (aunque había extensiones que ya estaban disponibles con funcionalidades similares)
- Mejoras en las funcionalidades de marcadores y carpetas inteligentes (esto tengo que probarlo, porque mis marcadores son una selva... XD)
De mano me lo instalo en el portatil, si veo que la cosa va bien, haré lo propio en la oficina! Todos los comentarios sobre cosas destacables o fallas del navegador como ésta que nos indicó Zárate en sus comentarios, son bienvenidas ![]()
Nuestra ración de infierno: Flash 9 standalone y getURL
Como ya hemos dicho en ocasiones, el nombre del blog tiene un por qué. No es otro que las bonitas jugarretas a las que te encuentras cuando trabajas con nuestros queridos amigos los ordenadores, y más concretamente en este caso con flash.
Hoy por la mañana, he tenido el privilegio de experimentar una experiencia enriquecedora, que me ha hecho ver bonitas luces de colores, y quiero compartirla con vosotros.
La cosa es que estabamos desarrollando un CD con Flash CS3, y se dió (cosa realmente extraña) el caso de necesitar abrir un PDF incluido en dicho CD. Para evitar tirar de fscommand, y tener que preparar un exe por cada archivo, decidimos usar getURL.
La cosa no funciobaba. Yo me acordaba de los amigos de Adobe, que cada versión de player que sacan, se dedican a hurgar en las restricciones de seguridad y la comunicación de los standalone con el resto de la humanidad. No tocaaaaaaarrrr, no tocaaaarrrr. Dejarlo ya por Dios!
La cosa es que por alguna razón que se escapaba a mi alcance, no me permitía abrir un PDF con getURL desde la aplicación. Abría el navegador (en este momento firefox), pero no cargaba nada en su interior. Visto el tema, y tras probar mil combinaciones de rutas, posibilidades, etc, me encomiendo a google (recomendable siempre), y cual es mi sorpresa al econtrarme multitud de post sobre la cantidad de problemas que ha traido consigo el player 9 con respecto a fscommand y getURL. Y encima, son problemas realmente curiosos.
Que si pongo 2 fscommand en el mismo fotograma seguidos, uno deja de funcionar!!! que si pongo 2 getURL seguidos solo me lanza el segundo.... que si en firefox no abre, pero en IE si!! ¿pero qué es esto?.
Por lo que se ve el player 9 ve diferencias entre esto:
-
fscommand("fullScreen", "TRUE");
y esto
-
fscommand("fullScreen","true");
El caso nuestro era el tema de firefox, por lo que se vé, existe un bug a medias de firefox que hace que nuestra ruta relativa sea parseada a una ruta absoluta y en ese proceso se añade algun caracter indeseado (el famoso caracter de pipe "|"), quedando algo similar a esto en la traducción de la llamada:
firefox -url "file:///c|doc\documento.pdf"
Solución: Yo quiero a Paul Robertson, que además da una fantástica explicación del problema soluciones en AS2, AS3 y enlaces a otros problemas relacionados. Pedazzo de entrada de blog.
Principalmente pasa por emplear este código para que la llamada se produzca con la ruta completa, y así firefox no haga de las suyas. A todo esto, en IE funciona correctamente.
-
var swfUrl:String = _root._url;
-
var lastSlashIndex:Number = swfUrl.lastIndexOf("/");
-
var pipeIndex:Number = swfUrl.indexOf("|");
-
var baseUrl:String;
-
if (pipeIndex>= 0)
-
{
-
baseUrl = swfUrl.substring(0, pipeIndex);
-
baseUrl += ":";
-
}
-
else
-
{
-
baseUrl = "";
-
}
-
baseUrl += swfUrl.substring(pipeIndex + 1, lastSlashIndex + 1);
-
-
myButton.onRelease = function()
-
{
-
var targetUrl:String = baseUrl + "doc/documento.pdf";
-
getURL(targetUrl, "_blank");
-
};
Pero como no me fio de mi memoria, me pongo también este otro enlace y este otro más, donde la gente de northcode hace un gran aporte a las futuras roturas de pelotas de los flasheros.
Yo ante estas cosas siempre me pregunto quien ha sido el "bravido" (no existe ooooh, que bonito palabro se ha perdido...) que ha dado con la solución...
Firefox 3: Download Day

Interesante iniciativa la que se ha creado desde el entorno de desarrollo de firefox para extender este magnífico navegador. Con la excusa de batir el record guiness de descargas de un software en 24 horas, te piden que te suscribas para recibir el aviso de cuando podrás descargarte la nueva versión del popular navegador.
Lo mejor de todo sin duda será que más gente conozca que existe un mundo más allá de Internet Explorer y que además es un mundo normalmente más bonito que lo que suele haber tras microsoft. Lamentablemente los desarrolladores tendremos que seguir velando por la compatibilidad, porque nuestros clientes así lo merecen, pero eso no quita que en un futuro las decisiones se decanten por el lado más coherente ![]()
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!!!
De PNGs transparentes, navegadores y onLoads va la cosa
En el estudio he tenido que emplear PNGs transparentes, que como sabeís (y sino, deberíais) no son soportados por versiones de Internet Explorer 6 o anteriores, sino que vienen soportadas desde la versión 7 de nuestro amigo IE.
Hasta aqui no hay gran problema, porque empleando un pngfix de javascript se arregla el entuerto (bonito palabro).
-
/*
-
Correctly handle PNG transparency in Win IE 5.5 & 6.
-
http://homepage.ntlworld.com/bobosola. Updated 18-Jan-2006.
-
Use in <HEAD> with DEFER keyword wrapped in conditional comments:
-
<!--[if lt IE 7]>
-
<script defer type="text/javascript" src="pngfix.js"></script>
-
<![endif]-->
-
*/
-
-
var arVersion = navigator.appVersion.split("MSIE")
-
var version = parseFloat(arVersion[1])
-
-
if ((version>= 5.5) && (document.body.filters))
-
{
-
for(var i=0; i<document.images.length; i++)
-
{
-
var img = document.images[i]
-
var imgName = img.src.toUpperCase()
-
if (imgName.substring(imgName.length-3, imgName.length) == "PNG")
-
{
-
var imgID = (img.id) ? "id='" + img.id + "' " : ""
-
var imgClass = (img.className) ? "class='" + img.className + "' " : ""
-
var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' "
-
var imgStyle = "display:inline-block;" + img.style.cssText
-
if (img.align == "left") imgStyle = "float:left;" + imgStyle
-
if (img.align == "right") imgStyle = "float:right;" + imgStyle
-
if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle
-
var strNewHTML = "<span " + imgID + imgClass + imgTitle
-
+ " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"
-
+ "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
-
+ "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>"
-
img.outerHTML = strNewHTML
-
i = i-1
-
}
-
}
-
}
El tema se complicó (no iba a ser todo tan sencillo...) cuando además metía un evento onLoad para el body con la intención de lanzar una función javascript, y paso a describir el caso porque puede ser de ayuda para quien se encuentre en la situación:
LO QUE QUEREMOS LOGRAR
Tenemos una imagen de fondo de un cierto peso en KB (ya que no es una trama, sino una imagen plena de faculades), y sobre esa imagen han de colocarse unos botones que a su vez son imágenes, y que para que quede medianamente bonito han de ser transparentes.
PRIMER PROBLEMA
El primer problema es que la imagen de fondo que se crea por CSS, pesa lo suficiente como para que se dé durante unos segundos la situación de aparecer los botones sin el fondo que les da "sentido", un efecto poco deseable.
SOLUCIÓN PRIMER PROBLEMA
Para solucionarlo buscamos si existía algun método mediante CSS o XHTML para forzar la carga de los elementos de la hoja de estilos antes que se renderizara el HTML, pero..... no lo hemos encontrado. Si algún alma caritativa sabe cómo lograrlo mediante CSS (o de una manera más limpia que la que hemos empleado nosotros) que no dude en contárnosla.
Jorge tuvo la feliz idea de poner la misma imagen con propiedad display:none en el comienzo del body, con lo que la imagen se carga como HTML impidiendo así que se muestre lo que va a continuacion hasta que se completa dicha carga, y luego el CSS no tarda nada de tiempo en cargarla porque está en caché. Mientras esto ocurre, el div con los botones transparentes, permanece oculto también con la propiedad display, para por javascript hacerlo visible en el onLoad de la página.
SEGUNDO PROBLEMA
Cuando ya estábamos pegando saltos de alegría con el trabajo terminado, vemos que nuestro querido IE 6 no muestra los botones, no así en IE 7 o en firefox....
SOLUCIÓN SEGUNDO PROBLEMA
El problema es debido a la mala compatibilidad del pngfix con métodos invocados en el onLoad. La solución pasa por usar una variante del pngfix (que ha salido a la luz porque también da problemas con el swfobject) y que permite mezclar estas dos necesiades: pngfix y onLoad. Lo que hicimos es "googlear" y emplear el citado pngfix adaptado además de colocar la llamada al mismo DESPUÉS (y ojo que esto es necesario para que se dispare el evento onLoad) de la etiqueta de apertura de BODY. Cuando decimos la llamada nos referimos a esto:
-
<!–[if lt IE 7]>
-
<script defer type=”text/javascript” src=”pngfix.js”></script>
-
<![endif]–>
El resultado lo podéis ver aquí, por cierto, la web está recien salida del horno... diseño por takeone dsgn y programación flash y adaptación del blog por [Q].
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