jueves, abril 26, 2012

Revisando la condiciones de uso de Google

La polémica con las condiciones de uso de Google Drive tiene aún más miga de lo que parece. Resulta que cuando buscas las condiciones de uso del servicio te redirige a las genéricas de Google donde : 

Algunos de nuestros servicios te permiten enviar contenido. Si lo haces, seguirás siendo el titular de los derechos de propiedad intelectual que tengas sobre ese contenido. En pocas palabras, lo que te pertenece, tuyo es.

Al subir contenido o al enviarlo por otros medios a nuestros Servicios, concedes a Google (y a sus colaboradores) una licencia mundial para usar, alojar, almacenar, reproducir, modificar, crear obras derivadas (por ejemplo, las que resulten de la traducción, la adaptación u otros cambios que realicemos para que tu contenido se adapte mejor a nuestros Servicios), comunicar, publicar, ejecutar o mostrar públicamente y distribuir dicho contenido. *Google usará los derechos que le confiere esta licencia únicamente con el fin de proporcionar, promocionar y mejorar los Servicios y de desarrollar servicios nuevos. Esta licencia seguirá vigente incluso cuando dejes de usar nuestros Servicios (por ejemplo, en el caso de una ficha de empresa que hayas añadido a Google Maps). Algunos Servicios te permiten acceder al contenido que hayas proporcionado y eliminarlo. Además, en algunos de nuestros Servicios se incluyen condiciones o ajustes que limitan nuestro uso del contenido que se haya enviado a los mismos. Asegúrate de tener los derechos necesarios para concedernos esta licencia sobre cualquier contenido que envíes a nuestros Servicios.

Para obtener más información sobre cómo Google usa o almacena contenido, consulta la política de privacidad o las condiciones adicionales de cada Servicio. Google podrá usar los comentarios o las sugerencias que envíes en relación con nuestros Servicios sin ningún compromiso.

Dicho de otra forma, en todos los servicios de Google en los que puedas subir o transmitir contenido (así a ojo pienso en G+, Gmail y Picassa para empezar) das una autorización casi completa para que hagan casi lo que quieran salvo que las condiciones específicas del servicio digan otra cosa. ¡Y la autorización persiste aunque te des de baja en el servicio!

Cierto es que hay que reconocerles un par de cosas: 
  1. indican con bastante claridad cuál es la intención de la autorización 
  2. aclararan que en algunos servicios permiten retirar la información 
  3. en la autorización no figura la posible cesión de derechos a terceros, algo que sí que incluían las condiciones de uso de Facebook anteriormente.

En realidad es una extensión de lo que ya venían haciendo en el correo y las búsquedas. Usan tus datos para mejorar sus propios servicios. Algo que podríamos entender como un "pago" por parte del usuario a cambio de obtener un servicio gratuito. Y me refiero al pago porque si revisamos las condiciones de uso de los que pagan por Google Apps vemos que no son las mismas. Aquí sí que ambas partes conservan la propiedad intelectual de sus contenidos.

En cualquier caso y aunque estuviésemos "acostumbrados" entiendo que existe mucha polémica cuando resulta que ahora podremos subir variedad de ficheros a Google. Entendemos que Gmail nos muestre anuncios relacionados con nuestro mensaje pero ¿para que quiere tantos derechos sobre nuestro contenido digital? Los archivos que la gente puede subir a la nube pueden fácilmente estar vinculados a nuestra vida profesional o personal y no queremos que puedan tratarlos. En especial cuando alternativas como Dropbox no lo hacen (aunque también tuvieron su polémica al respecto) ¿estará dispuesto a modificar las condiciones ahora que muchos usuarios se han escandalizado?

jueves, febrero 16, 2012

Cómo hacer que Gmail sea tu cliente de correo por defecto en Chrome


