Categories
GNU/Linux Free Software & Open Source Tutorials & Tips

Como sincronizar archivos entre computadoras

Tengo una PC en mi casa y una laptop que me acompaña a todos lados. Muchas veces trabajo mas en mi laptop que en mi PC, pero cuando estoy en casa prefiero mi PC por el monitor y todo mas grande. El problema esta en que siempre tengo que estar mandando archivos de un lado a otro, borrando unos, actualizando otros, etc etc. Esto puede costarte horas de trabajo o de relajacion.

Una solucion clasica seria usar rsync para respaldar mi laptop en mi PC. El problema con esto es que rsync es unidireccional. Esto es, si hago cambios en mi PC, mi laptop nunca vera esos cambios a menos que yo mismo los haga…lo cual me regresa al problema de actualizacion de archivos.

Encontre una aplicacion muy buena que ayuda a resolver esta situacion: Unison.

Unison logo

Unison en un programa que sincroniza archivos ya sea entre carpetas locales o entre varias computadoras, via ssh, rsh o conexion por socket.

Explicare brevemente (un pequeño tutorial) de como usar Unison.

Primero, instalamos Unison en ambas computadoras. Si solo lo instalas en una, tendras un mensaje de error que dice: “lost connection” (penosamente, esto me tomo unos minutos en descubrir). Unison es compatible con Windows, Linux, BSD y MacOS X, por lo tanto puedes sincronizar archivos entre computadoras con diferentes sistemas operativos, algo bastante util.

En mi caso, tengo mi laptop y PC con Ubuntu Feisty, y Unison esta en los repositorios:

sudo aptitude install unison unison-gtk

Esto instala la aplicacion de linea de comandos y una interfaz grafica (GUI) para manejarlo mas facil (dependiendo de tus preferencias).

Una vez hecho esto en ambas computadoras, y asuimendo que tambien tienen ssh corriendo, podemos abrir unison desde el menu. En el caso de Kubuntu (mi caso) esta en K menu > Internet > Unison.

Unison elegir profile

Nos aparece una seleccion de profile, seleccionamos el default que ya viene ahi, y damos click en OK.

Aviso de primera vez

Como es la primera vez que corremos Unison nos aparece un warning que dice esto y otros detalles, damos click en OK.

elige un directorio local

Despues seleccionamos la carpeta local (o sea, la de la computadora donde estas) que queremos sincronizar. La carpeta se sincronizara con todos sus archivos internos, incluyendo sub carpetas. Si deseas ignorar alguna sub carpeta o archivos (como temporales o cosas asi) lo puedes hacer mas adelante.

selecciona host remoto

Luego nos pide la otra carpeta local o remota (o sea otra computadora) con la que vamos a sincronizar, y que protocolo se va a usar en caso de ser remota. En este caso yo prefiero usar ssh.

escribe tu password

Al dar click en OK, nos pedira el password del host al que vamos a conectarnos.

elige archivos y resuelve conflictos

Unison comenzara a ver los archivos de ambos lados y mostrara las diferencias. Cuando unison no sabe que hacer con el archivo, nos lo indicara con un signo de interrogacion rojo. Tendremos que atender el problema manualmente, diciendo si queremos los cambios de un lado o del otro. Aqui tambien podremos elegir si queremos ignorar algunos archivos o carpetas.

resuelve conflictos

Una vez resueltos los conflictos, damos click en el boton de Go, y la sincronizacion comienza. Ve a tomarte un cafe, o refresco, porque va a tardar un poco, dependiendo de que tantos archivos y del tamaño de lo que estes sincronizando, ah y la conexion.

En el statusbar en la parte de abajo de la ventana veremos el progreso de la sincronizacion.

Sincronizacion terminada

Listo, una vez completada la sincronizacion, puedes cerrar Unison y disfrutar de tus archivos actualizados en donde los necesitas.

Categories
Emacs GNU/Linux Free Software & Open Source Tutorials & Tips

Como publicar en tu blog desde Emacs

