Friday, March 5, 2010

Que es synergy?

Synergy es una aplicacion que permite compartir un solo teclado y un raton entre diferentes computadoras, aun con diferentes sistemas operativos y sin la necesidad de un equipo especial, solamente acceso a la red. La idea es aliviar a quienes tiene que atender multiples sistemas y cada uno de ellos tiene un teclado, un raton y su respectivo monitor o pantalla.

El programa es simple, solo require de la configuracion de un server en una de las computadoras, y luego clientes que se conectan a esta por medio de la red, luego solo es cuestion de apuntar el mouse a la pantalla deseada y listo. Synergy tambien combina el porta papeles (clipboard) de las diferentes computadoras en uno solo, de esa forma es posible hacer cut-paste entre los diferentes sistemas. Ademas permite sincronizar los protectores de pantalla, de esa forma todos se activan o desactivan al mismo tiempo.

Modo de empleo

Paso 1. Seleccione la computadora que sera el servidor, o sea, la computadora que compartira el teclado y el raton con las demas, en mi caso, tengo dos computadoras, el desktop y la laptop, asi que la desktop es la que funciona como server.

Paso 2. Instalacion del programa, aqui depende del sistema, pero el programa es soportado en vario SO como Win, MacOS, Linux y Unix, asi que seleccione el mejor metodo de acuerdo a sus necesidades.

Paso 3. Configuracion del servidor. Primero es necesario crear un archivo de configuracion con los detalles de los sistemas involucrados y sus ubicaciones, un ejemplo de uno de estos archivos es el siguiente, su nombre es synergy.conf:


section: screens
desktop:
laptop:
end
section: links
desltop:
right = laptop
laptop:
left = desktop
end


Donde desktop y laptop son los nombres en la red de los sistemas a conectar, es necesario verificar que estos nombres puedan resolverse ya sea por medio local (/etc/hosts) o por medio de un DNS.

Luego se inicia el servicio que atendera a los clientes por medio del comando:

synergys -f -c synergy.conf


Lo anterior ejecutara el server y mostrara lo que esta sucediendo mientras se conectan otros clientes; al momento de configurar el sistema es recomendable hacer uso de la opcion -f para resolver errores, una vez estos han sido resueltos, se puede cambiar -f por -d para ejecutarlo como un daemon del sistema.
En el caso de Windows, hay una aplicacion grafica que configura todo lo anterior.

Paso 4. Iniciar los clientes.
Para iniciar los clientes en Unix/Linux/Mac simplemente se ejecuta el siguiente comando:


synergyc -f desktop


Donde desktop es el hostname de la maquina que esta compartiendo el teclado, en Windows el programa Synergy se encarga de conectar el cliente con el servidor. Es importante notar que el cliente debe ser capaz de resolver el nombre de la maquina servidor por medio local (/etc/hosts) o por medio de un DNS.

Demo:
http://www.youtube.com/watch?v=Id3GHAruhAk

Website:
http://synergy2.sourceforge.net/index.html

Wednesday, March 3, 2010

Usos del comando test

El comando if del Bourne Shell fue disenado para trabajar con comandos, y dado que en todos los scripts siempre es necesario comparar valores (numeros, cadenas de texto, archivos) el Bourne shell incluyo el comando test

Dependiendo del tipo de valores pasados al comando, este puede comparar valores, verificar permisos en archivos, o inclusive verificar la existencia de archivos.

Para indicarle al comando el tipo de comparacion por hacer, se debe pasar las opciones adecuadas al momento de contruir la sentencia que se desea verificar, asi el comando usa estos parametros para determinar que tipo de comparacion tiene que realizar. Luego el comando test termina, y devuelve el numero 0 si la expresion fue evaluada como verdadera, de lo contarrio un valor de 1 si la sentencia fue evaluada como falsa. Si dentro de la expresion se ha cometido un error, entonces el comando devolvera un valor mayor que 1.

El siguiente ejemplo muestra el comando test en una comparacion de valores numericos:

x=5
y=10
echo -n "test -eq: "
if (test $x -eq $y) then
echo "x=y"
else
echo "x diferente de y"
fi