Seguro que te ha pasado que cuando pinchas en una dirección de correo dentro de una página se intenta abrir el outlook o el mail de mac. Hay algunos plugins lo solucionan pero ahora hay una solución más limpia:


  1. Abres una pestaña de Gmail 
  2. Estando en ella, abres la consola de javascript (cmd-opt-j en Mac, ctrl-shift-j en windows o linux) y pulsas consola si no lo estás
  3. Pega el código sigiuiente en la consola y le das a enter: navigator.registerProtocolHandler("mailto","https://mail.google.com/mail/?extsrc=mailto&url=%s", "Gmail");
  4. Acepta la confirmación


Visto en http://updates.html5rocks.com/2012/02/Getting-Gmail-to-handle-all-mailto-links-with-registerProtocolHandler

miércoles, enero 04, 2012

Periódicos en el Kindle 4

...aunque la receta sirve para cualquier kindle.

Ahora que los reyes se han adelantado y me han traído un Kindle 4 he dado unas cuantas vueltas viendo que opciones ofrece interesantes. Tengo que reconocer que el aparato es bastante más versátil de lo que esperaba siendo uno de sus ventajas el navegador que tiene integrado. De buena calidad, es capaz de interpretar las páginas mucho mejor de lo que a priori podría parecer. 

Una de las  funciones útiles (a parte de las obvias de lector de libros) es la posibilidad de leer los diarios directamente desde el kindle sin tener que visitar las páginas de los periódicos. Para ello, he encontrado dos opciones bastante cómodas:
  • Suscripción diaria mediante http://readbeam.com: para recibir directamente en tu kindle las noticias diariamente. Basta con suscribirse al servicio (es gratuito aunque admite donaciones) configurar nuestra dirección @kindle.com y seleccionar los periódicos que debemos recibir, así como la periodicidad. Cada vez que conectes el kindle a tu wifi se sincronizará automáticamente con los últimos documentos recibidos. Edito: para tener una dirección @kindle.com tienes que tener tu kindle registrado en amazon.es o amazon.com, recuerda que debes autorizar la dirección out@redbeam.com desde la configuración de tu cuenta kindle para poder recibir documentos desde esa dirección.
  • Descarga sólo del día que queramos mediante http://www.kindleman.com/: aunque kindleman.com era una página abierta ahora no admiten nuevos registros. De todas formas se puede acceder a la versión para kindle de cada uno de los diarios mediante una URL. Por ejemplo, para descargar la edición de hoy de  El Pais podemos visitar http://www.kindleman.com/ebooks/el_pais.mobi. Si guardamos esta dirección en marcadores bastarán un par de clics para tener el periódico del día en nuestro Kindle.

jueves, diciembre 15, 2011

Recorrer recursivamente una estructura de carpetas ejecutando comandos (unix/linux)

En ocasiones debemos aplicar la misma operación a un número de archivos, por ejemplo renombrarlos, moverlos o aplicarles un comando. Hay varias formas de hacer esto dependiendo de lo compleja que sea la operación que debemos aplicar y los parámetros que necesite pero, en general, es fundamental conocer el comando find.

El caso más sencillo es recorrer la estructura de carpeta ejecutando un comando que no necesita más parámetros que el nombre del archivo (por ejemplo para borrarlo)
find carpeta_objetivo/ -type f -name *.jpg -exec rm {} \;
Recorrería la estructura de directorios recursivamente  borrando todos los archivos con extensión '.jpg'. No hace falta decir que find tiene muchas opciones para modificar esos criterios de búsqueda.

El inconveniente del comando anterior es que no permite operaciones algo más complejas donde harían falta algunos parametros más como, por ejemplo. renombrar el archivo. Deberíamos recurrir entonces a un pequeño programa en bash para ejecutar operaciones. La ventaja es que lo podemos hacer en una sola línea:
for file in $(find OM_Translation/ -type f -name '*.properties'); do native2ascii $file $file.escaped; done
Recorre recursivamente  la estructura de directorios buscando archivos con la extensión .properties y ejecuta sobre ellos el comando native2ascii (un programa para convertir los caracteres como acentos en código ascci estándar: "Cámara" se convierte en "C\u00e1mara") guardando la salida en un archivo con el mismo nombre + la extensión .escaped.

