Processing: capturar pantalla usando Robot (java.awt)

Leave a Comment
Lo primero es saber qué es Processing (según Wikipedia):
Processing es un lenguaje de programación y entorno de desarrollo integrado de código abierto basado en Java, de fácil utilización, y que sirve como medio para la enseñanza y producción de proyectos multimedia e interactivos de diseño digital.
Es muy interesante ya que tiene librerías muy interesantes sobre todo para comunicar el PC con Arduino mediante el serial.
En este caso vamos a ver cómo utilizar la clase Robot de Javapara capturar la pantalla. Código:
//Importamos las librerías necesarias para el tratamiento de la imagen
import java.awt.*;
import java.awt.image.*;
import javax.imageio.ImageIO;

//Creamos los objetos para guardar la imagen
Robot robot;
//Este es el buffer donde se guardaran los datos
BufferedImage screenshot = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
//Area de la region a capturar. Podeis cambiar la region:
// Rectangngle rect = new Rectangle(width, height);
Rectangle rect = new Rectangle( Toolkit.getDefaultToolkit().getScreenSize() );
//Formato de la imagenguardada, ruta del archivo y nombre
String formato = "png";
String ruta = "/home/usuario";
String nombre_archivo = "screenshot";

//La funcion setup() se ejecuta al iniciar
void setup(){
  //Comprobamos que podemos crear el objeto
  try {
    robot = new Robot();
  }
  catch (AWTException e)
  {
    println("Robot class not supported by your system!");
    exit();
  }
  //Capturamos pantalla con el area del rectangulo
  screenshot = robot.createScreenCapture(rect);
  //Creamos el arvhico donde se guardara
  File archivo = new File(ruta + nombre_archivo + "." + formato);
  
  try {
    //Guardamos la imagen
    ImageIO.write(screenshot, formato, archivo);
    println("Imagen guardada");
  } catch(IOException e) {
    System.out.println("Write error for " + archivo.getPath() + ": " + e.getMessage());
  }
  //Salimos del programa
  exit();
}
Este código es muy sencillo. Luego vosotros podéis crear un bucle para tomar una captura cada cierto tiempo o hacer lo que necesitéis.
Espero que os sirva de ayuda y si os es útil compartid y comentad que es gratis!
¡Saludos!

Ubuntu: comando history

Leave a Comment
Todos (o casi todos) sabemos que pulsando la flecha hacia arriba en la terminal podemos ver los comandos que hemos ejecutado recientemente en orden de antigüedad. Pues bien si ejecutamos:
history
Obtenemos una lista de todos los comandos que hemos ejecutado junto con un número:
291 echo hola mundo
Pero no sólo eso, si no que nos permite ejecutar un comando escribiendo:
!291
El número 291 es el número de comando que aparece en la lista, que en mi caso ejecutará echo hola mundo.
También podemos buscar entre los comandos pulsando 'Ctrl + r' y ejecutarlo pulsando enter.
Con el comando grep podemos filtrar los resultados para buscar alguno en concreto:
history | grep cadena-a-buscar
Ver los últimos 25 comandos:
history 25
Borrar el historial:
history -c
Mostrar los resultados por páginas:
history | less
O combinarlo todo:
history 15 | grep cadena-a-buscar | less
Si os ha sido útil comentad y compartidlo :) ¡Saludos!

Visto en DesdeLinux

Ubuntu: cómo instalar y personalizar Cinnamon

Leave a Comment
En vista que el entorno de escritorio Gnome 3 no me llega a convencer demasiado me he encontrado con Cinnamon, un entorno de escritorio estilo windows que ofrece un buen rendimiento, es bonito y muy fácil de personalizar e instalar complementos.
Para instalarlo ejecutamos:
sudo add-apt-repository ppa:gwendal-lebihan-dev/cinnamon-nightly
sudo apt-get update
sudo apt-get install cinnamon
Y ¡Listo! Ahora cerramos sesión y elegimos 'Cinnamon'. Una vez dentro procedemos a personalizarlo con temas y complementos.

Cambiar el icono 'Mint' del menú

