jueves, 7 de junio de 2012

Enlaces con las redes sociales en tu página web

Debido al gran auge de la web 2.0, hoy en día es imprescindible que nuestra página web cuente con un botón para poder compartir contenidos en las principales redes sociales. A continuación se describen de forma muy breve como implementar rápidamente los botones "share" de Facebook, Twitter y Google +1 en nuestra web. Para opciones avanzadas, consultar los enlaces correspondientes.

Facebook

https://developers.facebook.com/docs/share/


Este botón se ha implementado mediante la etiqueta <a>, especificando en su atributo share_url la dirección del sitio web que se quiere compartir:

<a href="" name="fb_share" share_url="http://raulbcneo.blogspot.com.es" type="icon">
<script src="http://static.ak.fbcdn.net/connect.php/js/FB.Share" type="text/javascript"></script>

Twitter

 https://twitter.com/about/resources/buttons#follow


El boton de twitter se crea insertando el código HTML que se genera con el asistente de creación de botones de Twitter que está en el enlace de arriba.

Google +1

http://www.google.com/webmasters/+1/button/


Google también dispone de un asistente para crear su botón Google +1. Puedes acceder a él a través del enlace anterior.

Información extraída de Desarrollo web.

lunes, 4 de junio de 2012

Backups incrementales con rsync


Vamos a ver un ejemplo de backup incremental con rsync, sincronizaremos el directorio /home/destino con el directorio /home/origen:

$ rsync -avvbP --delete --backup-dir=/home/BACKUP/$(date +%y-%m-%d_%H.%M) /home/origen/ /home/destino

La opción --delete indica que se deben eliminar de destino los ficheros que fueron eliminados de origen.
La opción --backup-dir indica que se deben copiar en el directorio /home/BACKUP/'fecha' los ficheros de destino que van a ser actualizados antes de sobreescribirlos con los nuevos cambios.

Supongamos que destino y origen estaban sincronizados con rsync antes de realizar cambios en origen. Si modificamos el fichero /home/origen/prueba.txt y ejecutamos el comando anterior, rsync guardará el fichero /home/destino/prueba.txt en /home/BACKUP/'fecha' y luego copiará prueba.txt de origen a destino.

Problemas al hacer rsync de un dispositivo EXT3 a un dispositivo FAT32

Extraído del blog de Juan Salvador Sánchez


Tratando de hacer un backup con rsync de una unidad en EXT3 a un disco duro USB en FAT32 he podido apreciar que en el backup siempre faltan archivos y que rsync siempre copia de nuevo todo el contenido incluso cuando no ha habido cambios.

La razón de todo esto está relacionada con el formato FAT32. Por un lado en FAT no es posible tener en el mismo directorio dos carpetas con el mismo nombre. Esto tampoco es posible en EXT3 pero al ser esta case sensitive te permite tener una carpeta "pruebas" y otra "PRUEBAS" en el mismo directorio. El resultado al tratar de copiar ambas carpetas al disco FAT32 es que la primera se copia correctamente pero la segunda es excluida de la copia. Optar por nombres distintos en las carpetas es la solución además de una práctica recomendada.

En cuanto a que rsync, siempre hace un volcado completo incluso cuando los archivos no han cambiado, se debe a que en FAT32 para almacenar la fecha en la que se ha modificado un archivo se dispone de una precisión máxima de solo 2 segundos. Esto hace que no coincida la fecha exacta de EXT3 con la fecha aproximada de FAT32, y dado que Rsync se basa en la comparación de estas fechas para determinar si el archivo ha sido modificado o no desde la última copia, decide volver a hacer el backup.

Para estos casos Rsync cuenta con dos soluciones. La primera por medio del parámetro --size-only, con el que solo considerará que deben copiarse de nuevo aquellos archivos que han cambiado su tamaño, pero no su fecha. Y la segunda y más recomendable por medio del parámetro --modify-window=1, que permite especificar un margen de tolerancia entre fechas, en este caso de 1 segundo.

En tal caso quedaría como sigue:

$ rsync -avvbP --modify-window=1 --delete --backup-dir=/media/USB/BACKUP/$(date +%y-%m-%d_%H.%M) /home/origen/ /media/USB/destino
En estos casos se recomienda que el disco duro USB esté en formato EXT3, con lo que no solo no hará falta nada de todo esto sino que además el backup mantendrá intactos los permisos.

viernes, 27 de enero de 2012

Pegar texto sin formato en Word

Todos conocemos cómo funciona el copy-paste para copiar y pegar información de una aplicación a otra. En este caso, os enseño un truco para pegar texto sin formato en Word de forma rápida, sin tener que pulsar en Edición > Pegado especial... > Texto sin formato > Aceptar.

Se puede activar una opción, para que, cuando copiemos un texto, en su parte inferior derecha aparezca un botón de menú con varias opciones de texto, entre ellas la de Conservar solo texto (equivalente a pegar texto sin formato).

Para activar esta opción, nos vamos al menú Herramientas > Opciones en Word, activamos la pestaña Edición y activamos la casilla Mostrar botones de la opciones de pegar. Aceptamos y desde este momento aparecerá el botón.
Información obtenida de la web Jóvenes Informáticos.

miércoles, 23 de noviembre de 2011

Shell Bash: Descomponer una ruta en directorios, nombre de archivo y extensión

El siguiente script (shell Bash) descompone una ruta en directorios, nombre de archivo y extensión.

#!/bin/bash

# Script para descomponer una ruta completa a un archivo o
# directorio, obteniendo
el nombre de archivo y extensión (si
# existen) y ruta hasta los mismos


for RutaCompleta in $1
do
# Comenzamos extrayendo la parte derecha desde el ultimo caracter
# "/", es decir, el archivo

NombreArchivo="${RutaCompleta##*/}"

# Longitud de la ruta es el total de caracteres menos el largo del
# nombre de archivo

LargoRuta="${#RutaCompleta} - ${#NombreArchivo}"

# Extraemos la ruta desde el caracter 0 hasta el caracter final de
# largo de ruta

RutaSola="${RutaCompleta:0:$LargoRuta}"

# Lo siguiente es extraer nombre de archivo
NombreSolo="${NombreArchivo%.[^.]*}"
# Extension se obtiene eliminando del nombre completo el nombre mas
# el punto

Extension="${NombreArchivo:${#NombreSolo} + 1}"

# Las 2 lineas anteriores fallan si no hay extension por lo que es
# necesario comprobar que no
se de el caso de que haya extension
# pero no nombre ya que en ese caso la ext seria el nombre

if [[ -z "$NombreSolo" && -n "$Extension" ]]; then
NombreSolo=".$Extension"
Extension=""
fi
done
# Este es el resultado del script
echo
echo "Este es el resultado del script:"
echo
echo La ruta completa es:
echo $RutaCompleta
echo
echo "Ruta.........: \"$RutaSola\""
echo "Nombre.......: \"$NombreSolo\""
echo "Extension....: \"$Extension\""
echo

Este código ha sido extraído de la web Archivos Log

martes, 22 de noviembre de 2011

Escribir bloques de código en Blogger

Para poder escribir bloques de código fuente legibles en una entrada de Blogger, hay que cambiar el estilo de la etiqueta HTML "code".

En la configuración del blog, hay que ir a la pestaña Plantilla > Edición de HTML. A continuación, se busca la etiqueta "</b:skin>" y justo encima se escribe el código CSS siguiente:

code {background:#EEEEEE; font-family: Trebuchet MS; display:block; border:1px solid #999999; padding:10px;}

Checksum XOR

El cálculo de checksum mediante XOR de una trama de datos es un método muy común para comprobar que no ha habido errores de transferencia por la red.

El código Java para calcular el checksum XOR de un String es el siguiente:

String mensaje = "MI MENSAJE";

// Preparar campo CC (XOR de los caracteres del mensaje)
int checkSum = 0;

for (i = 0; i < mensaje.length(); i++) {
checkSum ^= mensaje.charAt(i);
}

String CC = Integer.toHexString(checkSum); // CC es el checksum


Podéis utilizar la calculadora MTK NMEA para obtener online el checksum de una cadena de caractéres.