En bash hay muchos alias definidos para el nombre del archivo ($file), el directorio... por ejemplo para renombrar archivos añadiendo el prefijo "thumb" podríamos hacer:
for file in $(find . -name '*.JPG'); do mv $file $(dirname $file)/thumb_$(basename $file); done

lunes, diciembre 12, 2011

Copiar/duplicar una web con usuario y password en local con WGET

En ocasiones necesitamos crear una replica en local de una web. Bien porque va a dejar de estar activa, bien porque tenemos que usarla sin tener acceso a Internet. Una de las opciones podría ser guardar cada una de las páginas a mano, pero aparte de ser farragoso perdemos la capacidad de navegar entre páginas. Así que necesitamos una herramienta, que partiendo de una página, la recorra descargando todos los enlaces así como las páginas que dependan de ella. El comando wget, disponible en cualquier distribución de linux/unix y para el que existen versiones para windows, permite hacer eso mismo.

Duplicando una web
El comando más sencillo posible con wget para duplicar una página en nuestro ordenador es este:
$ wget -m -k http://www.example.com/
La opción -m (mirror) equivale a varias opciones pero esencialmente significa que recorra todos los enlaces dentro del dominio www.example.com y los descargue. La opción -k (convert links) transforma los enlaces (http) de la página para que apunten a los archivos locales y podamos navegar por la página sin acceder a Internet. Ojo, no convierte los enlaces hasta que no ha descargado todas las páginas.

Estableciendo límites y filtros
Rápidamente nos damos cuenta que hay que establecer unos límites o, en ocasiones, puede que estemos intentando descargar muchas más páginas de las que queremos. Poniendo el caso de un foro, en cada uno de los mensajes suele aparecer un enlace a "Responder", está claro que no interesa guardar cada una de las páginas "Responder" porque no aportan contenido y, sin embargo, multiplican el número de páginas a descargar.
Otro caso sería, que puede interesarnos descartar carpetas enteras del servidor, por ejemplo, imaginemos que dentro de www.example.com hay una carpeta www.example.com/help con un montón de archivos, enlaces e imágenes que no queremos guardar. Estaría bien filtrar todas los archivos que cuelguen de esa carpeta para reducir la cantidad de trabajo.
Una tercera razón para limitar los ficheros que se descargan de una página es que muchos servidores detectan como sospechosa la acción de descargar de forma rápida un montón de páginas, pudiendo bloquear el acceso desde nuestra dirección. Para evitarlo, además de limitar la cantidad de ficheros a descargar, es conveniente indicar un intervalo de espera entre cada solicitud de forma que no sobrecarguemos el servidor.
Bien modifiquemos el comando anterior con unos cuantos parámetros para añadir lo que acabamos de comentar.
$ wget -r -l 3 -nc -k -R "*reply*","*subscribe*" -X /help,/admin  -w 2 --random-wait http://www.example.com/
Describimos las nuevas opciones

  • -r -l 3 -nc: Vemos que hemos cambiado -m por este grupo de opciones, -r significa que debe recorrer las páginas recursivamente descargándolas todas, -l 3 que debe profundizar como máximo 3 niveles y -nc que no debe descargar una página si ya lo ha hecho previamente. La opción -l se puede ajustar dependiendo de la profundidad de copia que queremos o se puede prescindir de ella.
  • -R "*reply*","*subscribe*": significa que debe rechazar cualquier enlace que contenga las palabras reply o subscribe. Fijaos en el uso del símbolo "*" como comodín para el resto de cadena.
  •  -X /help,/admin: ignora cualquier enlace que esté bajo esos directorios. Funciona de forma similar a -R pero es mucho más efectivo y rápido.
  •  -w 2 --random-wait : -w 2 establece una pausa de 2 segundos entre cada descarga, --random-wait modifica en cada ocasión el intervalo de forma aleatoria (multiplica por un valor entre 0.5 y 1.5) para las peticiones no sean tan mecánicas, algo más similar a lo que sería un navegación "humana". Es más fácil que el servidor no nos limite el acceso si las peticiones tienen un comportamiento "normal".
