Google Chrome, descargar el cómic en pdf

El nuevo navegador de Google está dando mucho que hablar en la blogosfera, casi todos los bloggers se han hecho eco de la novedad que se produjo ayer, tanto del cómic con el que fuimos abriendo boca, como la keynote y luego la descarga para Windows y su retraso para Linux y Mac. Yo ya lo he probado y está muy muy bien, sobre todo con el javascript, pero este post no va de eso ;).

El aporte más original yo creo que lo ha puesto Santiago Lizardo, al proporcionarnos un método para descarganos el cómic a ficheros jpg (sólo para *nix):

for i in `seq 1 38`; do wget http://www.google.com/googlebooks/chrome/images/$i.jpg; done

Bueno, yo le he dado una vuelta más y he juntado estas imágenes que he descargado usando el método de Santiago en un fichero pdf que creo que es más cómodo para leer offline.

convert `ls *.jpg | sort -g` google-chrome.pdf

Este método está probado para Ubuntu / Debian y requiere tener el paquete imagemagick instalado:

sudo apt-get install imagemagick

Para los que no tengáis o no queráis probar los pasos, os dejo un enlace para la descarga directa del cómic de google chrome en pdf que he creado con este método (7 Mb).

Número de páginas erróneo con pager_query y theme_pager y el uso de $count_query

Hoy me he encontrado con este problema, cuando intentas paginar una consulta que tiene una cláusula DISTINCT para eliminar duplicados (o un GROUP BY equivalente), el número de páginas resultantes en el theme_pager es incorrecto.

¿por qué pasa esto?

En realidad, lo que pasa es que el pager_query inicializa una serie de variables globales que utiliza el theme_pager, entre ellas, el total de elementos y el número de páginas totales. Estas variables globales se ven alteradas al realizar la consulta que cuenta los registros devueltos, ya que filtra el DISTINCT.

por ejemplo

Vamos a intentar sacar paginados todos los términos de taxonomía utilizados en la web, para ello unimos las tablas term_node, que tiene los términos usados en cada nodo y term_data, que contiene información de cada término, por ejemplo, su nombre.

<?php
$sql = "SELECT DISTINCT td.name AS term_name, t.tid
            FROM term_node t
           JOIN term_data td ON t.tid = td.tid";
$result = pager_query($sql, 20);
while ($data = db_fetch_object($result)) {
  echo l($data->term_name,"taxonomy/term/".$data->tid) . "<br/>";
}
print theme('pager');
?>

Aquí podéis ver el resultado, las primeras páginas sacan los términos correctamente, pero hay más páginas de las que debería y están vacías. Esto es porque al contar, ha eliminado el DISTINCT y muestra todas las categorías por cada nodo, sin eliminar los duplicados.

¿cómo se resuelve

Hay que utilizar el cuarto parámetro del pager_query, $count_query, y pasarle una consulta que devuelva el número de registros diferentes que devuelve la consulta con el DISTINCT.

el ejemplo solucionado

$sql = "SELECT DISTINCT td.name AS term_name, t.tid
FROM term_node t

Metro, el P2P y Pier to Pier

Curiosa interpretación del diario Metro sobre lo que significan las siglas P2P. Al parecer, los franceses tienen la clave, en concreto, dos señores llamados Pier...

La versión online no está corregida tampoco.

Comparación de reproductores DivX con WiFi

Mi reproductor de DivX del salón de la super conocida y reputada marca Scott está empezando a quedarse pequeño y algunos de los ficheros van a trompicones y los subtítulos no funcionan muy bien.
Es por esto que estoy buscando un disco duro multimedia que reproduzca DivX y pueda conectarse por WiFi al PC y reproducir tanto desde el disco interno como por WiFi. He contemplado varios modelos y os hago un resumen de las caracterísiticas principales.

Nota: Todos estos reproductores tienen caracerísticas básicas:

  • Tienen Wi-Fi o la posibilidad de un adaptador
  • Reproducen DivX
  • Aceptan subtítulos
  • Soportan la conexión de un disco duro

Siete días en Lisboa, día cinco: Monasterio de los Jerónimos, Torre de Belem, pasteles de Belem y cine

El quinto día estaba planificado para una de las zonas imprescindibles de Lisboa: Belem.

Es una zona que está un tanto apartada del centro, y requiere transporte para llegar. En nuestro caso, ya estábamos enamorados de los tranvías y el número 15 te lleva de Cais do Sodré hasta Belem y el Monasterio. Antes de contaros cosas sobre Belem, voy a hacer un pequeño apunte sobre la estación de Cais do Sodré, ya habíamos estado al cruzar el Tajo en el Transtejo, ya que esta estación es un intercambiador de trenes, ferry y también la línea verde de metro. Casi todas las estaciones del metro de Lisboa tienen algún motivo plasmado en sus paredes, la de Cais do Sodré es muy curiosa ya que tiene una representación del conejo de Alicia en el País de las Maravillas, de Lewis Carroll, a cargo del pintor surrealista portugués Antonio Dacosta. Debajo de los conejos, que están pintados sobre baldosa (hay muchísimos motivos en toda la ciudad utilizando este material, incluso en el cementerio), está escrita la frase "Estoy atrasad" , sin la última o. El sentido de la frase y el conejo indica al viajero la dirección en la que debe ir.

 