El siguiente ejemplo muestra como comparar cadenas de texto:

cadena="Hola mundo"
echo "test -z: "
if (test -z $cadena)
echo "Longitud de la cadena es 0"
else
echo "Longitud de la cadena no es 0"
fi


Este ejemplo determina si un archivo existe o no:

archivo="/etc/samba/smb.conf"
echo "test -f: "
if (test -f archivo) then
echo "Archivo existe"
else
echo "Archivo no existe"
fi


Mas informacion sobre el comando y que otros tipos de opciones de comparacion hay consulte el manual mediante el siguiente comando:

man test


Para finalizar, posiblemente en muchos de los script que hemos visto, el comando test es reemplazado por su comando equivalente que es el simbolo [, si este es otro comando que existe como tal en el sistema, sino intenten el siguiente comando para ver donde se encuentra:


$which [
/usr/bin/[


Asi, podemos tomar uno de los ejemplos anteriores se convertiria en:

archivo="/etc/samba/smb.conf"
echo "test -f: "
if [ -f archivo ]; then
echo "Archivo existe"
else
echo "Archivo no existe"
fi


Con respecto al ejemplo anterior, es necesario dejar un espacio en blanco despues del "[" y antes del "]", y luego es necesario un punto y coma ";" luego del simbolo "]" y antes de la palabra then, o sino pueden bajar la palabra then a la siguiente linea y no necesitan en simbolo ";"

Hasta la proxima.

Thursday, February 25, 2010

Que es Arduino?



http://www.arduino.cc/

Arduino es un prototipo de circuito electronico y programas de uso libre, flexible y facil de usar. Orientado a quien quiera desarrollar su creatividad, disenadores, artistas, pasatiempo, etc. Arduino puede interactuar con su entorno, gracias a una variedad de sensores, asi como puede interactuar con el mismo por medio de luces, motores, etc. El microprocesador en el circuito es programado mediante el lenguaje Arduino (basado en Wiring) y el ambiente de desarrollo de aplicaciones tambien llamado Arduino (basado en Processing). Los proyectos pueden hacer uso simplemente del circuito, o pueden comunicarse con otros programas de computadoras (ej. Flash, Processing, MaxMSP)

El circuito puede construirse facilmente o puede comprarse ya armado; los programas necesarios para su uso pueden ser bajados de Internet y su uso es libre. Archivos de diseno del circuito estan disponibles bajo una licencia de codigo abierto, brindando la oportunidad de adaptarlos a cualquier necesidad.



Arduino is an open-source electronics prototyping platform based on flexible, easy-to-use hardware and software. It's intended for artists, designers, hobbyists, and anyone interested in creating interactive objects or environments.

Arduino can sense the environment by receiving input from a variety of sensors and can affect its surroundings by controlling lights, motors, and other actuators. The microcontroller on the board is programmed using the Arduino programming language (based on Wiring) and the Arduino development environment (based on Processing). Arduino projects can be stand-alone or they can communicate with software on running on a computer (e.g. Flash, Processing, MaxMSP).

The boards can be built by hand or purchased preassembled; the software can be downloaded for free. The hardware reference designs (CAD files) are available under an open-source license, you are free to adapt them to your needs.

Wiki on a Stick (Espanol/English)


Si eres de aquellas personas que siempre andan cargando toda su documentacion o notas donde quiera que van, aqui hay una posible solucion a este problema, se llama Wiki on a Stick!. Tal y como su nombre lo indica, este es un proyecto que ofrece un wiki completamente funcional basado en web y lo mejor de todo, es para llevar. Este esta disponible en un archivo Zip, luego que se descomprime, el resultado es un archivo HTML.

Este simple archivo es todo lo que se necesita, el wiki se encuentra inmerso en un archivo XHTML, el cual utiliza JavaScript y CSS para hacer funcionar el Wiki, asi como lograr que este funcione tanto desde el web como localmente. Solamente abra el archivo desde su navegador favorito (dando doble click en el) y el wiki esta listo para utilizarse, la documentacion y una guia estan ahi mismo disponibles para comenzar a utilizarlo.

Mas informacion se puede encontrar en el sitio web del proyecto: http://stickwiki.sourceforge.net

ooo OOO ooo

If you fancy taking your own customised pile of documentation and notes wherever you go, there's a perfect solution called Wiki on a Stick. As its name implies, this is a project that offers a go-anywhere web-based wiki that's entirely self-contained, and can be used for all the same things a full fat wiki can. The package is provided as a Zip archive, and after you've unzipped this, usually with a double click, you'll find a single .htm file remains.

This single file is all there is to it. The entire package is a cleverly constructed XHTML file, which uses both JavaScript and CSS to build a complete wiki that works online and offline. Just double-click to load it into your default browser. You're now running the wiki, and everything you need is right in front of you, including the documentation and a guide to getting started with the software.

More information can be found at their website: http://stickwiki.sourceforge.net/


Saturday, February 20, 2010

Que es Copyleft?


http://www.gnu.org/copyleft/

Copyleft is un metodo de proposito general para hacer que un programa o cualquier otro tipo de producto sea libre, asi como sus posteriores modificaciones o extensiones.

La forma mas sencilla de hacer que un programa sea libre es hacerlo del dominio publico, sin ningun derecho reservado por parte del autor. Esto permite a las personas compartir el programa, asi como sus mejoras, si asi lo desean. Pero ademas permite incluso a aquellas personas que cooperan o no con el proyecto, convertir el programa en propietario. Ellos podran hacer cambios al proyecto y redistribuir el nuevo producto con fines comerciales. Las personas que hacen uso de este nuevo programa modificado no tienen las mismas libertades que el autor original propuso, puesto que estas fueron eliminadas.

En el proyecto GNU, el objectivo es dar a los usuarios la libertad de distribuir y modificar/mejorar los programas GNU. Si los intermediarios pudieran quitar estas libertades, tendriamos muchos usuarios, pero sin ninguna de las libertades antes mencionadas. Por esa razon, en lugar de colocar los programas GNU al dominio publico, se protegen con "copyleft". De esa forma, cualquiera que redistribuya el programa, con o sin modificaciones, debe pasar los mismos derechos de distribuir y modificar. Copyleft garantiza que cada usuario tendra las mismas libertades que el original.

Copyleft tambien brida un incentivo a los programadores a contribuir al softare libre. Programas libres como el compilador GNU de C++ existen gracias a esto. Al mismo tiempo, copyleft ayuda a los programadores que deseen contribuir con mejoras a programas libres a obtener permisos para hacerlo; estos programadores usualmente trabajan para companias o universidades que harian lo que fuese para aumentar sus ganancias. Un programador puede querer contribuir sus cambios a la comunidad, pero su empleador podria querer convertir esos cambios en una nueva version del programa en formato propietario. Pero cuando explicamos a los empleadores que es ilegal distribuir la nueva version modificada como software propietario, el empleador usualmente decide darlo a la comunidad en lugar de desecharlo.

Para decir que un programa esta protegido por copyleft, tenemos primero que decir que sus derechos estan reservador; luego agregamos los terminos de como se distribuye, los cuales son elementos legales que le permiten a los usuarios los derechos de uso, modificacion y redistribucion del codigo del programa o cualquier otro programa/proyecto derivado de este, pero solamente si los terminos de distribucion no han sido cambiados. Asi el codigo y las libertades se convierten en inseparables.

Desarrolladores de programas propietarios usan los derechos reservados para eliminar libertades al usuario; en cambio copyleft usa los derechos reservados para asegurar que estas libertades no desaparezcan. Por esa razon el cambio de direccion del nombre a copyleft.

Copyleft es un concepto general, pero este como tal, no pueden ser usados de forma directa; solamente se puede hacer uso de el mediante una implementacion particular del concepto. En el proyecto GNU, los terminos de distribucion que se utilizan para la mayor parte de programas esta contenida en la GNU GPL (General Public License, por sus siglas en ingles).

Una forma alternativa de copyleft, es la GNU Lesser General Public License (LGPL), que se aplica a algunas librerias GNU.

La GNU Free Documentation License (FDL) es otra forma de copyleft destinada a manuales, libros de texto o cualquier documentacion, permitiendo la libertad de copiar y redistribuirlos, con o sin modificaciones y de forma comercial o gratuita.

Una copia de la licencia apropiada es incluida en muchos manuales y en cada porcion de codigo GNU disponible.

Todas estas licencias estan disenadas de tal forma que puedan ser aplicadas facilmente a sus propios proyectos, asumiendo que usted es la persona que tiene el derecho sobre el producto. Usted no tiene que modificar la licencia para tal motivo, solamente incluya una copia de la licencia en el trabajo/codigo y agregue notas en los codigos fuentes para hacer referencia a la licencia bajo la cual el codigo esta disponible.

El hacer uso de los mismos terminos de distribucion en diferentes programas hace que la copia de codigo entre los diferentes programas sea mas facil. La licencia Lesser GPL, version 2, incluye una clausula especial que permite cambiar los terminos a los de la licencia GPL ordinaria, de esa forma se puede copiar codigo a otros programas que estan bajo la licencia GPL version 3. La version 3 de la licencia Lesser GPL se fundamenta en una excepcion a la GPL version 3, creando asi compatibilidad automatica.

Si usted desea cubrir sus programas mediante la licencia GNU GPL o la GNU LGPL, por favor lea la pagina de instrucciones para licenciar sus programas (utilice el enlace que se muestra abajo) para mayor informacion al respecto y su uso. Por favor, utilice el texto completo de la licencia, su uso parcial no es permitido y no garantiza su aplicacion.

http://www.gnu.org/copyleft/gpl-howto.html

screen: un multiplexor de terminales y algo mas...


screen se puede decir que es un multiplexor de terminales, mediante su uso, se puede ejecutar cualquier numero de aplicaciones interactivas en la consola, como shells, aplicaciones basadas en ncurses, etc., y lo mejor de todo, desde una sola terminal. Esta capacidad es la que esta atrayendo a mas y mas personas a usar screen como una herramienta necesaria en la administracion/monitoreo de sistemas.

Otras de las caracteristicas importantes de screen es su capacidad de desconectarse de las diferentes ventanas, lo cual permite en casos extremos que cualquier aplicacion aun ejecutandose en alguna de ellas, continue funcionando en caso que accidentalmente cerremos la ventana de la terminal donde estamos trabajando, inclusive persiste luego de desconectarnos del sistema (logoff). Posteriormente podemos regresar y conectarnos a todas las ventanas (programas, conecciones remotas, compilacion, etc) que hayamos tenido abiertas, si es que aun no han concluido, seguiran ejecutandose normalmente.

Para instalar el programa, simplemente hagamos una busqueda del paquete screen en nuestro programa/administrador de paquetes favorito y acorde a la distribucion.

Iniciamos screen desde una terminal, ejecutando el comando: screen

Posiblemente un mensaje de ingreso a screen sea presentado, el titulo de la terminal tambien pueda que cambie para identificar que screen se esta ejecutando y se encuentra en una determinada ventana representada por un numero mayor o igual que cero.

Cada programa ejecutandose bajo screen se asocia a una ventana, y cada ventana es identificada por un numero, ejecutemos algun comando en esta ventana para poder identificarla despues cuando nos estemos trasladando entre ventanas.

Creamos otra ventana, la numero 1, para ello presionamos la combinacion en el teclado: ctrl+a c; para explicar un poco esto significa presionamos al mismo tiempo ctrl y la tecla a, y luego presionamos la tecla c (por Create)

Ahora tenemos dos ventanas, el contenido de la ventana anterior desaparecio, puesto que ahora estamos en la ventana #1, para regresar a la ventana anterior tenemos varias opciones:
- Puede usar la combinacion ctrl+a p (previous)
- la combinacion ctrl+a n (next) hasta regresar a la ventana 0
- ctrl+a ctrl+a :nos regresa a la ventana donde nos encontrabamos anteriormente
- ctrl+a N : donde N es el numero de la ventana a donde queremos movernos
- ctrl+a " : esta combinacion nos mostrara un listado de las ventanas existentes, en la cual podremos movernos haciendo uso de las teclas de flechas y seleccionando mediante Enter la ventana que deseamos utilizar.

Las ventanas que tenemos activas las podemos nombrar para identificar que accion se desarrolla en cada una de ellas, para eso podemos hacer uso de la combinacion de teclas ctrl+a A (mayuscula), una linea con el nombre de la ventana aparecera en la parte de abajo, donde podremos especificar nuestro propio nombre.

En el caso que alguna de las sesiones se quede congelada o la aplicacion se trabe, la sesion puede cerrarse mediante la combinacion ctrl-a K

Como mencionamos anteriormente screen tiene la capacidad de desconectarse de las ventanas activas y las aplicaciones o conecciones existentes en ellas persistiran, para desconectarse de screen usamos la combinacion ctrl+a d. La desconeccion se puede realizar de igual forma cerrando la terminal donde estamos ejecutando screen. Ninguna de las aplicaciones en las diferentes ventanas deberia verse afectada por esta desconeccion, para confirmar esto, abramos otra terminal, si es que cerramos la terminal que estabamos usando, y ejecutamos el comando: screen -r, veremos como las ventanas se restablecen si ejecutamos la combinacion ctrl+a ", con ellos confirmamos que todas se encuentran activas y los programas aun se encuentran funcionando, como si nunca nos hubiesemos desconectado.

Para finalizar, screen no es facil de eliminar o cerrar, para salir de screen hay que cerrar cada una de las ventanas que se tengan abiertas, ya sea cerrando el shell en cada una de ellas o la aplicacion que se este ejecutando.

Screen es una herramienta muy util para mantener el control de diferentes aplicaciones o conecciones a sistemas remotos, monitoreo, etc.; la aplicacion tiene mas opciones, asi que les dejo la curiosidad para que ustedes mismos las descubran, usando la combinacion ctrl+a ?, screen nos mostrara todas las opciones y combinaciones disponibles, y por ultimo no olvidemos que el manual siempre esta a la mano mediante el comando man screen.

Hasta la proxima.

Tuesday, November 24, 2009

Demasiadas distribuciones...

En los ultimos dias de Octubre y principios de Noviembre del 2009 nos vimos inundados de distintos lanzamientos de varias de las distribucines mas populares (y no tan populares), aqui la lista de las versiones disponibles en los ultimos dias:
  • Ubuntu Family 9.10
  • Fedora 12
  • Mandriva Family 2010
  • SuSE 11.2
  • Knoppix 6.2
  • PartedMagic 4.6
  • BluwWhite64
  • NuTyx 2009.1
  • Venenux
  • Momonga 6.2

Las distribuciones de Linux ya casi llegan a la categoria de estrellas en el firmamento, son tantas que es dificil recordarlas todas, o muchas nunca se habian escuchado o estan por conocerse, pero dejando de lado la cantidad de distribuciones, lo que eso demuestra es el interes de las personas en promover el uso de linux, muchas de estas distribuciones son desarrolladas con el interes de resolver una necesidad particular u orientadas hacia un grupo de persona en particular, un grupo social o una determinada aplicacion o problema, como por ejemplo Venenux que es una distribucion venezolana, orientada al publico de habla hispana, o como algunas otras distribuciones que estan orientadas a personas de ciertas creencias religiosas, etc.

Linux ha recorrido un largo camino desde sus inicios alla por los 90's donde las distribuciones eran contadas, y la mas conocida en esa epoca era Slackware; las herramientas han madurado a niveles casi similares a herramientas comerciales, ahora una distribucion de Linux puede facilmente reemplazar a una computadora usando Windows, el desarrollo de aplicaciones se ha extendido increiblemente y el soporte al ambiente de usuario ha mejorado mucho, pero aun esta lejos de compartir cuotas importantes de usuarios ante sistemas como Windows o MacOS, quienes dominan el mercado de computadoras actualmente, pero veremos que pasa en los proximos 10 anios, si es que no nos ha caido ningun meteorito y los seres humanos aun seguimos aqui en este planeta, sera interesante ver el desarrollo de Linux y las distribuciones en los proximos 10 anos.

Nos vemos en 10 anios.