domingo, 16 de febrero de 2014

Editores de texto y programación - mi perspectiva desde el uso, el abuso y la desazón

Todo estudiante de ciencias* pasa por aquella época de la vida donde debe programar (o por lo menos, intentarlo). Dejando de lado todas las peripecias asociadas con esta empresa, quiero concentrar esta entrada en mi experiencia personal con los editores de texto y los entornos integrados de programación (IDE).
* se habla de lo que se conoce.

Emacs

Emacs forma parte de la comunidad GNU. Si bien, es un editor de texto útil, la necesidad recurrente de atajos de teclado que no podía memorizar fácilmente me hacían perderle un poco el respeto.
Se comporta muy bien al trabajar desde consola, pero también ofrece una interfaz gráfica.
Una de las características más llamativas es la gran cantidad de plug-ins disponibles. Por ejemplo, hay un plugin para integrar emacs sistemas de control de versiones (como git), hay un plugin de WYSIWYG para la edición de textos en latex. La lista sigue, incluso hay plugins que ofrecen juegos de arcade.
No recomendaría este editor para los neófitos en la programación, suelo bromear diciendo que emacs es el editor de texto preferido de Davy Jones

Así se sienten los atajos de teclado demasiado largos

KDevelop

Fui usuario asiduo del entorno de escritorio KDE. Un día por recomendación de un amigo me enteré de la existencia de KDevelop, un entorno de desarrollo muy poderoso. Igual que emacs posee reconocimiento de sintaxis en varios lenguajes, y permite configurar control de versiones con git. Otra característica importante es el autocompletado de palabras, lo cual acelera el proceso de escritura. Toda una maravilla si se tiene suficiente RAM a disposición.
Pero como todo en la vida, no hay nada perfecto: los requisitos de memoria del KDevelop, así como una reciente racha de crashes hicieron que retomase mis intentos por utilizar un editor que había probado tiempo atrás: Vim

VIM (VI Improved)

Vim pareciera ser un editor de texto bastante simple, sin embargo, no hay que dejarse engañar. Puedo resumir diciendo que vim es uno de los editores de texto más potentes que he podido utilizar. Posee gran versatilidad en su sistema de comandos, además de reconocer la sintaxis de más de 200 lenguajes de programación (incluyendo TeX y Latex), permite una personalización muy amplia al punto de permitir cosas como definir sistemas de resaltado de sintaxis propios, esquemas de color y comandos personalizados. Comparándolo con emacs, vim utiliza instrucciones más simples y fáciles de recordar, tan sencillas que es posible programar usando una mano (obviamente son escasas las situaciones donde esto será necesario). Además de su versatilidad, la curva de aprendizaje es suave y basta con usarlo por algunas horas para acoplarse a esta "power tool" como lo llama su creador. Sin lugar a dudas, uno de los mejores editores que he utilizado.
Me llamó mucho la atención enterarme que vim forma parte de una campaña para apoyar niños en Uganda a través de donaciones. Buen trabajo equipo vim!!!

Vim: The power tool for everyone!
El proceso de personalización el editor vim toma tiempo, hay un sitio en particular donde se puede aprender como. Un amigo mío dispone de un repositorio en github donde publica un conjunto de configuraciones muy útiles para quienes programamos en C++, los invito a que se den una pasada por https://github.com/muzgash/vim


Y a que viene todo esto?

El proceso de programación y escritura debe ser una experiencia reconfortante, por lo tanto es importante disponer de un buen editor de texto. Para programar puede usarse cualquier editor de texto y cada cual elije el editor que más le convenga en función de sus necesidades particulares. Opté por mencionar los editores de texto más significativos entre los que he usado durante mis proyectos de programación (que consisten básicamente en aprendizaje de lenguajes). Dentro de los editores que he probado están UltraEdit(Windows), Geany (Un IDE escrito en GTK), Kate, y la lista se extiende.
Pese a todo, lo que importan son las habilidades de programación que se tienen, y no el editor se use para programar.

Enlaces de interés

  1. Página del proyecto GNU Emacs http://www.gnu.org/software/emacs/
  2. Página del proyecto KDevelop http://kdevelop.org/
  3. Página del proyecto VIM http://www.vim.org/about.php
  4. Repositorio de configuraciones de VIM https://github.com/muzgash/vim
  5. IDE Geany http://www.geany.org/
  6. Para aprender a usar vim http://code.tutsplus.com/articles/25-vim-tutorials-screencasts-and-resources--net-14631
  7. Para aprender más de otros editores

martes, 24 de diciembre de 2013

Accede a las particiones ext2/ext3/ext4 desde Windows

Como usuario de sistemas multiboot Windows/Linux, sé cuanto apesta la situación en que se necesita acceder a algún archivo de mis particiones ext4 de Debian, pero he iniciado el PC en Windows. La única solución que encontraba consistía en reiniciar el sistema y acceder a Debian directamente

