Sep 18 2008

Nuevo blog sobre lisp

Tag: basicoverdrive @ 8:01 pm

Con este ya son 19 artículos los escritos sobre GNU/Emacs en general, con ello quiero hacer un alto para explicar en que me baso para escribir mis artículos; en primer lugar me baso en los conocimientos adquiridos por parte de mi amigo David, en segundo lugar el metodo de ensayo y error o lo que vulgarmente llamamos pruebas, además de posible información adquirida de emacswiki entre otros sitios, por mailings, irc y demás. Además de ello estoy leyendo el famoso libro de O’reilly de GNU/Emacs, el contenido está bastante bien, sin embargo llegado al capítulo sobre Emacs lisp la cosa deja mucho que desear, para nada es entretenido, y para nada creo que haya sido escrito de forma didáctica para el lector.

Es por ello por lo que he decidido anunciar un nuevo blog que ha comenzado a escribir David, que junto a la charla de Marchesi creo que pueden ser los pilares fundamentales sobre los que se basen al menos mis reducidos conocimientos sobre lisp.

Creo que es de vital importancia entender los conceptos base en lisp así como su filosofia de resolver los problemas (ya sea scheme, elisp o CL) antes de ponerse a aprender sentencias como lo haríamos en cualquier otro lenguaje, por eso creo que es importante que la comunidad hispana interesada en dicho lenguaje debería pasarse por http://sobrelisp.blogspot.com y que no quede como un blog que alguien lo trabaja con ánimo de impartir conocimientos y que quede en el tintero.

La verdad es que no he encontrado, al menos de momento, ningún manual o tutorial, medianamente decente, corto y simple a la vez, que explique los pilares fundamentales de lisp para gente ajena al lenguaje, y creo que es por ello por lo que la gente tiende a pensar que éste es un lenguaje antiguo, en desuso e inútil.


Sep 09 2008

Gnus

Tag: basicoverdrive @ 3:57 am

Gnus es el lector de noticias, cliente de correo y mailings por excelencia, existen otros, como rmail (que usa Richard Stallman) aunque desconozco su uso. A continuación muestro los pasos necesarios para instalar el soporte, configurar y trabajar con una cuenta de correo gmail desde nuestro GNU/Emacs usando Gnus.

  • Comprobar TLS y OpenSSL

Lo primero es instalar gnutls y openssl si nos encontramos en gentoo:

# emerge gnutls openssl

O bien starttls y openssl si nos encontramos en debian:
# apt-get install starttls openssl

  • Configuracion pop/imap

Si lo que queremos es configurarlo con imap debemos añadir éstas líneas:

(setq gnus-select-method
‘(nnimap «Gmail»
(nnimap-address «imap.gmail.com»)
(nnimap-server-port 993)
(nnimap-stream ssl)))

Tambíen debemos comprobar que tenemos o bien habilitado imap en nuestro servidor de correo (para ello ir a opciones en nuestra cuenta de gmail y activarlo)Para la configuración pop3 debemos añadir éstas otras líneas en nuestro .emacs:

// TODO (por escribir)
// Actualmente he tenido problemas para la configuración pop3 sin fetchmail escribiré algo según vaya investigando.

Y por supuesto debemos comprobar que esté habilitado pop3 en las opciones de nuestro servidor de correo (debemos ir a opciones de nuestra cuenta de gmail y activarlo allí)

  • Configuración smtp

Debemos incluir éstas otras líneas en nuestro .emacs:

(require ‘smtpmail)
(setq mail-from-style’angles
;`user-full-name ‘
send-mail-function ‘smtpmail-send-it
message-send-mail-function ‘smtpmail-send-it
smtpmail-smtp-server «smtp.gmail.com»
smtpmail-smtp-service 587
smtpmail-debug-info t
smtpmail-starttls-credentials ‘((«smtp.gmail.com» 587 nil nil))
smtpmail-auth-credentials ‘((«smtp.gmail.com» 587 «tu.cuenta@gmail.com» nil)))

Ejecutar emacs y cargar gnus mediante M-x gnus.

  • Acceso a la cuenta

Nos pedirá el nombre de usuario, lo escribimos (podemos ponerlo tanto en formato usuario@gmail.com como usuario directamente).A continuación nos pedirá el password, lo escribimos y ya accederemos a la cuenta, si no queremos escribir cada vez el login podemos crear el archivo .authinfo en nuestro $HOME y poner esta línea:

machine imap.gmail.com login tuusuariogmail port 993

Se puede escribir el password, aunque no es recomendable por temas de seguridad.

  • Cambiar de directorio

Pulsamos j, y a continuación se nos pedirá a que grupo queremos saltar, por ejemplo INBOX. También podemos usar el TAB para ver sobre que grupos podemos saltar.

  • Entrando en inbox

Pulsamos INTRO sobre inbox y ya deberíamos ver los correos. Pulsamos INTRO sobre cualquier correo y deberíamos ver su contenido. Pulsando r sobre cualquier correo ya estemos dentro o no, haremos reply y contestaremos dicho correo.

  • Saliendo de Gnus

Para salir de Gnus podemos pulsar q. Si salimos directamente desde Emacs, no habrán sido marcados los correos para la siguiente sesión.

  • Configurando Gnus con mailing lists

Imaginemos que queremos subscritos a las listas de correo de Emacs, accederemos a http://savannah.gnu.org/mail/?group_id=40 y http://es.gnu.org/cgi-bin/mailman/listinfo/emacs-es y nos subscribimos. Ahora queremos tener un grupo para cada mailing, para ello debemos realizar los siguientes pasos, si por ejemplo tenemos las siguientes mailings de Emacs:

emacs-bug-tracker@gnu.org
emacs-bug-gnu-emacs@gnu.org
emacs-bidi@gnu.org
emacs-commit@gnu.org
emacs-diffs@gnu.org
help-gnu-emacs@gnu.org
info-gnu-emacs@gnu.org
emacs-devel@gnu.org
emacs-es@gnu.org

Pues bien añadiremos las siguientes líneas en nuestro .emacs:

;; Gnus filters
(setq nnimap-split-inbox «INBOX»
nnimap-split-rule
‘((«Emacs-bug-tracker» «^List-Id:.*emacs-bug-tracker\\.gnu.org»)
(«Emacs-bug-gnu-emacs» «^List-Id:.*emacs-bug-gnu-emacs\\.gnu.org»)
(«Emacs-bidi» «^List-Id:.*emacs-bidi\\.gnu.org»)
(«Emacs-commit» «^List-Id:.*emacs-commit\\.gnu.org»)
(«Emacs-diffs» «^List-Id:.*emacs-diffs\\.gnu.org»)
(«Emacs-help-gnu-emacs» «^List-Id:.*help-gnu-emacs\\.gnu.org»)
(«Emacs-info-gnu-emacs» «^List-Id:.*info-gnu-emacs\\.gnu.org»)
(«Emacs-devel» «^List-Id:.*emacs-devel\\.gnu.org»)
(«Emacs-es» «^List-Id:.*emacs-es\\.es\\.gnu\\.org»)))

Ahora bien, esto creará las llamadas LABELS o ETIQUETAS en gmail (que se verá reflejado en vuestro webmail de gmail.com) que aquí se llaman GRUPOS sin embargo, filtrará los mensajes en el momento que los baje a vuestro ordenador, lo cual es bastante lento, por lo que lo ideal es crear ahora filtros en gmail.com para que dicha clasificación la realice google en sus servidores y nosotros tan sólo debamos descargar el correo de cada grupo, lo cual acelera muchísimo el proceso. Para ello accederemos a nuestra cuenta por medio de gmail.com, seleccionaremos un correo de una mailing concreta, y en «más opciones» seleccionamos «filtrar mensajes como estos», entonces aparecerá una nueva pantalla con la opción de «Contiene la palabra:(emacs-devel.gnu.org)» entonces le damos a marcar otros X mensajes y le damos a continuar. Este paso lo realizamos para un correo cualquiera de cada mailing que estemos subscritos, así conseguiremos crear todos los filtros.

También podemos añadir la siguiente línea en nuestro .emacs para tener una visión permanente de los grupos a los que estamos subscritos, aun cuando no tengamos correo nuevo en dicha sesión:


;; Gnus permanent topics
(add-hook ‘gnus-group-mode-hook ‘gnus-topic-mode)

Un vez arranquemos nuestro Emacs con gnus, quizás no veamos los grupos, esto es porque no estamos REGISTRADOS a los grupos que hemos creado, para registrarnos una vez estemos dentro de gnus, podemos hacer lo siguiente:

A A’ que obtiene la lista de todos los grupos del servidor (es remoto, conecta con el SERVIDOR). Es solo útil cuando creamos un nuevo grupo en el servidor, etc.

Entonces nos desplazamos por cada uno de los grupos mientras vamos pulsando:

u’ que hace toggle a la subscripción de un grupo.

Cuando nos hayamos subscrito a todos los grupos que nos interese, ya podremos ver todos estos grupos cuando iniciemos gnus de forma normal pulsando:

l’ que actualiza la lista, y muestra los grupos a los que estás subscrito (no conecta con el servidor, es LOCAL)

o bien:

L’ que actualiza con toda la cache, es decir mostrando todos los grupos, incluso a los que no estás subscrito (no conecta con el servidor, es LOCAL).

Si queremos checkear los posibles nuevos correos que hayan llegado entre el momento que nos hayamos logueado y ahora (que podrian haber llegado nuevos correos) tan sólo debemos pulsar:

g‘ para refrescar todos los nuevos correos de los grupos.

Además con A T podremos ver todos los mensajes de un thread, lo cual es fundamental para las mailings (también se puede acceder por medio del menu F10 -> threads -> show all messages in a thread).

Con c sobre un buffer, marcaría todos los correos como leídos.

  • Topics

El concepto de topic o tema fue nuevo para mi cuando entre en el mundo Gnus. Los topics contienen grupos de una misma tematica, por ejemplo podríamos crear una topic llamado Emacs el cual incluyese todos los grupos anteriores. Pero también podríamos estar subscritos a un mont&oacite;n de mailings sobre lenguajes de programación y agruparlos todos en otro topic. Para ello pulsamos:

T n‘ y así crearemos un nuevo topic.

Ahora podemos desplazarnos hasta un crupo y pulsar:

C-k‘ para cortar o eliminar un grupo.

Desplazarnos hasta dentro del topic creado y pulsar:

C-y‘ para pegar dicho grupo.

Ahora podemos jugar con la identación y desidentación para dejar un formato aceptable a nuestros grupos y temas:

TAB : para identar

M-TAB : para desidentar.

  • Acciones sobre los correos

r responder al correo (sólo al destinatario).

S V responder a todos (respuesta amplia).

  • Estados de los correos

R indica que los correos han sido le&iacutedos (al menos se ha pulsado INTRO o SPC sobre ellos)

r indica que los correos han sido marcado como leídos por el usuario mediante d.

O indica que son correos leídos en sesiones previas (OLD).

Y aqui vemos otra captura de como gnus puede visualizar y adjuntar imagenes :-)

Es importante la primera vez que se lee el correo desde Gnus listar todos los grupos con A A, ir uno por uno haciendo «u» para subscribirse, y después de ello pulsando si se usa una cuenta de gmail «G c«, guardar y pulsar done, ya que sino por problemas con los servidores de gmail y pop3, no podremos distinguir los correos leidos de los nuevos.

Se puede profundizar mucho más en el manual oficial de Gnus disponible en http://gnus.org/manual/gnus.pdf


« Página anterior