Páginas privadas con usuario y password
Este sistema funciona de forma cómoda en páginas públicas en las que no es necesario identificarse. El problema es que en ocasiones queremos duplicar una web que necesite un usuario/password. Si intentasemos aplicar el comando anterior, obtendríamos algún mensaje del tipo "no está autorizado para acceder a esta página".
Suponiendo que tenemos este usuario/password hay varias formas combinarlos con wget para poder acceder a la información. Para mi este ha sido el método más sencillo.

  1. Usando el navegador Chrome, instala la extensión Kojiki que ayuda a usar wget.
  2. Accede a la página normalmente con tu usuario/password
  3. Una vez dentro, vas a la página desde la que queremos iniciar la copia, haz clic con el botón derecho del ratón y busca "Copy wget this page"
  4. Ahora tienes en el portapapeles el comando wget con la información de la cookie que estás usando en la página. La cookie guarda información sobre la sesión: nombre de usuario, id de la sesión... y permite al wget "hacerse pasar" por el navegador que ha abierto la sesión.
  5. Pega el comando en una terminal que tengas abierta y añade los parámetros que quieras. En el ejemplo vamos a usar las opciones anteriores añadiendo la cookie que nos han dado. Recuerda que la cookie es personal y distinta para cada página, persona y momento. El siguiente comando no lo puedes "copiar y pegar".
$wget -r -l 3 -nc -k -R "*reply*","*subscribe*" -X /help,/admin  -w 2 --random-wait --cookies=off --header "Cookie: __unam=617b174-132asdfasdfasdfd75-2e3fecea-9; __utma=44907040.106181225.1318317690.1318317690.1318317690.1; __utmz=44907040.1318317690.1.1.utmcsr=google|utmccn=(organic)|utmcmd=organic; settings-time-2=1320664165; wp-settings-time-4=1321952914; wp-settings-6=hidetb%3D1; wp-settings-time-6=1322140725; wp-settings-1=editor%3Dtinymce%26m0%3Do%26wplink%3D1%26hidetb%3D1%26imgsize%3Dfull%26align%3Dcenter; wp-settings-time-1=1322226356;  __utma=208883906.2022691319.1315818628.1323264640.1323680669.60; __utmb=208883906.2.10.1323680669; __utmc=208883906; __utmz=208883906.1319800966.18.7.utmcsr=192.168.0.254:81|utmccn=(referral)|utmcmd=referral|utmcct=/es/; " 'http://www.example.com/' --content-disposition


Haciendo sustituciones de cadenas en todos los archivos
Puede que una vez hayas descargado todos los archivos tengas problemas en la navegación por algún carácter. En mi caso no conseguía enlazar bien las páginas que contenían la cadena "....php?loquesea..." porque no era capaz de encontrar los archivos, había que sustituirlo por una cadena de escape "...php%3Floquesea...". Bien, existe otro comando llamado sed que sirve exactamente para eso, encontrar patrones dentro de un archivo y sustituirlos por otros. Combinándolo con los comandos find y xargs, recorro todos los archivos de la carpeta haciendo la sustitución de "php?" por "php%3F".
find carpeta_objetivo/ -type f | xargs sed -i 's/php?/php%3F/g'
En principio los tres comandos están disponibles en cualquier distribución de linux  pero existen versiones de todos para windows.

Cuestiones legales y de propiedad intelectual
Que algo sea técnicamente posible no significa que pueda hacerse. Aunque es muy posible que si tienes acceso a una página no haya problema en que la guardes deberías estar seguro de tienes autorización para copiarla. Algunos servicios podrían considerar que estás cometiendo un abuso y bloquearte indefinidamente. Utiliza estos comandos con responsabilidad.

martes, noviembre 11, 2008

Instalar Blurb BookSmart en Ubuntu linux