Recientemente me enteré de la existencia de Ext2 File System Driver for Windows, un programa muy liviano que instala un servicio (el equivalente en Windows de los daemon de Linux), que me permite acceder a las particiones Ext4 desde Windows 7. El soporte para lectura de datos está completamente soportado, pese a ello, el soporte para escritura de datos está aún en fase experimental. (Nota: No probé la escritura de datos, así que no comento nada al respecto)

Instalando y configurando Ext2Fs


El proceso de instalación es igual que cualquier programa en Windows, (la rutina de "Siguiente, Siguiente, Siguiente... Finalizar")
Una vez instalado, al iniciar el programa tendremos la siguiente interfaz

Aquí aparece habilitada la unidad (E:)  que corresponde a mi /home en Debian.

Selecciono la partición de interés y elijo la opción "Change drive letter" lo cual es necesario para habilitar la partición

Se abre un menú como este. y elegimos "Add" para añadir una letra para la partición.
Aparece la "E" puesto que ya había configurado mi partición, pero este menú debería estar vacío inicialmente.

Luego de presionar "Add" nos aparece esta ventana donde podemos elegir  la letra para la nueva partición que Windows debe reconocer, además del método de montaje. Yo elegí el modo automático, pero es posible destinar un punto de montaje permanente.

Una vez terminamos de definir la letra de partición y la letra que la identificará, finalizamos el proceso con el botón "Ok" y el botón "Done" a continuación.



Para habilitar el acceso a la(s) unidad(es) recién creada(s) debemos seleccionar "Tools" en la barra de menú y elegir "Service Management" en el menú desplegable

Debemos presionar el botón "Start" (que aparece deshabilitado en la imagen) para que el proceso inicie.
Una vez finalizado el proceso anterior deberíamos ver las unidades creadas al abrir el explorador de Windows. Aquí vemos la unidad (E:) y como Windows la reconoce como un sistema de archivos EXT3

Enlaces de interés


  1. Sitio web del proyecto http://www.ext2fsd.com/
  2. Repositorio en sourceforge http://sourceforge.net/projects/ext2fsd/
  3. Descarga directa http://sourceforge.net/projects/ext2fsd/files/latest/download

miércoles, 6 de noviembre de 2013

Skype 4.2 en Debian Testing 7 (Jessie)

No soy usuario asiduo de los servicios de VoIP, pero en las peripecias de la vida terminé con una cuenta en Skype [1]. Como Debianita, decidí darle una oportunidad a Skype en mi sistema.

Desde la versión 6.0 de Debian se implementó la modalidad "multiarch"*[2] que permite correr aplicaciones de distintas arquitecturas en un mismo sistema,por ejemplo y como en mi caso, tener el sistema amd64 y correr el Skype que viene destinado a arquitecturas i386.

Deste este enlace es posible descargar Skype, la opción sería "Debian multiarch" lo que nos descargará un .deb que tendremos que instalar con dpkg.
Una manera alternativa sería ejecutar desde la consola el comando

$ wget -O skype-install.deb http://www.skype.com/go/getskype-linux-deb

Para instalar el paquete es preciso habilitar la arquitectura i386. Con permisos de super usuario (root) añadimos la arquitectura usando el comando

# dpkg --add-architecture i386

Luego actualizamos el almacén de paquetes para incluir los paquetes de la arquitectura i386

# apt-get update

Si utiliza el sistema PulseAudio para administrar el sonido ( como lo requiere el entorno XFCE4 por ejemplo) se recomienda instalar la librería libpulse para i386

# apt-get install libpulse0:i386

Ahora, instalamos el paquete .deb que descargamos usando dpkg (Sobra decir que debemos estar en el directorio que contiene dicho archivo, y que el nombre que uso aquí es ilustrativo, para mi caso fue skype-debian_4.2.0.11-1_i386.deb)

# dpkg -i skype-descargado.deb

Reportará que hay dependencias insatisfechas, lo cual resolveremos con

# apt-get -f install

Con lo cual finaliza la instalación.


Edición(04-Abril-2015)
Puede ocurrir que Skype no encuentre alguna librería, en mi caso fue la librería compartida "libGL.so.1".
La solución fue instalar la verión i386 de la librería libgl para mi tarjeta gráfica, disponible en los repositorios de Debian. Si skype no inicia, usando el comando "ldd" en el ejecutable ("/usr/bin/skype") puede revelar las librerías faltantes.


Referencias


  1. www.skype.com
  2. https://wiki.debian.org/Multiarch
  3. https://wiki.debian.org/skype
*La definición que da la Debian-Wiki es la siguiente
Multiarch is the term being used to refer to the capability of a system to install and run applications of multiple different binary targets on the same system. For example running a i386-linux-gnu application on an amd64-linux-gnu system. This example is the most common case, but many other working combinations are possible, such as armel and armhf.
Multiarch also simplifies cross-building, where foreign-architecture libraries and headers are needed on a system during building.