Pulsamos botón derecho sobre el icono del menú y pulsamos 'Configurar. Marcamos la casilla 'Usar un icono personalizado' e introducimos el icono. Si queremos poner el de ubuntu usaremos este:
/usr/share/icons/ubuntu-mono-dark/actions/24/package-supported.svg

Instalar temas

Nos vamos a Apariencia dentro de la configuración de Cinnamon (botón derecho sobre el panel -> todos los ajustes) y seleccionamos Temas. Ahora es tan sencillo como descargárnolos desde la pestaña "Obtener más en la red". Os recomiendo Zukitwo, Android Holo, Minty o Metro (me gusta más el primero).

Instalar applets

Se hace igual: desde el menú nos dirigimos a 'Applets' y podemos ver tanto las que tenemos para instalarlas o quitarlas o descargarnos más en la red. Es muy sencillo de configurar y de instalarlas, pero si tenéis cualquier duda ponedla en un comentario.

Cambiar la posición del panel

Es tan sencillo como en el menú de configuración pinchar en 'Panel' y establecer 'Tradicional', 'Volteado' o 'Clásico'. También podéis configurar si queréis que se autoesconda.

Espero que os haya sido útil. Podéis compartirlo con los demás o comentar (es gratis!) :D

Descargar videos/musica de YouTube

Leave a Comment
Existen multitud de herramientas que nos permiten descargarnos los vídeos o el sonido, pero desde luego la mejor solución que he encontrado es Youtube-Mp3.
Esta web nos permite, introduciendo una url de un vídeo de youtube descargarnos tanto el vídeo como el audio, sin instalar nada, con apenas dos clicks y además funciona desde el móvil.
Fácil y sencillo, sin instalar nada y gratis!

Obtener Feed en JSONP de Blogger/Feedburner

Leave a Comment
¿Qué es JSONP? (Wikipedia):
JSONP o JSON con padding es una técnica de comunicación utilizada en los programas JavaScript para realizar llamadas asíncronas a dominios diferentes. JSONP es un método concebido para suplir la limitación de AJAX entre dominios, que únicamente permite realizar peticiones a páginas que se encuentran bajo el mismo dominio y puerto por razones de seguridad.
Es decir, podemos obtener con JQuery o JS datos de otro dominio (en este caso el 'post feed') evitando así el error de 'Cross Domain' y cumpliendo la 'Política del mismo origen' (Same origin policy, wikipedia). A grandes rasgos una medida de seguridad para evitar que las peticiones AJAX accedan a datos como las cookies o credenciales para suplantar (por ejemplo) una identidad.
Una vez entendido esto pasamos a ver cómo podemos acceder al 'Feed' del blog. Primera forma:
http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=100&q=http://feeds.feedburner.com/nombre_blog_feedburner
O la segunda forma:
http://tudominio.com/feeds/posts/default?orderby=published&max-results=10&alt=json-in-script&callback=nombre_funcion
Podéis cambiar el número de 'post' que queréis que devuelva (cambiando 'num=X' o 'max-results=X'). Usando la segunda forma necesitaremos crear una función con el nombre indicado en el callback, y nos devolverá los datos (JSONP).
Espero que os sirva de ayuda :)

Raspberry Pi: first steps

1 comment

Choosing an Operating System

Once we purchased our Raspberry Pi (model A, B, or B +), we need a SD (or other card with adapter) where we'll install our OS (the more capacity you have, the better). Here you have some of them:
  • RASPBIAN: Debian Wheezy
  • PIDORA: Fedora Remix
  • OPENELEC: An XBMC Media Centre
  • RASPBMC: An XBMC Media Centre
  • RISC OS: A non-Linux distribution
  • ARCH LINUX: A lightweight Linux distribution
  • NOOBS: Offline and network install
Choose the one that suits better to your needs. You can download it from here and read more about them.
In my case I will install Raspbian which is like Debian, and allow me to install servers, software, etc.

Preparing SD card

If you use Windows, you can format it using 'right click' or the tool SDFormatter .
In Ubuntu you can use gparted:
 sudo apt-get install gparted 
