jueves, 24 de mayo de 2012

Mi primera clase de Prolog

Introducción

El término "Prolog" (o "PROLOG"), proviene de la expresión en francés "PROgrammation en LOGique", es un lenguaje de programación lógico e interpretado, bastante conocido en el medio de investigación en Inteligencia Artificial.

Prolog es un lenguaje de programación para ordenadores que se basa en el lenguaje de la Lógica de Primer Orden y que se utiliza para resolver problemas en los que entran en juego objetos y relaciones entre ellos. Una de las ventajas de la programación lógica es que se especifica qué se tiene que hacer (programación declarativa) y no cómo se debe hacer (programación imperativa).

Instalación

En Ubuntu 11.10 y Ubuntu 12.04 haremos la instalación ejecutando la orden:

sudo apt-get install swi-prolog prolog-el ncurses-doc swi-prolog-doc


En nuestro Mac OS-X instalaremos SWI-Prolog  a través de MacPorts. Para Mac OS-X el programa "port" de MacPorts es uno de los análogos al "apt-get" de Ubuntu. La orden de consola sería:


$ sudo port -v install swi-prolog


sin duda esto es lo mejor, aunque como mal menor siempre podemos llevar a cabo la instalación a través del paquete mpkg provisto en la página oficial de descargas de SWI-Prolog, donde también recomiendan y dan sugerencias para llevar a cabo la instalación vía MacPorts.


Si aún disfrutamos de Windows descargaremos el instalador según nuestras preferencias de la página oficial de descargas de SWI-Prolog.


Prolog y Emacs


Aún habiendo instalado el paquete "prolog-el" sigue siendo necesario, hoy por hoy, incluir en el fichero ".emacs" lo siguiente:


(autoload 'run-prolog "prolog" "Start a Prolog sub-process." t)
    (autoload 'prolog-mode "prolog" "Major mode for editing Prolog programs." t)
    (autoload 'mercury-mode "prolog" "Major mode for editing Mercury programs." t)
    (setq prolog-system 'swi)
    (setq auto-mode-alist (append '(("\\.pl$" . prolog-mode)
                                    ("\\.m$" . mercury-mode))
                                   auto-mode-alist))


si queremos que nuestro emacs de colorines y eso ... a nuestros ficheros .pl. En cambio, si trabajamos en Mac OS-X la dificultad no existe, pues el maravilloso Aquamacs viene preparado ya. Para ver cómo instalar Emacs en Windows, pueden visitar éste nuestro post  o bien éste otro; nunca es tarde para pasarse.


El hola mundo


Ha llegado el momento de escribir el "hola mundo", ese programa que nos da la seguridad de que hemos empezado con buen pie, que vamos por buen camino y que sólo es cuestión de persistir. He aquí el código:

mensaje :- nl,
          write('Ejemplo: "El hola mundo de Prolog" cargado. '),
          nl,
          nl.
salude  :- write('¡hola ... mundo!').
        :- mensaje.

Tomaremos el texto anterior, editaremos un fichero que podría llamarse hola.pl, por ejemplo, y abriremos una terminal (Ctrl+t) en la que viajaremos hasta el lugar donde se halle el hola.pl (si no tendremos que cargar el fichero dando el camino, que también se puede). Seguidamente ejecutamos en la línea de la terminal la orden:

swipl

y seguidamente, tras el diálogo de bienvenida ejecutamos

?- ['hola.pl'].


con lo que tendremos el siguiente diálogo:


Ejemplo: "El hola mundo de Prolog" cargado. 

% hola.pl compiled 0.00 sec, 1,632 bytes
true.

Ahora podemos pedir la validación del predicado salude:

?- salude.
¡hola ... mundo!
true.


?-


Hay que observar que cuando se pide una validación, dicha petición acaba en "." y luego es cuando se pulsa "enter". Puede llamar la atención en nuestro particular código del hola.pl la línea ":- mensaje.". A grandes rasgos, su cometido es solicitar en tiempo de interpretación la validación automática del predicado  "mensaje" que había sido argumentado aguas arriba de código. No le demos más importancia por ahora, pero guardemos en la memoria el alcance de esta técnica. Observar también que los ficheros que vamos a interpretar con SWI-Prolog deben tener la extensión ".pl".


Un programa arquetípico


Habitualmente hemos recurrido en "Mi primera clase ..." a mostrar ejecuciones aritméticas. Ahora dejamos esa vía para resaltar las muy especiales características de este otro lenguaje. Nuestra propuesta arquetípica es ahora un código, contenido en el fichero razona.pl que muestra cómo Prolog "razona", pues Prolog incluye un "demostrador":



p(a).                              
p(X) :- q(X), r(X).                
p(X) :- u(X).                      

q(X) :- s(X).                      


r(a).                              
r(b).                              


s(a).                              
s(b).                              
s(c).                              

u(d).


Realmente los programas en Prolog son todos como éste, con mayor o menor sofistificación. La estructura del esquema ordena ---y aquí el orden importa---  una serie de reglas del tipo:


cabeza_de_la_regla :- cuerpo_de_la_regla.

en las que puede faltar la "cabeza_de_la_regla" o el " cuerpo_de_la_regla", como hemos visto. El conjunto de las reglas dadas constituye una base de datos que Prolog recorre de arriba hacia abajo. En nuestro caso, la línea p(a)sirve para informar al intérprete de que debe considerar que el predicado "p(X)" vale si "X=a". La línea
p(X) :- q(X), r(X).
sirve para informar al intérprete de que debe dar por válido a p(X) para aquellos valores atribuibles a X con los cuales resultase válido simultáneamente q(X) y r(X). Pero veamos a nuestro programa en acción con el siguiente diálogo:

?- ['razona.pl'].
% razona.pl compiled 0.00 sec, 2,776 bytes
true.

?- p(X).
X = a.

?- p(X).
X = a.

?- p(X).
X = a;
X = a;
X = b;
X = d.

Observe que en la primera línea sólo ha habido una respuesta porque hemos pulsado "." tras el primer  "X = a"; ello indica al intérprete que debe parar de buscar valores para "X" que satisfagan a "p". Si pulsamos en lugar de  "." el signo  ";", el intérprete busca otras alternativas como valores de "X" que satisfagan a "p". En nuestro caso vuelve a encontrar que vale "a" por otra razón, encuentra como candidatos a "b" y también a "d". Entonces detiene la búsqueda al constatar que no hay más candidatos. Nuestro lector puede tratar de razonar el porqué de este comportamiento; será en segundo gran hito que alcance ... y puede que el último pues encontrará entonces que realmente lo que hace el intérprete es explorar un árbol unificando y resolviendo.

Algunas precisiones

Si queremos que el intérprete muestre su ayuda haremos:

?- help(help).

y si queremos salir del intérprete haremos:

?- halt.

Para cargar más de un programa en la interfax del intérprete podemos hacer lo siguiente

?- ['hola.pl','razona.pl'].

y habremos cargado "hola.pl" y "razona.pl". Habrá que tener cuidado de que no haya conflictos en los contenidos de ambos ficheros. Podemos ver lo que hemos cargado hasta el momento con:

?- listing.

Un reto

Les dejamos el siguiente código que puede formar parte del fichero "sumatorio.pl":

sumatorio(1,1) :- !.
sumatorio(N,S) :- N1 is N-1,
                  sumatorio(N1,S1),
                  S is N+S1.

Les invitamos a que  establezcan el siguiente diálogo:

?- ['sumatorio.pl'].
% sumatorio.pl compiled 0.00 sec, 1,200 bytes
true.


?- sumatorio(10,X).
X = 55.

y que según lo observado traten de entender el programa. Podrían editar seguidamente el fichero "sumatorio_dp.pl" con el mismo contenido del anterior pero quitando el carácter "!" del código:

sumatorio(1,1).
sumatorio(N,S) :- N1 is N-1,
                  sumatorio(N1,S1),
                  S is N+S1.

 Ahora pueden repetir lo hecho con  "sumatorio.pl". ¿Qué disfunción observan? ¿A qué se debe?

Y ... esto es todo por hoy.

domingo, 20 de mayo de 2012

Firmar con Ubuntu aportaciones a grupos de investigación desde la página sica2.cica.es

Introducción

Recientemente hemos ayudado a un investigador a firmar aportaciones desde la página del CICA al efecto. Como verán el proceso no es nada trivial. Por tanto, hemos estimado conveniente ayudar desde aquí a los lectores que tenga una necesidad parecida y hayan creído en Linux, en particular en Ubuntu, como única herramienta de trabajo.

Habilitación de la lectura del dni electrónico (dnie)

Éste será el primer paso que demos: hacer que nuestro Ubuntu sea capaz de autenticarnos y firmar desde nuestro dni electrónico. 

Estudiado el problema y leídas las instrucciones que da el Ministerio del Interior, hemos visto que no podemos mejorar lar excelente información que dan en BITPLANET. Allí figuran magistralmente escritas las certeras instrucciones que hemos probado para las instalaciones de 32 y 64 bits ... y funcionan a las mil maravillas. No obstante es preciso subrayar las siguientes observaciones:
  • El lector de tarjetas que hemos usados es el que la Universidad de Granada ha provisto a sus funcionarios: USB smart card reader Gemalto. Nos ha valido el mismo driver que a  BITPLANET,  el cual se instala con la orden:
    sudo apt-get install libacr38u
  • Usaremos Firefox y no otro navegador.
  • Debemos tener el certificado de nuestro dnie en vigor. Si esto no fuera así, basta con acudir, provistos de tarjeta del dnie y su password, a cualquier oficina en las que se expide el dni, y en una de esas máquinas (parecida al cajero automático) proceder a actualizar los certificados del dnie. Es un sencillo procedimiento que no requiere asistencia de funcionario y que dura unos 3 minutos.
  • Debemos hacer la prueba de verificación de nuestra instalación en la página recomendada por BITPLANET para así estar seguros antes de proseguir.
  • Si no tiene la última Ubuntu, es decir la Ubuntu 12.04, no se preocupe porque también hay instrucciones para las anteriores.
El lector de pdf para Firefox

En el proceso necesitaremos tener Adobe Reader incrustrado en nuestro Firefox. Para ello bajaremos Adobe Reader de la página de descarga, rellenando la ficha con los datos siguientes:

Paso 1: Linux
Paso 2: Spanish
Paso 3: Reader 8.1.7 Spanish for Linux (.deb)

y luego pulsamos en "Descargar ahora" .  Como resultado bajará, digamos a

/home/mi_usuario/Descargas 

el fichero:

AdobeReader_esp-8.1.7-1.i386.deb

que instalaremos con la orden:

sudo dpkg -i AdobeReader_esp-8.1.7-1.i386.deb

seguidamente abriremos la aplicación recién instalada para aceptar la licencia; esto se hace abriendo el selector de aplicaciones con Super+a, escribiendo en la ventana "acroread" y haciendo clic sobre el icono "Adobe Reader" luego pulsaremos "Aceptar" en la ventana que emerge para el "Acuerdo de licencia", seguidamente cerraremos la aplicación.

Después es necesario poner a disposición de Firefox el Adobe Reader recién instalado, para ello haremos:

sudo apt-get install mozplugger

Vincular Java a Firefox

Hemos sabido ---¡no pregunten cómo!--- que la versión de Java que se instala con nuestras instrucciones dadas aquí no es lo suficientemente moderna como para servirnos.

En la prueba que hemos hecho no habíamos ejecutado la orden:

sudo apt-get install openjdk-7-jre openjdk-7-jdk icedtea-7-plugin

pero si ustedes la hubieran ejecutado creemos que bastaría, por precaución, con desinstalar temporalmente el paquete icedtea-7-plugin, lo cual llevaremos a cabo con la orden:

sudo apt-get --purge remove icedtea-7-plugin

De todas formas, podemos saber la versión de java que tenemos desde la terminal (Ctrl+t) con las órdenes:

java -version

javac -version

Si  resulta que tenemos una superior o igual a la 6u31, restaría ver si está vinculada a nuestro navegador visitando la página de prueba de instalación de Java. Si el resultado de ambas pruebas es satisfactorio, no hay nada que hacer en este apartado; pero si alguno falla habría que proceder como indicamos más abajo en la parte o partes que corresponda.

Ahora debemos instalar la versión de Java necesaria. Para ello bajamos desde la página de Oracle el paquete de Java SE Development Kit 6 Update 31 (no olvidemos activar el radiobotón "Accept License Agreement"). Si tenemos un Ubuntu de 64 bits bajaremos jdk-6u31-linux-x64.bin
y si tenemos el de 32 bits bajaremos jdk-6u31-linux-i586.bin.

Encontraremos el inconveniente de que este fichero binario, que no es más que un directorio comprimido, baja sin permiso de ejecución y será necesario dárselo. Supongamos que ha bajado a /home/mi_usuario/Descargas. Abriremos una terminal y ejecutaremos 

cd /home/mi_usuario/Descargas

y seguidamente, caso de tener el jdk-6u31-linux-i586.bin, ejecutamos:

chmod -R 764 jdk-6u31-linux-i586.bin

y caso de tener el jdk-6u31-linux-x64.bin, ejecutamos:

chmod -R 764 jdk-6u31-linux-x64.bin

Una vez tengamos dado el permiso, haremos lo siguiente (para fijar ideas suponemos que tenemos el paquete jdk-6u31-linux-i586.bin y si fuera el otro haríamos los cambios pertinentes, observar que jdk1.6.0_31/ es el directorio que se produce al descomprimir el .bin y tiene el mismo nombre en el caso de 64 bits):

cd /home/mi_usuario/Descargas
./jdk-6u31-linux-i586.bin
   (cuidado porque en un momento dado habrá que pulsar "enter" para poder continuar)
sudo mv jdk1.6.0_31/ /usr/bin

Aquí no ha acabado la cosa, pues ahora hay que hacer que Firefox reconozca la versión de Java recién "instalado". Para ello iremos al lugar donde tenemos instalado el directorio "plugins" de Firefox, en nuestro caso:

cd /usr/lib/mozilla/plugins

y haremos el nexo simbólico siguiente:

sudo ln -s /usr/bin/jdk1.6.0_31/jre/lib/i386/libnpjp2.so

Ahora reiniciamos nuestro Firefox si lo tenemos abierto, o sencillamente lo abrimos si no lo tenemos, y hacemos la prueba de instalación de Java. Debe salir un mensaje de éxito incluyendo el texto:

Su versión de Java: Version 6 Update 31

Con esto parece que podremos hacer nuestra gestión de introducción y/o validación de trabajos en el CICA a fin de tener los contenidos de los grupos actualizados.


Si tienen alguna duda o comentario, intentaremos ayudarles.

Y, al fin, ... esto es todo por hoy.

domingo, 29 de abril de 2012

Instalación estándar de Ubuntu 12.04 LTS y una adecuación para uso científico

Hemos instalado en nuestras computadoras habituales la nueva versión de Ubuntu, es decir, Ubuntu 12.04 LTS de nombre "Precise Pangolin". Esta vez hemos probado las versiones de 32 y 64 bits y todo parece funcionar.

No encontramos, por ahora, nada nuevo que añadir a nuestro anterior post con el mismo nombre para Ubuntu 11.04. Por tanto, remitimos a nuestros lectores a dicho post y les recomendamos que lo sigan


Como única observación diremos que la instalación de Google Earth ha funcionado en unos equipos y en otros no, por lo que damos la información sin garantía y trataremos de afinar sus términos en el transcurso de las siguientes semanas.

Y ... esto es todo por hoy,

domingo, 15 de abril de 2012

Convertir un pdf en otro más ligero con Ghostscript

Introducción

Este post contiene una explicación de éste otro que nos ha parecido interesante. Tiene por objeto indicar un procedimiento aceptablemente fiable ---aunque no totalmente--- para aligerar el peso de ficheros .pdf pesados, bien porque nuestro escaner los genera de esa forma o porque los hemos recibido así en un correo.

Los .pdf pesados pueden ser interesantes para ser usados en  reconocimiento de caracteres (OCR), pero molestan a la hora de ser enviados por correo o bien si tenemos poco espacio en disco o cuenta de correo.

Para llevar a cabo la operación debemos tener instalado en nuestro Ubuntu los paquetes Ghotscript y Gsfonts. Si no estuvieran, ejecutaríamos la siguiente orden de consola:

$ sudo apt-get install ghostscript gsfonts


El mencionado post indica que para aligerar el tamaño del pdf basta ejecutar la siguiente orden, que es una única línea:

$ gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE 
-dQUIET -dBATCH -sOutputFile=pdfReducido.pdf pdfOriginal.pdf

Donde pdfReducido.pdf será sustituido por el nombre que se le  quiera dar al fichero resultante del proceso, y pdfOriginal.pdf será el nombre del archivo pdf de origen.


Nosotros vamos a explicar aquí qué es lo que hace esta orden.

Opciones de gs (Ghostscript)


Vamos a analizar las siguientes opciones:


-dNOPAUSE 
indica que no habrá pausa después de la página.


-dBATCH 
indica que saldremos después de la última página.


-sDEVICE=<nombredeldispositivo>
sirve para seleccionar el dispositivo y las posibilidades para  nombredeldispositivo son en una cantidad formidable. Para verlas se puede hacer


$ gs --help


una de las posibilidades es pdfwrite que será usada muy frecuentemente.


-sQUIET 
indica que han de ser emitidos un menor número de mensajes. Es equivalente a escribir -q.


-dCompatibilityLevel=<1.x> 
entre las posibilidades para x tenemos:
  • 2 crearemos ficheros pdf que pueden ser abiertos con Acrobat Reader 3 o posterior.
  • crearemos ficheros pdf que pueden ser abiertos con Acrobat Reader 5 o posterior 
-dPDFSETTINGS=<opcion> 
entre las posibilidades de  opcion tenemos las siguientes:
  • /screen selecciona una salida a baja resolución
  • /ebook selecciona una salida a resolución media
  • /prepress 
  • /default selecciona salida destinada a ser útiles en una amplia variedad de usos, posiblemente a expensas de un gran tamaño en el archivo de salida.
Parece que también podría ser usado, en su lugar, -r<res> donde res es la resolución especificada en pixels/pulgada.


-sOutputFile=<nombreFichero>
nombreFichero será el nombre del fichero de salida.


-dAutoRotatePages=<opcion>
entre las posibilidades de  opcion tenemos las siguientes:
  • /PageByPage 
  •  /All  
Esto rotará en modo auto las páginas en horizontal cuando sea necesario.


Referencias


Para aprender más recomendamos la página de Visión General de Ghostscript. Recomendamos muy especialmente visitar dentro de ella la que explicar el uso de ps2pdf y la de uso de Ghostscript. Estas direcciones las hemos encontrado sugeridas en esta página con el título Creating a free PDFWriter using Ghostscript.


En este lugar, un reciente post nos informan de como llevar a cabo esta tarea más cómodamente usando un script hecho al efecto.


Y ... esto es todo por hoy.

sábado, 14 de abril de 2012

Adecuar Emacs/Auctex para usar Pdflatex y Evince por defecto (★☆☆)

Introducción
Por alguna razón que desconocemos,  nuestro dúo preferido  para editar ficheros LaTeX ---emacs y auxtex--- no viene preconfigurado en Ubuntu para usar por defecto el formato pdflatex y el visor Evince. Por una parte creemos desfasado  compilar con Latex para crear un .dvi y por otra, la mayoría de visores no actualizan automáticamente un .pdf si éste ha sido modificado; no es el caso de Evince. Por tanto, queremos que al compilar los .tex desde emacs+auctex actúe pdflatex y que bajo demanda se habra el .pdf generado mediante Evince ... y por suerte emacs es muy configurable.

Suponemos ya instalado en nuestro Ubuntu emacs, texlive y auctex; si no es así, ejecútese la siguiente orden de consola:

sudo apt-get install emacs texlive auctex

Este post ha sido elaborado en colaboración con nuestro seguidor D. Alberto Rodríguez, que recibe nuestro agradecimiento.

Procedimiento

Seguiremos los siguientes pasos:
  • Abrimos cualquier fichero .tex que tengamos a mano.
  • Pulsamos en "LaTeX" del menú contextual de emacs.
  • Posicionamos el cursor en "Customize AUCTeX" y pulsamos en "Extend this Menu".
  • Volvemos a pulsar en "LaTeX" y poner el cursor sobre "Customize AUCTeX" ... ahora aparecerá un menú más amplio, como era de esperar.
  • Nos posicionaremos sobre "Tex Command" y luego sobre "Tex Pdf Mode..." del submenú; haremos clic y veremos que se abre una nueva página. Se trata de operar sobre ella.
  • Veremos el apartado "Tex Pdf Mode" y debe estar en "off (nill)". Esto debe cambiar y para ello pulsamos sobre la tecla "Toggle" y ahora aparecerá a "on (non-nill)". Es necesario guardar lo hecho, por lo que pulsaremos sobre el botón "Save for future sessions". Con esto AUCTeX compilará ahora los .tex con pdflatex y generará ficheros .pdf. Pulsamos sobre el botón "Exit".
  • Seguidamente pulsamos de nuevo sobre "Latex" y pulsamos  sobre "Customize AUCTeX > Tex Command > Tex View > Tex View...". Vamos a "Tex Source Correlate Method" y:                       
    • Pulsamos en el botón "Value Menu" y seleccionamos "synctex". Pulsamos en el botón "State" y marcamos "Save for Future Sessions".
    • Pulsamos en "Value Menu" de la sección "Tex Source Correlate Start Server" y marcamos "Always". Pulsamos en el botón "State" y marcamos "Save for Future Sessions".
    • Pulsamos en "Toggle" de la sección "Tex Source Correlate Mode".  Pulsamos en el botón "State" y marcamos "Save for Future Sessions".
         Pulsamos sobre el botón "Exit".       
  • Para seleccionar a Evince o Okular  como visor predeterminado de pdf:
    • Pulsamos de nuevo sobre "Latex" y pulsamos  sobre "Customize AUCTeX > Tex Command > Tex View > Tex View Program List..." y pulsamos sobre el botón "INS" y rellenamos el formulario como sigue:
      • en "Name:" escribimos:  Evince.
      • si no vemos junto a "Value Menu" la palabra "Command:", pulsamos en dicho botón y seleccionamos "Command".
      • En "Command:" escribimos: evince --page-index=%(outpage) %o
      • Pulsamos en "State" y seleccionamos "Save for Future Sessions".
      • Pulsamos sobre el botón "Exit".
    • Pulsamos de nuevo sobre "Latex" y pulsamos  sobre "Customize AUCTeX > Tex Command > Tex View > Tex View Program Selection.." y pulsamos sobre el botón "INS" y rellenamos el formulario como sigue:
      • Pulsamos sobre el primer botón de "Value Menu" y seleccionamos "Single predicate"
      • Pulsamos en el  botón "Value Menu" contiguo y seleccionamos "output-pdf".
      • En "Viewer" pulsamos su botón correspondiente de "Value Menu" y seleccionamos "Evince".
      • Pulsamos en "State" y seleccionamos "Save for Future Sessions".
      • Pulsamos sobre el botón "Exit".  
Ahora cerramos emacs y si volvemos a abrir con él algún .tex, veremos que funciona como deseábamos. 


Como complemento y en relación con ello, les recomendamos leer este post nuestro.

Para los que prefiren Okular


Si alguno de los lectores prefiere Okular en lugar de Evince, como visor de pdf,  puede seguir las indicaciones  que encontrará aquí.


Y ... esto es todo por hoy.

martes, 7 de febrero de 2012

Mi Primera Clase de Emacs

Introducción

Wikipedia dice que EMACS es un acrónimo de Editor MACroS para el TECO. Fue escrito en 1975 por Richard Stallman junto con Guy Steele. Fue inspirado por las ideas de TECMAC y TMACS, un par de editores TECO-macro escritos por  Guy Steele, Dave Moon, Richard Greenblatt, Charles Frankston y otros. Se han lanzado muchas versiones de EMACS hasta el momento, pero actualmente hay dos que son usadas comúnmente: GNU Emacs, iniciado por Richard Stallman en 1984, y XEmacs, una bifurcación de GNU Emacs, que fue iniciado en 1991. Ambos usan una extensión de lenguaje muy poderosa, Emacs Lisp, que permite manejar tareas distintas, desde escribir y compilar programas hasta navegar en Internet. GNU Emacs es mantenido por el Proyecto GNU Emacs.

Por nuestra parte, en este blog ha sido elogiado mucho ---aunque no suficiente--- el valor de la gran herramienta que es emacs. Y si observan, nos hemos esforzado por decir cómo se complementa emacs para cada lenguaje que ha ido apareciendo. Nos comprometemos a seguir haciéndolo.

Para la edición de este post nos hemos convertido en reporteros y hemos visitado  a tres de los usuarios que lo han sido de Linux desde que este sistema se popularizara a principio de los 90. Les hemos observado trabajar con emacs ---todos usan GNU Emacs, por cierto. El culmen de la espectacularidad llegó cuando les vimos escribir sus trabajos a LaTeX: marcaban párrafos, cortaban y pegaban, añadían líneas en blanco, marcaban columnas, las cortaban y guardaban en registros, pasaban a mayúsculas párrafos completos, traían la consola a su GNU Emacs, consultaban el correo ... En algunos momentos creímos estar ante pianistas o ... abaquistas. ¿Es que la maestría incluye al arte? ¿Cuál es la fina línea que separa a ambos?

Hemos de transmitir la extrañeza con la que estos hombres observan las reticencias de las  nuevas generaciones a usar emacs; se muestran perplejos de cómo los estudiantes van coleccionando "editores" de propósito específico a medida que van tocando lenguajes.

De nuestras observaciones surgen estos contenidos. Es nuestra la mayor parte de la explicación sobre configuración de la instalación, excepto lo referido a .emacs. 

Instalación en Ubuntu 11.10 bajo Unity

Lo hemos dicho antes, en Ubuntu 11.10 la instalación de emacs es con

sudo apt-get install emacs

una vez hecho ésto personalizaremos nuestro GNU Emacs en varios aspectos. 

El tamaño de la pantalla

Lo primero es darle el tamaño que más nos guste a la ventana de emacs; si tenemos un netbook o un notebook, esta operación será obligatoria. Para ello haremos instalaremos "alacarte", herramienta para retocar los lanzadores de las aplicaciones, de uso peligroso y algo tosco:

sudo apt-get install alacarte

Una vez instalado alacarte:

sudo alacarte

seguidamente, en el apartado "Programación", se hace clico sobre "GNU Emacs 23" con lo que se sombrea, luego pulsamos "Propiedades" y añadimos en la casilla "Comando" y al final

-geometry 110x40

Nos ha quedado entonces en la casilla comando: 

/usr/bin/emacs23 %F -geometry 110x40

seguidamente "cerrar" y "cerrar".

Pero como también podríamos haber lanzado emacs desde la teminal, como superusuario por ejemplo, debemos modificar el fichero .bashrc (/home/mi_usuario/.bashrc) si queremos tener el efecto deseado; esto sería añadiendo al final del mismo lo siguiente:

alias emacs23='emacs23 -geometry 110x40'
alias emacs='emacs23 -geometry 110x40'

Por supuesto que los valores 110 y 40 son los apropiados a nuestro notebook; cada cual debe elegir sus valores.

El icono en la barra lateral de lanzadores

Lo segundo es poner un icono en la barra lateral de lanzadores de Unity; para ello haremos Super + a ("Super" es la tecla que en los teclados suele estar entre el Ctrl y el Alt) y escribimos en la barra "emacs"; aparece entonces su icono y haciendo clic sobre él, se abre y aparece el icono en la barra. 

Haremos clic derecho sobre el icono y pondremos un tic sobre "Mantener en el lanzador".

Opciones

Como tenemos el icono en la barra de lanzadores hacemos clic sobre él y lanzamos nuestro emacs. Pulsamos "Options" y deben de quedar con un tic las siguientes entradas de la lista:

Active Region Highlighting
Paren Match Highlighting
Case-Insensitive Search
Blinking Cursor

Entraremos en Show/Hide y procuraremos poner tic en al menos:

Tool-bar
Menu-bar
Tooltips
Size Indication
Line Numbers
Column Numbers

Si se quiere un menú de navegación, pondríamos tic también sobre Speedbar y ... en general sobre todo lo que queda, pues todo es interesante.

Seguidamente vamos al sistema de codificación:

Options -> Mule (Multilingual Environment) -> Set Language Environment -> UTF-8

Finalmente seleccionamos la fuente por defecto. Nos gusta mucho lo que viene por defecto, no obstante puede que el tamaño de la letra sea demasiado pequeño; por ello seleccionaremos un tamaño algo más grande:

Options -> Set Default Font...

y sobre la caja que se abre seleccionamos fuente, estilo y tamaño. Nos gusta:

Monospace, Regular, 10

seguidamente pulsamos "Aceptar" ... y hecho todo esto, pulsamos ---no olvidarlo nunca--- "Save Options". Con todo lo dicho, tendremos bastante adecuado nuestro emacs.

El fichero .emacs

La modificaciones al tomar opciones son guardadas en un fichero de configuración, el fichero .emacs. Nosotros podemos tocar en él para completarlo a nuestro gusto. Por ejemplo, si queremos que cada vez que abramos un fichero con nuestro emacs, la línea del cursor quede resaltada o iluminada, editaremos con el propio emacs nuestro .emacs (su localización es /home/nuestro_usuario/.emacs) e introduciremos estas líneas:


;;Activa el iluminado de la linea del cursor
(global-hl-line-mode 1)

Manuales

Siempre recomendamos leer manuales pequeños al principio y para ello nada mejor que el pequeño gran manual de D. Hector Mora; este manual nos llevará al final del uso básico de emacs sin ratón, como debe ser. El manual de referencia es el que brinda la homepage for GNU Emacs.

El lector puede sondear la red para consultar la enormidad de manuales y minimanuales sobre emacs.

Uso Básico

Nosotros dejamos aquí el uso básico sin ratón recogido de los usuarios.

Hay que saber que:
  • Muchos, al hacer estos manuales, escriben C en lugar de Ctrl y M en lugar de Alt. Nosotros preferimos Ctrl y Alt.
  • <break> no es tecla, quiere decir en nuestro lenguaje que quitamos las manos del teclado, o sencillamente que no pulsamos tecla alguna durante un instante. Por ejemplo, Ctrl+x <break> 5 2  quiere decir que pulsamos Ctrl+x, dejamos de pulsar cualquier tecla, pulsamos 5 y luego pulsamos 2.
  • Ctrl+ significa que mantenemos pulsada la tecla Ctrl y luego pulsamos las siguientes teclas en secuencia, hasta encontrar un <break>, momento en que no estaremos pulsando ninguna tecla. Por ejemplo, Ctrl+x f significa que manteniendo siempre pulsada la tecla Ctrl pulsamos primero x, soltamos la tecla de x y luego pulsamos la de f. Ctrl+x f es sinónimo de Ctrl+x <break> Ctrl+f pero preferimos la primera por ser más económica en tiempo y esfuerzo.
  • A veces tenemos que pulsar una tecla que no parece estar reflejada en la secuencia. Por ejemplo, Alt+% nos exige hacer Alt+shift+5.
  • Es preciso estar muy atento a la línea que hay dentro de la caja inferior en la pantalla de emacs. Esa línea es llamada "mini-buffer" y le precede la "línea de modo". Por ellas es por donde se comunica emacs con nosotros ... y nosotros con él.
¡Los atajos!

Ctrl+a             - lleva el cursor al comienzo de la línea (vale incluso marcando)
Ctrl+e             - lleva el cursor al final de la línea (vale incluso marcando)
Ctrl+g            - iterrumpe una orden en curso, es equivalente a ESC pulsado
                         en secuencia cuantas veces sea necesario. Ctrl+g puede 
                         tener efecto más rápido que ESC, aunque a veces
                         es también necesario pulsarlo varias veces.
Ctrl+o           - coloca una línea en blanco bajo la línea en la que está situado el
                        cursor

Ctrl+s            - busca un carácter o secuencia de caracteres
Ctrl+x f         - carga un fichero
Ctrl+x s         - graba el fichero
Ctrl+x w        - guarda el fichero abierto, pero con otro nombre si se quiere
Ctrl+y            - copia lo que hay en el buffer de memoria

Ctrl+espaciadora   - señala el comienzo de un bloque a marcar.
                                Con las flechas nos movemos hasta el final
                                del bloque deseado. Veremos que se ha sombreado.
Ctrl+w                   - corta el bloque marcado
Alt+w                    - copia el bloque marcado

Ctrl+x <break> 2   - parte la ventana actual en dos secciones una sobre la otra
Ctrl+x <break> 3   - parte la ventana actual en dos secciones una a la derecha
                                 de la otra

Ctrl+x <break> 1   - deja una parte de la ventana, si estuviera partida en secciones. La
                                 ventana que queda es aquella en la que está el cursor
                                 cuando se ejecuta la orden
Ctrl+x <break> o       - mueve el cursor de una sección de la ventana a la otra,
                                     cuando la ventana está partida en dos secciones
Ctrl+x <break> 5 2    - abre una nueva ventana

Ctrl+x <break> u       - deshace lo último que hemos hecho en una sección de ventana

Alt+%    - busca y reemplaza (esto es, Alt+shift+5, las tres a la vez)
Alt+q     - reordena el texto del párrafo o entorno justificándolo
Alt+!     - aparece la línea de órdenes de la consola dispuesta para que ejecutemos
               alguna orden. Esto es Alt+shift+1, todo a la vez.

Alt-x <break> hl <break> Tabulador <break> intro   - resalta la línea del cursor, si es que no
                                                                                      hemos decidido hacer este cambio
                                                                                      permanente tocando al .emacs como
                                                                                      decíamos antes.

Atajos bajo auctex en ficheros .tex

Para escribir ficheros .tex con emacs, instalaremos el paquete que adecua el menú de emacs a LaTeX:

sudo apt-get install auctex

y se tiene cargado un fichero .tex entonces 

Ctrl+c t p - hace que el resultado de la compilación sea un .pdf 
                  en lugar de un .dvi. Es un commutador, si está puesto
                  lo quita y si está quitado, lo pone.
Ctrl+c t i - la compilación entra en modo interactivo. Sirve para depurar
                 errores y también es un commutador. Muestra el contenido del
                 fichero .log a medida que éste se va haciendo.
Ctrl+c c   - compila el fichero 

Ctrl+c <break> ;     - comenta el bloque previamente marcado, si no está comentado,
                                 y lo descomenta si lo está.

Ctrl+c e       - introduce en el texto un entorno de latex por seleccionar

Y ... esto es todo por hoy.

domingo, 5 de febrero de 2012

Instalar Minecraft en Ubuntu

Introducción

Minecraft es un popular juego de construcción y supervivencia. Ha ganado muchos seguidores incondicionales en los últimos 2 años.

El juego hace funcionar la creatividad para conseguir las mejores construcciones y conseguir sobrevivir. Tiene un modo multijugador cada vez más popular.

En definitiva, tenemos que mostrar a nuestros lectores la forma de instalarlo en Ubuntu.

Requisitos

Para instalar este juego deberemos tener instalado java. En Ubuntu 11.10 se hace con la orden:

sudo apt-get install openjdk-7-jre

Para versiones anteriores, podéis buscar en páginas anteriores de este blog.

Para jugar con este juego, se recomienda contar con al menos 1 Gb de RAM y memoria gráfica dedicada. Si esto no se tiene, el juego irá lento y mal.

Instalación

 Debemos descargar el instalador del juego aquí en caso de que vayamos a usar  la copia pirata o en cambio si tenemos una cuenta premium, que es lo que desde el blog recomendamos, solamente tendremos que descargar el "launcher" del juego desde la web oficial. Una vez tengamos una de las dos cosas, haremos clic derecho, propiedades y en la pestaña de permisos marcaremos la casilla de "Permitir ejecutar el archivo como un programa". Hecho esto, iremos a "Abrir con" y elegiremos "Abrir con OpenJDK Java 7 Runtime" como se muestra en la imagen.



Para iniciar con la versión pirata hacemos doble click sobre el MinecraftSP.jar y una vez lo hayamos hecho, se nos mostrará la siguiente ventana:



En esta ventana escribiremos un nombre y ---muy importante--- pulsaremos en  "Force Update"; seguidamente pulsaremos en "Enter Game".

Una vez termine de descargar, ya tendremos la última versión y estará todo listo para jugar.

Ejecutar el Juego

Para ejecutar el juego solamente iniciamos el MinecraftSP.jar e ingresamos al juego o en cambio si tenemos cuenta premium iniciamos el launcher oficial que descargamos de la página del juego e ingresamos con nuestro usuario.



Y ... esto es todo por hoy.