Weblogger es el modo de Emacs para hacer posts en tu blog. Los
blogs soportados son: Blogger, MetaWeblog, Moveable Type (WordPress) y
LiveJournal. En caso de que no tengas un blog, te crea una cuenta en
OpenWeblog.com, un sitio de hosting gratuito para tu blog.

Para usarlo, baja estos archivos, ponlos en tu directorio de archivos
de emacs lisp y cargalos en tu archivo de configuracion .emacs.

En Ubuntu, el directorio de archivos emacs lisp es

~/.emacs.d

Ahi pones los dos archivos, weblogger.el y xmlrpc.el, luego abres el archivo de configuraciones

.emacs

Si no lo tienes, crea uno con ese nombre, y escribe esto al final del archivo:


(load-file "weblogger.el")
(global-set-key "\C-cbs" 'weblogger-start-entry)

Y ya, con C-c b s (esto es Ctrl+c luego b luego s) te pone en un buffer nuevo en modo weblogger listo para escribir.

Para publicar, C-c C-c (Ctrl+c luego Ctrl+c) y publica directo al
blog.

Nota: cuando te pida la url de tu blog, es importante que pongas la direccion para accesar al archivo xmlrpc. Algo como tublog.com/xmlrpc.php por ejemplo.

Lo unico que me falta es ver como le agrego las categorias al post, pero eso ya son detallitos 😉

Es una manera muy rapida de publicar, y a mi gusto, mucho mas comoda
porque nunca me han convencido mucho escribir los posts o mis mails en
las aplicaciones web. Con un editor de textos es mucho mas practico.

Yo me la paso programando con esta excelente herramienta. La uso casi para
todo: html con validaciones y limpieza del codigo, desarrollo con ruby
on rails, programacion en python, C y C++, edicion de archivos de
configuracion, etc. Rapidamente se esta convirtiendo en la unica
herramienta que necesito en mi computadora, y lo mejor de todo es que
la puedo tener en todas las plataformas (linux, windows y mac). Pero
eso es otra historia.

Categories
Programming & Web Development Tutorials & Tips

Optimiza la concatenacion de strings en Ruby

En este post realizan un test de rendimiento en las diferentes operaciones de concatenacion de strings en Ruby.

Concluye con que para concatenar dos variables tipo string, la mejor (y optima) manera de hacerlo es asi:
string1 = "Hola "
string2 = "Mundo"

string1 < < string2

Y el resultado es:

"Hola Mundo"

Y si necesitamos un valor dentro de un string, lo hagamos asi:

variable = "palabra en variable"
string_largo = "este es una #{variable} dentro de un string largo"

y el resultado es:

"este es una palabra en variable dentro de un string largo"

Se me hizo buena idea tenerlo como referencia aqui, porque luego se me olvidan los tips…

Categories
Programming & Web Development Tutorials & Tips

Una platica de javascript

Una buena clase de javascript por Douglas Crockford

Categories
GNU/Linux Free Software & Open Source Tutorials & Tips

Como instalar beryl y Xgl en Ubuntu Edgy

Normalmente para esto, los apuntaria a la wiki de la pagina oficial de beryl project, pero como no hay documentacion en español, se me hace buena idea hacer un resumen de lo que hay en esa pagina, y darles mis comentarios al respecto.

Primero que nada, deben tener instalado los drivers de su tarjeta 3D de video. Esto es, si tienes una tarjeta nVidia (recomendable, porque sus drivers son mas compatibles con Linux que los de ATI) o una tarjeta ATI, instala los drivers adecuados y para verificar que todo esta en orden y listo para tener aceleracion gráfica, ejecuta esto en una consola:


glxinfo | grep direct

si al ejecutar eso, te dice:
direct rendering: Yes
ya estas del otro lado. Si no, pues hay que checar www.ubuntuforums.org para ver porque no tienes aceleracion grafica en tu tarjeta.

Una vez seguros de que ya tenemos aceleracion gráfica por parte de la tarjeta, ahora si, agregamos el repositorio (se vale decir asi en español?) en nuestro archivo /etc/apt/sources.list

deb http://ubuntu.beryl-project.org/ edgy main

Luego hay que agregar la llave gpg

wget http://ubuntu.beryl-project.org/[email protected] -O- | sudo apt-key add -

y por ultimo, actualizamos la lista de software disponible en los repositorios con:
sudo apt-get update

Luego, instalamos xgl y beryl:


sudo apt-get install xserver-xgl beryl emerald-themes

Ahora viene la parte interesante porque hay que crear unos scripts para iniciar xgl y beryl cuando inicias sesion de una manera automatica.

creamos un script para iniciar xgl:

sudo gedit /usr/local/bin/startxgl.sh

Aqui hay dos formas de hacer el script. Una es para las tarjetas nVidia, y la otra para las ATI. No se como funcione para otras tarjetas porque no tengo otras.

Si usas Gnome y nVidia, pon esto:

#!/bin/sh
/usr/bin/Xgl :1 -fullscreen -ac -br -accel xv:fbo -accel glx:pbuffer &
sleep 4  
export DISPLAY=:1 cookie="$(xauth -i nextract - :0 | cut -d ' ' -f 9)"
xauth -i add :1 . "$cookie"
exec gnome-session

si usas Gnome y KDE:

#!/bin/sh
/usr/bin/Xgl :1 -fullscreen -ac -br -accel xv:fbo -accel glx:pbuffer &
sleep 4  
export DISPLAY=:1 
exec startkde

para Gnome y ATI:

#!/bin/sh
Xgl -fullscreen :1 -ac -br -accel glx:pbuffer -accel xv:pbuffer &
sleep 4  
export DISPLAY=:1 cookie="$(xauth -i nextract - :0 | cut -d ' ' -f 9)"
xauth -i add :1 . "$cookie"
exec gnome-session

para Gnome y KDE:

#!/bin/sh
Xgl -fullscreen :1 -ac -br -accel glx:pbuffer -accel xv:pbuffer &
sleep 4  
export DISPLAY=:1 
exec startkde

Ahora hacemos el script ejecutable:
sudo chmod a+x /usr/local/bin/startxgl.sh

Luego creamos una sesion para Xgl. Esto es muy util para cuando hay problemas con beryl o xgl, simplemente cambias tu sesion de login en GDM y listo, tienes tu antiguo escritorio sin problemas.


sudo mkdir -p /etc/X11/sessions
sudo gedit /etc/X11/sessions/xgl.desktop

Y ponemos esto en el archivo:

[Desktop Entry]
Encoding=UTF-8
Name=Xgl
Exec=/usr/local/bin/startxgl.sh
Icon=
Type=Application

Ahora cuando inicies sesion, solo cambia por Xgl en lugar de Gnome (o KDE) y listo

beryl inicia con el comando beryl-manager

Pero te recomiendo que inicie automaticamente y solo cuando entres con la sesion Xgl. Para esto hay que crear un archivo

sudo gedit /usr/local/bin/start_beryl.sh

Le ponemos esto al archivo:

#!/bin/bash
#
# Start beryl-manager within gnome-session
#
if (( `ps -A -o comm | grep -c '^Xgl$'` == "1" )); then
       DISPLAY=:1 beryl-manager
       DISPLAY=:1 beryl-xgl
else echo "${0}: Error: beryl-manager not launched. Xgl not running?"
fi

Lo hacemos ejecutable sudo chmod a+x /usr/local/bin/start_beryl.sh y listo!

Con esto debes tener Xgl y beryl corriendo en tu sistema, y ademas de forma automatica cuando entres en la sesion Xgl.

Espero que les sirva esto, y no tengan ningun problema. Con estas instrucciones yo creo que lo mas dificil o con lo que mas se batalla será con la instalación de los drivers ATI (porque los nVidia son muy faciles de instalar).

En otro post pondre el script que yo uso para instalar los drivers ATI de una Xpress 200M (laptop)