To use it you need to be root:
 sudo gparted 
Now in the top right corner (where it says /dev/...) choose the one of the SD card (by default is your hard drive, be carefull). Assure that you select the SD Card (the total capacity should be approximately the size of the card) or you can disconnect it and connect it to see who appears/disappears.
If you are sure, delete the partition(s) and apply format ( FAT32 ) and apply changes.
This utility will also enable you to manage partitions (create, resize, delete, format, etc).

Burn the image

From Windows :
Download and install Win32DiskImager here . Then open it and select 1. picture 2. the SD unit.
From Ubuntu :
Like in windows we can use an application with graphical interface and follow the same steps:
 sudo apt-get install gparted usb-imagewriter 
 sudo usb-imagewriter 

From terminal

Once we would have downloaded, extract it and open a terminal. Navigate to the folder where it is (in my case Downloads ):
 cd Downloads 
Well, now pay close attention because you can erase the contents of your partition. First let's see which devices are connected:
 df -h 
Now connect our SD card and re-run the command. The device which came is where we'll copy the new image. (If not open your SD from the manager folders to be mounted). In my case it is /dev/sdb1 (I have only one partition, if I had more will appear as sdb2, sdb3 ...). Now unmount the SD (do it with all partitions):
 sudo umount /dev/sdb1/
Now copy the image ( beware of this because if you are wrong you will lose all data on the hard disk or drive ):
 sudo dd bs=4M if=image_name.img of=/dev/sdb 
 sync 
*Note 1: Do not put the "1" (indicating the partition), that is, you have to put (in my case) /dev/sdb and no /dev/sdb1.
*Note 2: This command shows no output and appears to be 'frozen'. Simply you have to wait because it may take a few minutes.
Done! We have ready to use our SD car in the Raspberry.

Raspberry Pi: Primeros pasos - Instalar un SO

Leave a Comment

Elegir sistema operativo

Una vez nos hemos comprado nuestra Raspberry Pi (ya sea el modelo A, B, o el B+) necesitaremos una tarjeta SD (u otra con adaptador) en la que instalaremos nuestro sistema operativo (cuanto más capacidad tenga, mejor). Os muestro una lista de algunos:
  • RASPBIAN: Debian Wheezy
  • PIDORA: Fedora Remix
  • OPENELEC: An XBMC Media Centre
  • RASPBMC: An XBMC Media Centre
  • RISC OS: A non-Linux distribution
  • ARCH LINUX: A lightweight Linux distribution
  • NOOBS: Offline and network install
Elegid el que más os guste o el que mejor se adapte a vuestras necesidades. Podéis descargároslos desde aquí y leer más información sobre ellos.
En mi caso voy a instalar Raspbian que es como Debian, lo que me va a permitir instalar servidores, programas, etc.

Preparar tarjeta SD

Si usáis Windows podéis formatearla usando botón derecho o con la herramienta SDFormatter.
En Ubuntu podéis usar gparted:
sudo apt-get install gparted
Para usarlo necesitáis ser root:
sudo gparted
Ahora seleccionáis arriba a la derecha (donde pone /dev/...) el de la tarjeta SD (por defecto vendrá vuestro disco duro). Aseguraros que seleccionáis la tarjeta SD (la capacidad total debe ser aproximada a la capacidad de la tarjeta) o podéis desconectarla y conectarla hasta ver cual aparece y desaparece.
Cuando estéis seguros borráis la partición(es) y aplicáis un formato (FAT32) y aplicáis los cambios.
Esta utilidad también os permitirá gestionar las particiones (crear, redimensionar, borrar, formatear, etc), tanto de Tarjetas, como SSD, HDD...

Instalar imagen

Desde Windows:
Instaláis Win32DiskImager desde aquí lo abrís y seleccionáis 1.La imagen 2.La unidad de la SD.
Desde Ubuntu:
Al igual que en windows podemos utilizar una aplicación con interfaz gráfica muy sencilla y seguir los mismos pasos:
sudo apt-get install usb-imagewriter gparted
sudo usb-imagewriter
*Nota: Sólo disponible en ubuntu 12.10 o anteriores.

Desde el terminal

Una vez nos lo hemos descargado, lo extraemos y abrimos un terminal. Navegamos hasta la carpeta donde esté (en mi caso en Descargas):
cd Descargas
Bien, ahora prestad mucha atención porque podéis borrar el contenido de vuestra partición. Primero vamos a ver los dispositivos que hay conectados:
df -h
Ahora conectamos nuestra tarjeta SD y volvemos a ejecutar el comando. El dispositivo que haya aparecido nuevo será donde copiemos la imagen. (Si no aparece abrid la SD desde el gestor de carpetas para que se monte). En mi caso es /dev/sdb1 (Yo sólo tengo una partición, si tuviese más aparecerían como sdb2, sdb3...). Ahora desmontamos la SD (hacedlo con todas las particiones):
sudo umount /dev/sdb1/
Y ahora copiamos la imagen (Cuidado con esto ya que si os equivocáis perderéis todos los datos del disco duro o de la unidad que sea):
sudo dd bs=4M if=nombre_imagen.img of=/dev/sdb
sync
*Nota 1: No hay que poner el '1' (que indica la partición), es decir, hay que poner (en mi caso) /dev/sdb y no /dev/sdb1.
*Nota 2: Este comando no muestra ninguna salida, parece que está 'congelado'. Simplemente tenéis que esperar ya que puede tardar unos minutos.
Y listo! Ya tenemos nuestra SD lista para introducir en la Raspberry.

How to add JavaScript to Blogger template

Leave a Comment
If you want to add a javascript script in blogger template we have to use the following syntax:
<script type='text/javascript'>
//<![CDATA[
... code ...
//]]>
</script>
With that we tell Blogger that the contents within the CDATA tag is text that does not have to analyze, because as you will see what XML tags inside the file to form the website. So if we have special characters within your XML script he's playing and we can not keep our staff and a possible error that will give us will be:
Your template could not be parsed as it is not well-formed. Please make sure all XML elements are closed properly. XML error message: The content of elements must consist of well-formed character data or markup.
Another way would be to replace special characters with escape characters (as explained in this other post),but it is not at all efficient, P
If It was helpful coment and share!

Cómo añadir JavaScript a una plantilla de Blogger

1 comment
Si queremos añadir un script javascript en la plantilla de blogger tenemos que utilizar la siguiente sintaxis:
<script type='text/javascript'>
//<![CDATA[
... code ...
//]]>
</script>
Con esto le decimos a Blogger que el contenido dentro de la etiqueta CDATA es texto que no tiene que analizar, ya que al ser XML va a ver qué etiquetas hay dentro del archivo para formar la página web. Por tanto si tenemos caracteres especiales dentro de nuestro script XML los va a interpretar y no podremos guardar nuestra plantilla y un posible error que nos dará será:
Your template could not be parsed as it is not well-formed. Please make sure all XML elements are closed properly. XML error message: The content of elements must consist of well-formed character data or markup.
Otra forma de hacerlo sería sustituir los caracteres especiales por caracteres de escape (como explicamos en este otro post), pero no es nada eficiente ;P
Si os ha sido útil comentad y compartir!

Cómo añadir estilos CSS en HTML

Leave a Comment
Vamos a ver cómo podemos añadir hojas de CSS a nuestra página web/blog.

Desde un archivo

Si tenemos nuestras hojas de estilo en un archivo llamado 'style.css' incluiremos dentro de la etiqueta <head> lo siguiente:
<link rel="stylesheet" type="text/css" href="style.css" media="screen" />
Si tenemos la URL del archivo sustituiremos 'style.css' por la dirección web, o si está dentro de una carpeta '/carpeta/style.css'.

Dentro del documento HTML

Tan sencillo como escribir los estilos dentro de estas etiquetas, situadas (de nuevo) dentro de la etiqueta <head>:
<style media="screen" type="text/css">



</style>

Dentro de una eqtiqueta

Sólo tenemos que añadir el atributo 'style' y dentro nuestras reglas CSS:
<p style="color:blue;">Párrafo de color azul</p>

Importar un archivo dentro de CSS

También podemos importar un arhivo CSS desde otro archivo (que puede ser una URL) CSS utilizando @import:
@import 'archivo.css';
Más información sobre '@import'.

How to add CSS to HTML

Leave a Comment
Let's see how we can add CSS to our website / blog page.

From a file

If you have our style sheets in a file called 'style.css' you'll add the following inside the tag <head>:
<link rel="stylesheet" type="text/css" href="style.css" media="screen" />
You can replace the file 'style.css' with a URL, or if you have it inside a folder: '/ folder / style.css' .

Inside the HTML document

As simple as writing styles inside these tags, located (again) within <head>:
<style media="screen" type="text/css">



</style>

Within a tag

We just have to add the 'style' attribute and our CSS rules:
<p style="color:blue;">Blue paragraph</p>

Importing CSS file

We can also import a CSS stylesheet from another file (which can be a URL) using @import:
 @ import 'file.css'; 
More about 'import '.

Atajo CTRL+ALT+T no funciona en Ubuntu

Leave a Comment
Con esta combinación de teclas se abre la terminal. Pues bien recientemente en Ubuntu me ha dejado de funcionar dicha combinación de teclas y me estaba volviendo loco ya que utilizar los atajos del teclado es MUY comodo (os recomiendo que empecéis a utilizarlos). La solución es sencilla: nos vamos a 'Teclado -> Atajos' y borramos en la sección 'Lanzadores' el atajo para 'Iniciar el terminal'.
Pulsamos Añadir un atajo personalizado y le ponemos de nombre 'Terminal' (o lo que queráis) y en orden (este debe de ser así) 'gnome-terminal'. Lo añadís y le asignáis la combinación 'Ctrl+Alt+T' Todo listo. ¡Comenta y comparte si te ha sido útil!

Ubuntu: Ctrl+Alt+T doesn't work (fix)

Leave a Comment
This shortcut opens the terminal. My Ubuntu's shortcut recently has stopped working and it was driving me crazy since I use keyboard shortcuts because it's very comfortable (I recommend you to start using this). The solution is simple: we will go to 'Keyboard -> Shortcuts' and delete under 'Launchers' a shortcut called ' Start the terminal '.
Press Add a custom shortcut, put in the name input 'Terminal' (or whatever you want) and in 'Command' (this must be exactly this) 'gnome-terminal' . Now add it and set the combination 'Ctrl + Alt + T' . All done. Comment and share if you find this helpful!

Limpiar nuestro sistema operativo (Ubuntu) a fondo

10 comments
Tras instalar y desinstalar programas, librerías, actualziar software, etc. Ubuntu acumula mucha basura: paquetes 'huérfanos', archivos de configuración...
Vamos a ver cómo podemos deshacernos de estos archivos para mantener 'fresco' nuestro sistema.

Comandos de limpieza

Borrar los paquetes almacenados en caché

Primero limpiamos archivos antiguos:
sudo apt-get autoclean
Además, cada vez que instalamos un programa los paquetes quedan almacenados en '/var/cache/apt/archives' y '/var/cache/apt/archives/partial/'. Cuando procedemos a desinstalarlo estos paquetes no se borran de forma que si lo volviésemos a instalar no es necesario descagarlos. Si 'trasteamos' mucho con el ordenador (como es mi caso) esta carpeta puede llegar a ser muy grande. Para borrarlos nos basta con escribir en una terminal:
sudo apt-get clean

Eliminar paquetes necesarios para las dependencias de aplicaciones

Si desinstalamos un paquete o librería únicamente se borra dicho paquete pero no los demás que se instalaron para su correcto funcionamiento. Para borrarlos usamos:
sudo apt-get autoremove
De hecho se recomienda desinstalar paquetes así:
sudo apt-get remove -purge nombredepaquete
De esta forma se eliminan archivos de configuración.

Borrar imágenes antiguas del kernel