Ando a vueltas últimamente con hacerme un par de álbumes de fotos impresos. Hoy en día hay un montón de empresas que te ofrecen programas para poder componer un álbum, enviarlo por internet y recibirlo impreso directamente en tu casa. El problema es el de siempre, los programas que usan están hechos sólo para windows y en algunas ocasiones para Mac. Después de mucho dar vueltas y probar llegué a través de un amigo maquero a la web de Blurb. Que tiene buenos precios y gastos de envío rondando los 5 €. Su software está en principio sólo para Windows y Mac pero es relativamente "fácil" hacer que rule en linux. Las instrucciones las he sacado de aquí y las traduzco al español con algunos pequeños cambios.

Se puede instalar de varias maneras, usando la versión de mac o la de windows. Por lo que he leído parece que se podría hacer una versión nativa de linux. A ver si se deciden.

Opción 1. Usando directamente la versión de Mac. (mi preferida)

Primero de todo necesitamos tener instalado el JRE de java. Para la versión de Mac se usa el Java 1.5 que se instala en ubuntu con el comando:

$sudo apt-get install sun-java5-jre

Descarga la versión de BookSmart para Mac (es un archivo con la extensión .dmg). Tendrás que registrarte para poder descargarla. Primero necesitamos convertir el archivo dmg a una imagen que pueda montar ubuntu. Usamos un software de java que hace exactamente eso (aquí lo tienes). Cuando hayamos creado la versión .iso ejecuta los siguientes comandos cambiando los directorios por aquellos donde has guardado el archivo:


#Creamos la carpeta
sudo mkdir -p /media/macbooksmart

#para tener soporte del formato HSF de mac...
sudo modprobe hfsplus && sudo modprobe hfs

#montamos la imagen del archivo descargado cambiar
#/ruta_al_archivo/booksmartxxx.iso por la que corresponda
sudo mount -t hfsplus -o loop /ruta_al_archivo/booksmartxxx.iso /media/macbooksmart

#copiamos las librerías de ejecución a una carpeta que creamos en /usr/lib
sudo mkdir /usr/lib/booksmart/
sudo cp -r /media/macbooksmart/BookSmart.app/Contents/Resources/Java/lib/ /usr/lib/booksmart/
sudo cp -r /media/macbooksmart/BookSmart.app/Contents/Resources/Java/resources/ /usr/lib/booksmart/

#desmontamos y borramos la carpeta creada para montar la imagen
#(no hacer esto si queremos crear un acceso directo)
sudo umount /media/macbooksmart
sudo rmdir /media/macbooksmart

Ahora nos queda crear el lanzador. Creamos un archivo /usr/lib/booksmart/booksmart ($sudo gedit /usr/lib/booksmart/booksmart) y lo llenamos con el siguiente código:

Editado: esto ha cambiado por este nuevo método que evita introducir la contraseña


#! /bin/sh
cd /usr/lib/booksmart
/usr/lib/jvm/java-1.5.0-sun/jre/bin/java -Xincgc -ea -Xms256m -Xmx1024m -classpath lib/bsc.jar:lib/commons-discovery-0.2.jar:lib/commons-logging-1.1.jar:lib/davisor-offisor.jar:lib/eventbus1-1.jar:lib/gdata-client-1.0.jar:lib/gdata-core-1.0.jar:lib/jaxrpc.jar:lib/log4j.jar:lib/saaj.jar:lib/spellex.jar:lib/ws-commons-util-1.0.1.jar:lib/wsdl4j-1.5.1.jar:lib/xmlrpc-client-3.1.jar:lib/xmlrpc-common-3.1.jar com.blurb.booksmart.application.BookSmart
exit $?


Y debemos darle permisos de ejecución bien con gnome o con el comando:

chmod +x /usr/lib/booksmart/booksmart


Si queremos crear un enlace en el menú de aplicaciones pinchamos con el botón derecho en "Aplicaciones" y selecccionamos "Editar menús". "Gráficos"->"Elemento nuevo" y ahí rellenamos:

Tipo: Aplicación
Nombre: Blurb BookSmart
Comando: /usr/lib/booksmart/booksmart
Icono: /usr/lib/booksmart/resources/themes/library/Blurb_logo_320.png



El resultado: