Cifrados WiFi: Protegiendo nuestra red

Leave a Comment
En este post vamos a conocer los tipos de cifrados para nuestra red WiFi y explicar conceptos básicos para evitar que "el vecino" nos "robe" el internet.

¿Por qué deberíamos proteger nuestra red?

Bien, quizá os de igual por un motivo u otro que una tercera persona acceda a vuestra red ya que puede que para vosotros no sea una necesidad tener un buen ancho de banda o simplemente no os importa. Bien, perfecto, pero... ¿Qué puede hacer un atacante una vez que ha entrado en vuestra red?
En primer lugar podría ver qué equipos hay en tu red y explotar vulnerabilidades accediento a vuestros datos. Si tenéis cámaras IP podría acceder a ellas, si vuestra contraseña del router es la que venía por defecto podría modificar los parámetros de vuestro router e incluso dejaros sin internet (aunque tendría solución). Tambíen podría "esnifar" vuestros datos y obtener vuestras contraseñas. Por tanto, ¿Salimos ganando con un poco de protección, no?

Los cifrados actuales

WEP

WEP, acrónimo de Wired Equivalent Privacy, fue uno de los primeros cifrados WiFi (sobre el 2000). Hoy por hoy se conocen las vulnerabilidades de este sistema y en apenas unos minutos se puede obtener la contraseña del router "víctima". Por tanto bajo ningún concepto lo uséis, ya que es como si no tuviéseis protección.

WPA

WPA o "Wi-Fi Protected Access" surgió para corregir las limitaciones del WEP. Introdujo mejoras de seguridad como el TKIP (Temporal Key Integrity Protocol).
WPA implementa el sistema PSK o de clave compartida. Existe una versión "personal" y otra de empresa.

WPA2

Es el estándar más moderno para proteger redes inalámbricas y el que recomienda la Wi-Fi Alliance. Al igual que el WPA existe una versión personal (WPA2-Personal) y empresarial (WPA2-Enterprise). Este sistema es compatible con WPA (pero no con WEP), por tanto no vas a tener ningún problema con los dispositivos que soporten el anterior.

¿TKIP o AES?

Sin duda elegiríamos el cifrado AES ya que en el TKIP se han descubierto algunas vulnerabilidades. De todas formas aumentando la seguridad a WPA/WPA2 nadie (en principio) va a querer conectarse a nuestra red. El único inconveniente es que algunos dispositivos pueden no soportar el cifrado AES. Por tanto informaros pero en general los smartphones y ordenadores deben de funcionaros correctamente.

Eligiendo una contraseña fuerte

Mi recomendación es que la contraseña sea de unos 15 carácteres, que contenga tanto números como mayúsculas, minúsculas y caracteres especiales (@#~$%&...). Además deberíais no usar palabras tipo "1234", "contraseña", "movistar", ni nada relacionado con vosotros.
Otro factor importante es cambiar el nombre de la red para que no sepan de qué compañía sois.
Con esto estamos evitando los ataques por fuerza bruta o por diccionario.

Espero que os haya sido útil. En próximas entregas seguiremos viendo más factores "de riesgo".

GIF Blocker: una extensión realmente útil

Leave a Comment

No sé si os habrá pasado en Twitter (por ejemplo) o navegando en otras webs donde abundan los GIFs animados. Es una locura cuando aparecen cientos de ellos reproduciéndose todos a la vez y no podéis pararlos.
Si estáis hartos de que esto ocurra tenéis la extensión GIF Blocker (enlace) que nos permitirá bloquearlos a todos.
Otra extensión similar está disponible para los usuarios de Mozilla Firefox (enlace).

Con esto evitaremos esas molestas páginas webs en las que apenas se puede navegar.
¡Saludos!

Programando en C++: Tipos de datos (primitivos)

Leave a Comment
Los tipos de datos primitivos son aquellos que están definidos dentro del lenguaje. De todas formas vamos a ver los más usados, si queréis más información (enlace).

El problema en C/C++ es que el tamaño de las variables depende únicamente del compilador. Así si trabajamos en un ordenador de 64 bits: short <= int <= long <= long long <= 64.
Por tanto podemos usar el operador sizeof( tipo_dato ) para saber el tamaño. De todas formas vamos a ver los tamaños orientativos:

Tipos de datos numéricos enteros

  • short : 2 bytes (16 bits)
  • int : 4 bytes (32 bits)
  • long : 4 bytes (32 bits)
  • long long : 8 bytes (64 bits)
  • char : 1 bytes (8 bits)
El dato tipo char almacena caracteres (según el tipo de codificación) como números. Aquí (enlace) tenéis una lista de los valores.

Tipos de datos numéricos reales

  • float : 4 bytes (32 bits)
  • double : 8 bytes (64 bits)
Estos datos nos permiten almacenar números muy grandes, pero nos ofrecen poca precisión (de aproximadamente unos 15 dígitos). Más información del sistema 'coma flotante' (enlace).

Tipo de datos lógico

El dato bool puede ser true ( != 0 ) o false ( 0 ). Tiene 1 byte.

Sigend / Unsigned

Básicamente nos permiten almacenar más numeros pero sin signo. Por ejemplo, un int normal se considera 'signed', por tanto su rango estaría en el intervalo (suponiendo que es de 32 bits) [-2^16, 2^16-1]. El menos uno se debe a que incluimos el 0 en alguno de ellos.
En cambio un unsigned int iría desde el 0 hasta 2^32.

Comentad cualquier problema, si os ha sido de ayuda o no y lo que queráis tratar en la próxima entrega.
¡Saludos!

Cómo conectarse a un servidor FTP con FileZilla

Leave a Comment
Los servidores FTP son muy útiles para enviar y transmitir arcvhivos entre ordenadores. De hecho es el protocolo que se usar para subir archivos a un hosting web.
Para conectarnos podemos utilizar clientes con interfaz gráfica como FileZilla (mi favorito).
Para instalarlo en Ubuntu abrimos un terminal y ejecutamos:
sudo add-apt-repository ppa:n-muench/programs-ppa
sudo apt-get update
sudo apt-get install filezilla
Ahora lo abrimos y esta es la interfaz:
Para conectarnos podemos usar la conexión rápida introduciendo servidor (dirección IP), usuario, contraseña y puerto (por defecto es el 20/21).

Usando el terminal: FTP

El comando ftp nos va a permitir conectarnos a un servidor y navegar por los directorios así como descargarnos o subir archivos.
ftp
Ahora nos pedirá nombre de usuario y contraseña. Una vez dentro estos son algunos comandos que podemos usar:
ls
Para ver los archivos y directorios.
cd /directorio
Para entrar en un directorio y:
cd ..
Para subir.
get archivo
Nos descargamos el archivo indicado.
put archivo
Para subir el archivo al servidor.
d :D Espero que os haya sido útil. Si os gusta o necesitáis algo comentad :D

Ubuntu: montar un servidor FTP y compartir archivos

Leave a Comment
En este post vamos a aprender a montar un servidor FTP en Ubuntu para compartir archivos en red local o acceder a ellos desde fuera de la red.

Instalación

Abrimos un terminal y ejecutamos:
sudo apt-get install vsftpd
Así instalaremos el servidor desde los repositorios de Ubuntu. Para acceder al servidor utilizaremos el nombre de un usuario del sistema (ordenador) y su respectiva contraseña.

Configuración

Abrimos el archivo de configuración con nuestro editor de textos preferido, en mi caso usaré gedit:
sudo gedit /etc/vsftpd.conf
Aquí os muestro mi archivo de configuración, si falta algo aquí lo tenéis explicado en inglés en vuestro archivo.
# Iniciar el servidor junto con el sistema.
listen=YES
# Permitir entrar ausuarios anónimos.
anonymous_enable=NO
#
# Entrar desde el ordenador donde está alojado el servidor.
local_enable=YES
#
# Permiso de escritura.
write_enable=NO
# Log de la actividad del cliente.
dirmessage_enable=YES
#
#Hora del servidor.
use_localtime=YES
# Log de las descargas/subidasde archivos.
xferlog_enable=YES
# Puerto de escucha FTP, por defecto es el 20.
connect_from_port_20=YES
# Mensaje de entrada del servidor
ftpd_banner=Servidor FTP de Alberto
# Este nos permite restringir el acceso a los usuarios a su propio /home (NO) o a todo el disco (YES)
chroot_local_user=NO

secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem

Si queremos que los usuarios accedan únicamente a su carpeta /home pero que existan usuarios 'root' con acceso a todo el sistema modificaremos esto:
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
chroot_local_user=YES
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd.chroot_list
Ahora creamo el archivo que contendrá la lista de usuarios 'root':
sudo gedit /etc/vsftpd.chroot_list
Escribimos el nombre de los usuarios que serán root. Guardamos y reiniciamos el servidor:
sudo /etc/init.d/vsftpd restart 
Para detener el servicio:
sudo /etc/init.d/vsftpd stop
Para iniciarlo:
sudo /etc/init.d/vsftpd start

Ubuntu: cómo gestionar usuarios

Leave a Comment

Modo gráfico

Para getionarlos utilizaremos la aplicación 'gnome-system-tools' que instalaremos desde los repositorios:
sudo apt-get intall gnome-system-tools
Esta herramienta nos permite gestionar tanto usuarios como grupos de forma sencilla. Para abrirla buscamos 'Usuarios y grupos' Puede ser que prefiramos hacerlo desde la terminal así que vamos a aprender algunos comandos básicos.

Utilizando la terminal

Usuarios

Añadir un usuario:
sudo adduser nombre_usuario
Añadir un usuario nuevo y ponerlo en un grupo (principal):
sudo adduser --ingroup nombre_grupo nombre_usuario
Añadir un usuario (nuevo o existente) y ponerlo en un grupo:
sudo adduser nobre_usuario nombre_grupo
Cambiar el grupo principal de un usurio:
usermod -g nombre_grupo nombre_usuario
Cambia el nombre de usuario:
usermod -l nuevo_nombre nombre_usuario
Eliminar un usuario:
sudo userdel nombre_usuario
Eliminar usuario y borrar su carpeta personal:
sudo userdel -r nombre_usuario

Grupos

Añadir grupo:
sudo addgroup nombre_grupo
Cambiar el nombre del grupo:
sudo groupmod -n nuevo_nombre nombre_grupo
Eliminar un grupo:
sudo groupdel nombre_grupo
Hasta aquí un tutorial básico de usuarios y grupos. Espero que os sea útil y si queréis algo comentad! :D

Ubuntu: comandos tail y head

Leave a Comment
Los comandos tail y head son muy interesantes ya que nos permiten monitorizar la parte inferior (tail o cola) y la superior (head o cabeza) de un documento.
Los dos se utilizan de la misma forma así que sólo explicare uno de ellos.
Mostar las últimas 10 filas:
tail -10 archivo.txt
Además podemos ver el archivo en tiempo real con la opción -f. Esto es muy útil para controlar archivos .log.
tail -10 -f archivo.txt
Si queremos saber cuantas líneas tiene el archivo:
wc -l test.txt
Y si queremos filtar el resultado para que sólo devuelva las líneas:
wc -l test.txt | awk '{print $1}'
Si queréis leer más documentación podéis utilizar el comando man.
man tail
man awk
man head
man wc

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

2 comments

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

1 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

11 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

4 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!

Instalar phpMyAdmin en Ubuntu

Leave a Comment

phpMyAdmin es una herramienta escrita en PHP con la intención de manejar la administración de MySQL a través de páginas web, utilizando Internet. Actualmente puede crear y eliminar Bases de Datos, crear, eliminar y alterar tablas, borrar, editar y añadir campos, ejecutar cualquier sentencia SQL, administrar claves en campos, administrar privilegios y exportar datos en varios formatos.

Por tanto nos va a ser muy útil a la hora de gestionar nuestras bases de datos de nuestro servidor apache (si no sabéis como instalarlo aquí el tutorial).

Instalación

Tan secillo como:
sudo apt-get install phpmyadmin
Nos dirá que para que servidor queremos instalarlo y elegiremos 'apache2' (en nuestro caso). Posteriormente nos dirá si queremos configurar la base de datos con 'dbconfig-common' y diremos que no.
Por último ejecutaremos este comando:
sudo ln -s /usr/share/phpmyadmin /var/www/
Si usamos Ubuntu 14.04 será:
sudo ln -s /usr/share/phpmyadmin /var/www/html/
Ahora está todo listo. Accedemos a este enlace para comprobar que funciona: http://127.0.0.1/phpmyadmin

Nos deberá salir esto:
Ahora ponemos como usuario 'root' y la contraseña que pusisteis al instalar MySQL.

Solución de errores

Si no os funcionase probad esto:
sudo gedit /etc/apache2/httpd.conf 
Pegáis esto dentro y guardáis:
Include /etc/phpmyadmin/apache.conf 
Reiniciamos el servidor web:
sudo service apache2 restart 
Y con eso ya debería estar todo funcionando.

Problemas HTML acentos y eñes: caracteres de escape y codificación

Leave a Comment
La codificación de las páginas web puede llegar a ser un problema a la hora de mostrar acentos, eñes, o caracteres especiales. Si no vamos a utilizar dichos caracteres la codificación nos da igual ya que en un momento concreto podemos utilizar los caracteres de escape, pero si no lo más cómodo es establecer correctamente la codificación de la página.

Caracteres de escape

Un carácter que de otro modo se interpretaría como una construcción de lenguaje sin escape, se debe interpretar literalmente.
Por ejemplo si estamos editando una página web y queremos mostrar el caracter '<' sería un problema ya que sirve para delimitar las etiquetas.

Algunos ejemplos son:
á -> &aacute;
é -> &eacute;
í -> &iacute;
ó -> &oacute;
ú -> &uacute;
ñ -> &ntilde;
Pero si queremos transformar una cadena y no ir uno a uno, o queremos consultar alguno en concreto, podemos usar esta fantástica web que lo automatiza (enlace aquí).

Codificación

Los documentos transmitidos con HTTP que son de tipo texto, como text/html, text/plain, etc., pueden enviar un parámetro charset en el encabezado de HTTP para especificar la codificación de caracteres del documento. Es muy importante etiquetar siempre los documentos web en forma explícita. HTTP 1.1 dice que el charset predeterminado es ISO-8859-1. Sin embargo, existen demasiados documentos sin etiquetar en otras codificaciones. Por lo tanto, los exploradores utilizan la codificación preferida del lector cuando no exista ningún parámetro charset explícito.
Una vez definido vamos a ver como podemos anunciar el encoding que estamos utilizando:

Html

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
(para el español utilizaremos el 'UTF-8')

No olvidéis configurar también vuestro servidor Apache o a las bases de datos MySQL.

Ubuntu: fondo de pantalla negro tras cambiar resolución

9 comments
Trasteando con diferentes entornos de escritorio y personalizándolos, al final conseguí que el fondo de pantalla no se mostrase correctamente y que al cambiar la configuración de los monitores (sí, porque uso dos pantallas), el fondo de pantalla se mostraba así:


Probé a borrar 'gnome-tweak-tool', desinstalar 'gnome-shell', volver a unity... nada funcionaba.

Solución

Abrimos un terminal y ejecutamos el siguiente comando:
$ gsettings set org.gnome.settings-daemon.plugins.background active true

Instalar Gnome 3 y Gnome-Shell en Ubuntu

Leave a Comment

Hoy vamos a instalar de manera muy sencilla Gnome 3, un entorno alternativo para todos aquellos que no os guste Unity por algún motivo.

Personalmente veo a Unity algo 'lento' y con ciertos fallos visuales que no me agradan. Por el contrario lo único que no me gusta es el launcher, ya que el aspecto que trae por defecto me parece bastante bonito, pero aún así quiero probar otros entornos has encontrar una combinación de entorno/lanzador que me agrade.

A Gnome3 lo veo más rápido aunque algo 'basto', pero supongo que con un poco de 'customización' se arreglará, ya que Gnome nos permite instalar tanto temas como extensiones.

Instalar Gnome 3

Añadimos el repositorio de Gnome e instalamos Gnome:
sudo add-apt-repository ppa:gnome3-team/gnome3-next
sudo apt-get update
sudo apt-get install gnome-shell ubuntu-gnome-desktop
Durante la instlación os pedirá seleccionar el gestor de ventanas 'lightdm' (unity) o 'GDM' (Gnome). Podéis seleccionar el que más os guste y posteriormente podréis cambiar entre ellos (enlace al tutorial).

Una vez instalado cerramos sesión y encima del recuadro donde metemos la contraseña hay un botón que al pincharlo nos permitirá cambiar entre los entornos instalados.

Instalar Gnome Apps

Las Gnome Apps son un set de aplicaciones propias que no se consideran estables del todo. A mi parecer son dispensables totalmente. Añadimos los repositorios:
sudo add-apt-repository ppa:gnome3-team/gnome3-staging
sudo add-apt-repository ppa:gnome3-team/gnome3
sudo apt-get update 
sudo apt-get dist-upgrade
Instalamos:
sudo apt-get install gnome-weather 
sudo apt-get install gnome-music 
sudo apt-get install gnome-maps 
sudo apt-get install cheese 
sudo apt-get install gnome-documents

Desinstalar Gnome 3

Si te has cansado o algo no funciona, tan sólo escribe:
sudo ppa-purge ppa:gnome3-team/gnome3-next
sudo ppa-purge ppa:gnome3-team/gnome3-staging
sudo ppa-purge ppa:gnome3-team/gnome3
sudo apt-get remove gnome-shell ubuntu-gnome-desktop
Si se queda alguna aplicación por desinstalar hacedlo manualmente.

Instalar Apache, MySQL y PhP en Ubuntu

Leave a Comment
Vamos a montar nuestro servidor web casero. Para ello vamos a instalar lo básico para que sea funcional y otro post lo dedicaremos a la configuración acerca de la seguridad de estos.
Abrimos una terminal y lo primero de todo es instalar el servidor web apache.

Apache

sudo apt-get install apache2
Una vez instalado comprobamos que funcione. Para ello nos conectamos (desde el navegador) a http://127.0.0.1.

PhP

Bien, ahora instalamos el módulo de php:
sudo apt-get install php5 libapache2-mod-php5
Reiniciamos el servidor:
sudo service apache2 restart
Abrimos nuestro gestor de archivos y nos vamos a "/var/www" la carpeta donde se alojan los archivos del server (o "/var/www/html" si es ubuntu 14.04).
Para poder crear un arachivo y comprobar que php funciona tenemos que darnos permisos y establecer el grupo: (sustituir "USUARIO" por el vuestro)
sudo chown -R USUARIO:www-data /var/www

sudo chmod -R 755 /var/www
Procedemos a crear el archivo "info.php" para comprobar que todo funciona correctamente:
sudo gedit /var/www/info.php
Ahora copiamos esta línea de código y guardamos:
 <?php phpinfo(); ?> 
Nos metemos en esta url para ver que todo va bien.

http://127.0.0.1/info.php

Si ha funcionado nos debe de aparecer la informacion de la configuración de php así como los módulos intalados.

MySQL

Ahora instalaremos tanto el cliente como el servidor de MySQL:
sudo apt-get install mysql-server mysql-client
Pedirá la clave para acceder como "root" y que la confirméis. Ahora instalaremos estos módulos adicionales (MySQL, CURL, etc.):
sudo apt-get install php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl
Reiniciamos de nuevo el server:
sudo service apache2 restart
Y voilà, todo listo. Ya tenéis vuestro servidor en marcha: en la carpeta "/var/www" podéis crear un archivo "index.html" o "index.php" que se cargará cuando desde el navegador accedais a "localhost" o "http://127.0.0.1". También podéis acceder desde otro dispositivo conectado a la misma red local conectándoos a la ip del ordenador en el que está montado el servidor (si no la sabéis utilizar el comando ifconfig).

En los próximos hablaremos de phpMyAdmin y de la configuración.