GNU-social-mode para Emacs mediante OAuth


Este post es similar a uno anterior sobre Identi.ca-mode para Emacs, pero con la diferencia que ahora la conexión va ser mediante OAuth (ademas del cambio de nombre del modo para Emacs).

Teniendo GNU Emacs y Git instalado, hacemos lo siguiente:

1.- Descargamos GNU Social mode para Emacs desde http://git.savannah.gnu.org/cgit/gnu-social-mode.git mediante Git.

git clone git://git.sv.gnu.org/gnu-social-mode.git

2.- Para hacer la conexión mediante OAuth descargamos emacs-oauth mediante Git.
Ojo: Si lo instalamos mediante ELPA o lo compilamos puede que te de error al usarlo debido a un bug existente.

git clone https://github.com/psanford/emacs-oauth

3.- Copiamos gnu-social-mode y emacs-oauth a nuestro directorio de Emacs.

cp -r gnu-social-mode emacs-oauth ~/.emacs.d/

4.- Para poder hacer uso de OAuth tenemos que generar primero nuestras claves de consumidor en la instancia en la que estamos registrado. Para eso iniciamos sesión y en la sección de configuración registramos la aplicación. La dirección va a ser algo similar a SERVIDOR/settings/oauthapps, donde SERVIDOR va a ser el dominio donde estés registrado. Luego de registrar la aplicación hacemos clic en este registro para ver los valores de «Consumer key», «Consumer secret», «Request token URL», «Access token URL» y «Authorize URL».

5.- Ahora modificamos nuestro archivo de configuración de Emacs y colocamos lo siguiente:

;; Emacs OAuth
(add-to-list 'load-path "~/.emacs.d/emacs-oauth")
(require 'oauth)

;; GNU Social mode
(add-to-list 'load-path "~/.emacs.d/gnu-social-mode/")
(require 'gnu-social-mode)
(setq gnu-social-username "TU_USUARIO")
(setq gnu-social-server "SERVIDOR")
(setq gnu-social-port 443)

;; OAuth settings
(setq gnu-social-auth-mode "oauth")
(setq gnu-social-mode-oauth-consumer-key "TU_CONSUMER_KEY")
(setq gnu-social-mode-oauth-consumer-secret "TU_CONSUMER_SECRET")
(setq gnu-social-request-url "TU_REQUEST_TOKEN_URL")
(setq gnu-social-access-url "TU_ACCESS_TOKEN_URL")
(setq gnu-social-authorize-url "TU_AUTHORIZE_TOKEN_URL")

Tenemos que reemplazar TU_USUARIO con el usuario que tenemos registrado (en mi caso ovruni), SERVIDOR con el dominio donde estamos registrados (en mi caso quitter.se), los parámetros de OAuth los reemplazamos segun los detalles mencionados en el punto anterior (punto 4).

6.- Ahora, con la sesión iniciada en el servidor abrimos Emacs e ingresamos a gnu-social-mode mediante «M-x gnu-social-mode» (Entiéndase el M-x como el pulsar Alt+x en el teclado). Al ser la primera vez nos va a abrir la pagina web para autorizar la aplicación, aceptamos y nos va a generar un código de seguridad. Por otro lado en Emacs nos va decir que presionemos Enter si pudimos ingresar a la pagina para autorizar la aplicación, entonces presionamos Enter.

7.- Luego de eso Emacs nos va a pedir que ingresemos el código de seguridad generado, entonces ingresamos dicho código.

gnu-social-mode-enter-code

8.- Luego ya estamos listos para usar gnu-social-mode en Emacs mediante OAuth.

gnu-socia-mode-emacs

Notas adicionales:

  • Supongo que este post puede servir tambien mediante identi-mode cambiando algunos nombres de variables, pero no lo he probado.
  • Se debe de haber generado automáticamente un archivo en «~/.SERVIDOR-TU_USUARIO-oauth-token» donde se almacena tu clave de acceso de OAuth.
  • Para mas información sobre comandos puede ver las notas adicionales de mi anterior post

Auto Java Complete mode para GNU Emacs


1.- Descargamos los archivos de ajc-java-complete mediante git

git clone https://github.com/whitypig/ajc-java-complete.git

2.- Movemos la carpeta descargada a «~/.emacs.d/»

mv ajc-java-complete ~/.emacs.d/

3.- Entramos a la carpeta «ajc-java-complete» y ejecutamos ant para compilar los archivos

cd ~/.emacs.d/ajc-java-complete && ant

ajc-java-complete-ant

Esto nos debe de generar un archivo de nombre «Tags.jar» y una carpeta de nombre «target», la cual contiene los archivos de java compilados.

4.- Entramos a la carpeta «target/classes/main/java», donde se encuentran los archivos compilados

cd target/classes/main/java/

5.- Ejecutamos el siguiente comando para buscar las clases y etiquetarlas

java -cp "/usr/lib/jvm/java-7-openjdk/jre/lib/rt.jar:." TagsMain

ajc-java-complete-java-cp

6.- Nos va a pedir la confirmación para continuar, le decimos que sí (escribimos «y») y esperamos.

7.- Esto nos va a generar un mensaje con las clases encontradas y etiquetadas, ademas nos dirá que se ha creado el archivo «~/.java_base.tag» , el cual contiene las etiquetas.

8.- Luego copiamos el siguiente código en nuestro archivo de configuración «~/.emacs»

(add-to-list 'load-path "~/.emacs.d/ajc-java-complete/")
(require 'ajc-java-complete-config)
(add-hook 'java-mode-hook 'ajc-java-complete-mode)
;; (add-hook 'find-file-hook 'ajc-4-jsp-find-file-hook)
(setq ajc-tag-file-list (list (expand-file-name "~/.java_base.tag")))

9.- Ahora reiniciamos GNU Emacs y podemos ver el auto completado en Java al escribir un archivo java.

GNU Emacs con Auto Java Complete

holamundo-emacs

Más información:

  • Archivo Install del programa ajc-java-complete

Notas:

  • Se requiere tener previamente instalado auto-complete mode and yasnippet mode en GNU Emacs.
  • Según la distribución que tengas, la ruta al archivo «rt.jar» mencionada en el paso 5 puede variar, en este caso lo he realizado en Parabola GNU/Linux-libre.
  • En caso desees buscar mas clases (por ejemplo si desarrollas aplicaciones para Android), deberás agregar el archivo jar correspondiente (tendrás que separarlo mediante dos puntos de la ruta del archivo rt.jar)

Yasnippet mode en Emacs


Yasnippet es un sistema de plantillas que nos permite escribir una abreviatura y automáticamente expandir  según las plantillas definidas. Este paquete viene con plantillas para lenguajes como C, C++, C#, Perl, Python, Ruby, SQL, LaTeX, HTML, CSS, entre otros. A continuación veamos como instalarlo:

1.- Descargamos yasnippet desde su página en https://github.com/capitaomorte/yasnippet (para GNU Emacs 23 pueden descargar el archivo yasnippet-0.8.0.tar.gz y para Emacs 24 pueden descargar el archivo yasnippet-0.9.0-beta.tar.gz )

Continuaremos los siguientes pasos con el archivo la versión de Yasnippet 0.8.0, pueden cambiar solamente el valor de la versión si instalan en GNU Emacs 24.

2.- Descomprimimos el archivo descargado y los movemos a la carpeta ~/.emacs.d/ :

tar xzvf yasnippet-0.8.0.tar.gz && mv yasnippet-0.8.0 ~/.emacs.d/

3.- Escribimos lo siguiente en nuestro archivo de configuración de GNU Emacs en ~/.emacs

(add-to-list 'load-path "~/.emacs.d/yasnippet-0.8.0")
(require 'yasnippet)
(yas-global-mode 1)

4.- Reiniciamos GNU Emacs y con esto ya tenemos yasnippet mode listo para usar 😀 .

Más información:

Notas:

Sistema de paquetes para GNU Emacs


Desde la versión 24 de GNU Emacs viene viene incorporado un instalador de paquetes que permite descargar e instalar paquetes de una manera mas sencilla mediante una librería llamada package.el . Cada paquete es un programa para GNU Emacs que ademas contiene información como nombre, descripción, versión, dependencias, entre otras.

ELPA : Archivos de paquetes de Emacs Lisp

Para trabajar con este instalador existen diferentes archivos de paquetes ELPA que viene a ser algo similar a los repositorios en las diferentes distribuciones de GNU/Linux. Entre los repositorios ELPA conocidos existen:

Instalación en GNU Emacs 23

Tal como mencione en un inicio este sistema de paquetes viene por defecto en la versión 24 de GNU Emacs, si deseamos instalarlo en la versión 23 tendremos que seguir los siguientes pasos:

1.- Primero descargamos el archivo package.el

wget http://repo.or.cz/w/emacs.git/blob_plain/1a0a666f941c99882093d7bd08ced15033bc3f0c:/lisp/emacs-lisp/package.el

2.- Copiamos el archivo a nuestro directorio con los demás modos de Emacs instalados, en mi caso en la carpeta «~/.emacs.d/» (sin comillas)

cp package.el ~/.emacs.d/

3.- A continuación, escribimos en el archivo ~/.emacs lo siguiente:

(require 'package)
(add-to-list 'package-archives
'("melpa" . "http://melpa.org/packages/") t)
(when (< emacs-major-version 24)
;; For important compatibility libraries like cl-lib
(add-to-list 'package-archives '("gnu" . "http://elpa.gnu.org/packages/")))
(package-initialize)

4.- Luego ya podemos ingresar a emacs y ver la lista de paquetes existentes pulsando «M-x package-list-packages» (Entiéndase el M-x como pulsar Alt+x en el teclado, ademas no usar las comillas)

emacs-m-xpackage-list-packages

Mas información:

Modo paquete en GNU Emacs

Desde el entorno gráfico:

package-emacs

Desde la consola (emacs -nw):

packages-emacs-nw

modo auto-complete : Autocompletado para Emacs


Este modo como su nombre lo dice nos permite auto-completar palabras con las que estamos trabajando haciéndonos fácil la reutilización de estas en nuestro trabajo.

1.- Primero descargamos por consola el auto-complete desde su página web:

wget http://cx4a.org/pub/auto-complete/auto-complete-1.3.1.tar.bz2

2.- Segundo descomprimimos el paquete descargado:

tar xjf auto-complete-1.3.1.tar.bz2

3.- Desde GNU Emacs pulsamos «M-x load-file» (Entiéndase el M-x como pulsar Alt+x en el teclado, además no usar las comillas)

emacs-m-x-load-file

4.- Ubicamos el archivo instalador desde la ruta descargada (en mi caso está en ~/auto-complete-1.3.1/etc/install.el) :

emacs-m-xload-file_toauto-complete

5.- Nos preguntará la ruta a instalarse el modo de auto-completado (en mi caso he dejado la ruta que dan por defecto):

emacs-install-to

6.- Luego de terminar la instalación, abrimos el archivo de configuración de GNU Emacs en ~/.emacs y escribimos los siguiente

(add-to-list 'load-path "~/.emacs.d/")
(require 'auto-complete-config)
(add-to-list 'ac-dictionary-directories "~/.emacs.d//ac-dict")
(ac-config-default)

7.- Finalmente reiniciamos GNU Emacs y con esto ya tendremos el modo de autocompletado listo 😀 .

Más información:

Nota: Desde GNU Emacs 24 se puede instalar con el sistema de paquetes de GNU Emacs (por defecto) desde MELPA con el nombre de auto-complete

Instalar OpenCV en Trisquel GNU/Linux


Hace poco en la UNIversidad me vi en la necesidad de usar OpenCV (Open Source Computer Vision Library) para un proyecto, al principio me compliqué un poco con la instalación, luego de un par de tropiezos logré que funcione correctamente y por si tal vez alguien tenga la misma duda de como realizar una correcta instalación es que escribo esta instalación en 10 pasos.

1.- Primero tenemos que instalar los paquetes necesarios para poder hacer las funciones de procesar imágenes, trabajar con vídeo, etc. Para eso instalamos los siguientes paquetes mediante el apt:

– Instalamos los paquetes necesarios para descargar, compilar y configurar el OpenCV:

apt-get install build-essential subversion libgtk2.0-dev cmake pkg-config 

– Además, instalamos una seria de bibliotecas para trabajar con el OpenCV:

apt-get install libpng12-0 libpng12-dev libpng++-dev libpng3
apt-get install libpnglite-dev libpngwriter0-dev libpngwriter0c2
apt-get install zlib1g-dbg zlib1g zlib1g-dev
apt-get install libjasper-dev libjasper-runtime libjasper1
apt-get install pngtools libtiff4-dev libtiff4 libtiffxx0c2 libtiff-tools
apt-get install libjpeg8 libjpeg62-dev libjpeg8-dbg libjpeg-progs
apt-get install ffmpeg libavcodec-dev libavcodec52 libavformat52 libavformat-dev
apt-get install libgstreamer0.10-0-dbg libgstreamer0.10-0  libgstreamer0.10-dev
apt-get install libxine1-ffmpeg libxine-dev libxine1-bin
apt-get install libunicap2 libunicap2-dev
apt-get install libdc1394-22-dev libdc1394-22 libdc1394-utils
apt-get install swig
apt-get install libv4l-0 libv4l-dev
apt-get install python-numpy 

Además de las anteriormente mencionadas instale algunas otras para que no salga error con el «cmake» que haremos mas adelante.

apt-get install libgstreamer-plugins-base0.10-dev libjpeg62-dev libswscale-dev 

2.- Entramos en la carpeta que usaremos para trabajar, en mi caso usaré la carpeta «/home/urpi/svn/» que es equivalente a «~/svn/» .

cd ~/svn/ 

3.- Luego descargamos el OpenCV, para esto tenemos dos opciones:

– Descargar la última versión de OpenCV del repositorio central (trunk):

svn co https://opencvlibrary.svn.sourceforge.net/svnroot/opencvlibrary/trunk 

– Descargar la última versión probada de OpenCV (tested):

svn co https://opencvlibrary.svn.sourceforge.net/svnroot/opencvlibrary/tags/latest_tested_snapshot 

4.- Continuaremos el ejemplo con la primera opción (la otra es similar). Entramos a la carpeta principal del proyecto descargado.

cd ~/svn/trunk/opencv/ 

5.- Creamos la carpeta «release» para ahí compilar el proyecto, luego entramos en ella.

mkdir release
cd release/ 

6.- A continuación ejecutamos «cmake» y comprobamos que no nos muestre errores para continuar con la instalación, si falta algún paquete instalarlo antes de continuar.

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_PYTHON_SUPPORT=ON .. 

7.- Luego de que comprobamos que no hay errores continuamos compilando e instalando el OpenCV:

make
sudo make install 

8.- Para que el sistema reconozca la ruta de la biblioteca ejecutamos lo siguiente:

export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH 

9.- Ahora, para probar que todo salió correctamente entramos a la carpeta de los binarios ejecutables y probamos el «cxcoretest» (debería darnos todo OK):

cd bin/
./cxcoretest 

10.- Luego también podemos compilar y probar tres de los ejemplos predefinidos en C que vienen con el OpenCV:

cd ../../samples/c/
. build_all.sh

./delaunay
./facedetect lena.jpg
./bgfg_segm tree.avi 

Notas adicionales:

Instalar y usar w3m en GNU Emacs


Entre las diversas funcionalidades de GNU Emacs se encuentra el poder usarlo como un navegador web, haciendo uso para esto del paquete w3m, el cual es un navegador web basado en texto.

1.- Primero descargamos el emacs-w3m por consola desde cvs:

cvs -d :pserver:anonymous@cvs.namazu.org:/storage/cvsroot login
CVS password:  #No colocamos ningún password, solo le damos Enter
% cvs -d :pserver:anonymous@cvs.namazu.org:/storage/cvsroot co emacs-w3m

2.- Copiamos el emacs-w3m en nuestro directorio con los demás modos de emacs instalados por nosotros, en mi caso en la carpeta «~/.emacs.d/» (sin comillas)

cp emacs-w3m - rf ~/.emacs.d/

3.- Ahora entramos al directorio para comenzar con la instalación:

cd ~./emacs.d/emacs-w3m/

4.- Si no existe el archivo «configure» tendremos que crearlo (deberá tener el paquete «autoconf» instalado previamente):

autoconf

5.- Ya con el archivo «configure» ejecutamos los siguientes comandos para instalarlo:

./configure
make
sudo make install

6.- Para terminar la instalación, escribimos en el archivo ~/.emacs lo siguiente:

(add-to-list 'load-path "~/.emacs.d/emacs-w3m/")
(require 'w3m-load)

7.- Luego de guardar esos datos, abrimos el GNU emacs y entramos al w3m con «w3m-browse-url» :

8.- Nos pedirá que ingresemos la pagina, podremos entrar a http://www.gnu.org 😀

Notas adicionales:

  • Para poder ver las imagenes escribir en el archivo «~/.emacs» lo siguiente: «(setq w3m-default-display-inline-images t)» (sin comillas)
  • Para poder usar las cookies en las paginas que necesiten, agregar en el «~/.emacs» : «(setq w3m-use-cookies t)»
  • Para mayor información sobre el uso de w3m desde GNU Emacs revisar la documentación oficial o colocar «M-x w3m» dentro de GNU Emacs.
  • Información completa del proyecto emacs-w3m en su web oficial.

GNU Emacs con w3m

Desde el entorno gráfico:

Desde la consola (emacs -nw):

P.D.: La instalación se hizo en Trisquel GNU/Linux, asi que es probable que funcioné en cualquier derivado de Debian.

ERC : Cliente de IRC para GNU Emacs


ERC es tal vez el modo de GNU Emacs mas sencillo de usar para una persona que recién se anima a entrar al fascinante mundo de GNU Emacs 😀 . Este cliente viene por defecto en las instalaciones de GNU Emacs posteriores a la versión 22.1 .

Para usarlo solo abrimos GNU Emacs e ingresamos al modo llamado erc de la siguiente forma:

1.- Pulsamos «M-x erc» (Entiéndase el M-x como pulsar Alt+x en el teclado, ademas  no usar las comillas)

2.- A continuación se nos ira preguntando por datos para realizar la conexión: Servidor IRC, puerto IRC, usuario, contraseña.

3.- Luego ya podemos continuar usando comandos de IRC, tal y como se usan en otros clientes. Por ejemplo, para ingresar al canal de chat llamado #gnu-es , usamos «/join #gnu-es» (sin comillas).

Mas información:

ERC desde Emacs

Desde el entorno gráfico:

Desde la consola (emacs -nw):

P.D.: Las capturas de pantalla se hicieron desde GNU Emacs 23.1.1 en la distribución Trisquel GNU/Linux .

Desmintiendo el mito: El Software Libre no tiene soporte como el Software Privativo


Hace poco en la UNIversidad alguien mencionó en alusión al Software Libre: «si el el producto no funciona, entonces no puedo ir a un foro a gritarle al administrador que su producto es muy malo y que demando atención inmediata».

A lo que respondí para desmentir ese mito parte por parte:

Cuando descargas algún software libre puedes proponer mejoras al software o reportar bugs, esto es algo que tienen muchos proyectos de software libre, teniendo en su mayoría una mayor rapidez de respuesta por parte de la comunidad, lo cual no sucede con los del software privativo.

1 .- En la frase se presume, al mencionar un foro, que el software se descargo de manera gratuita, ya que cuando se adquiere un servicio por parte de una empresa que representa a algún software libre, el cliente puede y debe de decir su queja a esta empresa, lo mismo que en cualquier otra.
Pregunta: «¿Si tienes una copia gratuita en el software privativo puedes ir a reclamarle a la empresa que su producto es defectuoso, o es que igualmente debes de tener un contrato con dicha empresa?»

2.- Ahora en el caso de que lo defectuoso del software sea por un error de programación y la mejora involucra el cambio de código fuente, la empresa que representa al software (ojo, no la empresa desarrolladora original necesariamente, sino la que dio el servicio) puede hacer esta modificación y mejorar el producto.
Pregunta: «¿En caso que el error fuese de programación la empresa que representa al software puede modificar el código fuente del software?»

3 .- Por ultimo en el peor de los casos que existiese un problema con la empresa que representa al software y no no se desea continuar con su servicio, se puede recurrir a otra empresa o personas, ya que al tenerse el código fuente cualquier otro desarrollador es capaz de hacer modificaciones, evitándose así la dependencia de la empresa creadora del software.
Pregunta: «En el caso que no desees adquirir el servicio de la empresa de software privativo se puede recurrir a otra empresa para que modifique el código fuente y nos arregle así el problema, o es que se genera una dependencia hacia la empresa desarrolladora?»

Por lo anteriormente mencionado con el software libre la empresas y las personas si pueden hablar de una propiedad privada, porque el software es suyo (puede hacer modificaciones, sea pagando a un desarrollador aparte o haciéndolo el mismo), dejando de ser solo un usuario al cual se le ha prestado mediante una licencia el derecho de usar el software.

Cualquier software puede tener problemas, pero el software libre permite que podamos ser independientes tecnológicamente y que podamos contribuir para avanzar en conjunto. En otras palabras el software libre es tuyo, es mio, es nuestro, es de todos.

Espero haber podido aclarar las dudas con respecto a este mito 😀 .

Identi.ca mode para Emacs


Como dije en un post anterior, GNU Emacs sirve para muchas cosas, entre ellas el poder usarlo para leer y portear en nuestras cuentas de identi.ca, para esto tendremos que usar el identica-mode. A continuación les explico los pasos a seguir para poder intalarlo.

1.- Verificamos que tenemos instalado el Emacs.

2.- Descargamos la ultima versión del identica-mode desde su pagina de http://git.savannah.gnu.org/cgit/identica-mode.git .

3.- Descomprimimos el archivo descargado y copiamos el archivo identica-mode.el a la carpeta «~/.emacs.d/» (sin comillas).

 tar xzvf identica-mode.tar.gz && cp identica-mode/identica-mode.el ~/.emacs.d/ 

4.- Ahora modificamos nuestro archivo de configuración de Emacs ubicado en  «~/.emacs» (en el caso no lo tengas, puedes crearlo) y en colocamos lo siguiente:

 ;;; Identi.ca mode
(add-to-list 'load-path "~/.emacs.d/")
(require 'identica-mode)
(setq identica-username "yourusername")
(setq identica-password "yourpassword")
(global-set-key "\C-cip" 'identica-update-status-interactive)
(global-set-key "\C-cid" 'identica-direct-message-interactive) 

Tendremos que haber reemplazado «yourusername» y «yourpassword» por los datos de nuestra cuenta, en mi caso «ovruni» y «**********» .

5.- Ahora, en el caso tu no estés usando identi.ca, sino un servidor personalizado con el software statusnet, entonces tu deberías agregar también:

 (setq statusnet-server "myserver.com") 

6.- Luego de guardar esos datos, ya estamos listos para usarlo, abrimos Emacs y lo usamos: «M-x identica-mode» (Entiendase el M-x como el pulsar Alt+x en el teclado).

Notas adicionales:

  • Para poder ver los iconos de cada usuario presionar la tecla «i» .
  • Para enviar un nuevo mensaje usar: «C-c C-s» (entiendase C-c como el pulsar Ctrl+c en el teclado, lo mismo luego para la «s») .
  • Para enviar un re-dent, presionas C-c, luego das enter, luego te ubicas en el mensaje a re-dentear y en el estado saldrá el mensaje para el re-dent.
  • Para mas información sobre comandos para identica-mode, revisar el blog de Daniel Saldaña, creador del proyecto.
  • Si deseas realizar le conexión mediante OAuth puedes revisar mi siguiente post sobre esto.

Emacs con Identica-mode:

Desde el entorno grafico:

Identica-mode en Emacs

Desde la consola (emacs -nw):

P.D.: La instalación se hizo en Trisquel GNU/Linux, asi que es probable que funcione en cualquier derivado de Debian.