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.