Cuando actualizamos la versión del kernel, la antigua no se borra. Para borrarla primero debemos saber que versión tenemos; ejecutamos:
uname -r
En mi caso el resultado es:
3.13.0-32-generic
Ahora comprobamos todos las imagenes que hay en el sistema con:
dpkg --get-selections | grep linux-image
Lo que me devuelve esto:
linux-image-3.13.0-24-generic   install
linux-image-3.13.0-32-generic   install
linux-image-extra-3.13.0-24-generic   install
linux-image-extra-3.13.0-32-generic  install
linux-image-generic 
Vale, entonces sabemos que podemos borrar linux-image-3.13.0-24-generic y linux-image-extra-3.13.0-24-generic. Ejecutamos:
sudo apt-get remove --purge imagenes-a-borrar
Importante: No borréis 'linux-image-generic.

Ahora borraremos los 'headers':
dpkg --get-selections | grep linux-headers
Este comando nos devuelve esto:
linux-headers-3.13.0-24    install
linux-headers-3.13.0-24-generic   install
linux-headers-3.13.0-32    install
linux-headers-3.13.0-32-generic   install
linux-headers-generic    install
Borramos, igual que en el paso anterior, todos aquellos que no sean la versión que estamos usando ni el 'linux-headers-generic'.
sudo apt-get remove --purge headers-a-borrar
Por último podemos actualizar el 'grub', aunque debería haberse actualizado automaticamente. Para ello ejecutamos:
sudo update-grub2
sudo update-grub

Eliminar paquetes 'huérfanos' con deborphan

Procedemos a instalar el paquete 'deborphan' que nos va a ayudar a desinstalar todos aquellos paquetes 'residuales' después de instalar o desinstalar aplicaciones. Lo instalamos:
sudo apt-get install deborphan
Una vez instalado ejecutamos:
deborphan
y obtenemos una lista con paquetes huérfanos (en mi caso no tengo ninguno).
Para desinstalarlos ejecutamos el siguiente comando en la terminal:
sudo apt-get --purge remove $(deborphan)
Si también queremos borrar los paquetes en la sección libdevel ejecutamos:
sudo apt-get --purge remove $(deborphan --libdevel)
Para ver los archivos de configuración obsoletos:
deborphan --find-config
Y para desinstalarlos:
sudo dpkg --purge $(deborphan --find-config)

Ya hemos acabado de limpiar nuestro sistema. En otras entradas veremos programas que nos permitan gestionar paquetes.

Ubuntu instalar un dock ( Cairo, Plank ) y ocultar unity

2 comments
En linux, más concretamente en ubuntu, disponemos de una gran capacidad para personalizar todo lo que queramos. En este caso tenemos los 'docks', un launcher que podemos personalizar y en el que aparecen los programas abiertos o accesos directos para facilitarnos su utilización.
Algunos ofrecen más opciones que otros, por ejemplo "cairo dock" es muy potente (pero personalmente a mi no me gusta) y nos permite quitar unity.

Instalar Cairo Dock

sudo add-apt-repository ppa:cairo-dock-team
sudo apt-get update
sudo apt-get install cairo-dock cairo-dock-plug-ins
Una vez instalado lo abrimos (desde el menú de aplicaciones de unity o desde el terminal) y ya podemos configurarlo a nuestro gusto.
Además si cerramos sesión podemos elegir la opción para quitar el entorno de unity:

Instalar Plank

Para mí es el que más me gusta y además ofrece una buena respuesta (viene instalado con Elementary OS). Es bastante simple, pero permite configurar algunos aspectos como la apariencia o la interacción.
sudo apt-add-repository ppa:ricotz/docky
sudo apt-get update
sudo apt-get install plank
Para configurar el dock:
sudo gedit ~/.config/plank/dock1/settings

"Desactivar" el launcher de Unity

Nos vamos a "Configuración del sistema -> Apariencia -> Comportamiento" y marcamos "Ocultal el lanzador automáticamente".
Ponemos la sensibilidad en "baja" (al tope) y así el launcher sólo se abrirá cuando pulsemos la tecla de windows.

Ejecutar al inicio

Nos vamos a "Aplicaciones al Inicio" y le damos a "Añadir":
Añadimos y ¡Listo!