Para llegar a Belem tomamos el tranvía número 15 desde Cais do Sodré, aunque hay también varios autobuses que llegan a la zona, pero lamentablemente, el metro no. Nuestra intención era visitar el Monasterio de los Jerónimos, la Torre de Belem y acercarnos al monumento a los descubridores, además de degustar los famosísimos pasteles de Belem.

MySql Game, un juego online para geeks de las bases de datos

MySql game es un juego que me ha recordado mucho a los viejos MUD con una mezcla de juegos modernos estilo trivian u ogame.

La gran diferencia es que está dedicado a geeks de las bases de datos, en lugar de fundar un poblado o un planeta, empiezas insertando un registro en una tabla. Desde este registro puedes atacar a los registros de tus malvados rivales, y también debes defender el tuyo. Para ello cuentas con unidades de ataque y de defensa, multiplicadores, combustible (porque moverte de un registro de una base de datos es costoso) o dinero para comprar todo lo anterior.

Lo mas curioso, lo que hace distinto al juego, es que todas las órdenes que le das, son sentencias SQL, por ejemplo, para comprar unidades de ataque:

UPDATE rows SET attackers = attackers+1 WHERE row_id = 882;

Cada 10 segundos se actualiza el estado de tu registro y ganas dinero y combustible, y con el dinero compras unidades, o más defensa. Y todos los eventos que pasan alrededor de tu registro y de los demás, se pueden ver en el log de querys, los ataques contra tu registro son sentencias UPDATE que te quitan dinero e unidades, y se visualizan en color rojo (en el WHERE del ataque puedes ver el registro ofensor, para devolversela más tarde). Los ataques que tú realizas se marcan en naranja y las actualizaciones en azul. ¡Hasta el chat funciona con sentencias SQL!

Está dentro del motor de aplicaciones de google, por lo que, con una cuenta de gmail puedes crear tu propio registro para dominar la tabla completa BWAHAHA

Siete días en Lisboa, día cuatro: Castillo de San Jorge, Casa do Alentejo y Benfica

El cuarto comenzó en el barrio de Alfama de Lisboa, fuimos a uno de las visitas imprescindibles de la ciudad: el Castillo de San Jorge (Castelo de São Jorge). El castillo preside la zona más antigüa de Lisboa y puede alcanzarse a pie, en el tranvía número 28, que recorre todo el barrio antigüo, o en el autobús 37, que deja a las puertas. Al ser uno de los lugares más turísticos, conviene ir pronto para evitar las colas, sobre todo a la hora de tomar el transporte para subir y comprar la entrada, que cuesta 5€, pero hacen descuento con carnet de estudiante (los carnets universitarios de España también sirven).

Aquí podéis ver la tabla de precios y descuentos, que, como es habitual, para los residentes en Lisboa es gratuita, por lo que es habitual que muchos lisboetas acudan al castillo con sus familias los fines de semana, para dar un agradable paseo. Se puede pasear por los recovecos del castillo, disfrutando de las estupendas vistas de la ciudad, y acceder a través de un puente al interior, donde se puede subir a las almenas y recorrer el interior del Castelejo. También se puede subir a la Torre de Ulises, que ofrece una vista de Lisboa, según marca el folleto, en 360º, pero cuando nosotros fuimos, no estaba abierta.

El castillo está mejor conservado que el Caselo dos Mouros, en Sintra y no tiene zonas peligrosas. A la salida hay varias artesanas que ofrecen grabados en carboncillo o joyas hechas por ellas mismas muy interesantes. La tienda del Castelo no merece la pena.

 

Siete días en Lisboa, día tres: Sintra y Cascais

Una de las visitas obligatorias al ir a Lisboa es el cercano pueblo de Sintra, antigüa residencia de la famila real portuguesa (Portugal es una república desde 1910), y patrimonio de la humanidad, según la UNESCO, desde 1995.

Siete días en Lisboa, día dos: jardim zoologico, cementerio dos prazeres y estrela

Una de las ventajas de la situación del hotel que escogimos (detalles en el día uno), es que está a dos pasos del Jardim Zoológico de Lisboa, una de las paradas marcadas como obligatorias en nuestro itinerario inicial. Si no estás alojado cerca, lo recomendable es coger el metro, línea azul y pararte en la parada Jardim Zoologico que está pegadita, claro. También puedes ir en alguno de los buses, o incluso en tren, si llegas de fuera de Lisboa, la estación Sete Ríos está junto al metro. Nos levantamos prontito para ir al zoo sin demasiadas colas, pero a las 10.15 ya habia bastante gente esperando, conviene llegar lo antes posible (abren a las 10), ya que una de las cosas que más merece la pena, el espectaculo con los delfines, golfinhos en portugués, empieza a las 11. Aunque realmente, a mi me gustaron más los leones marinos adiestrados que tienen como teloneros, son muy simpáticos e incluso los hacen pasar entre el público para que puedas tocarlos. El zoo cuesta 15€ por persona, pero en los hoteles podréis encontrar algunos cupones de descuento, eso sí, para periodos no estivales. Con la Lisboa Card hacen un 15% de descuento.

Nuevo diseño y cambio de hosting

Como podéis ver, estreno un diseño un poco más sobrio, poco a poco lo iré completando con algunos detalles que me faltan por pulir todavía.
¡Prometo cambiar el dibujo de cabecera en breve!

Páginas