; Vince y el mundo del software: tutorial
Mostrando entradas con la etiqueta tutorial. Mostrar todas las entradas
Mostrando entradas con la etiqueta tutorial. Mostrar todas las entradas

sábado, 21 de febrero de 2015

Compilar lisp desde sublime text 2

Bueno, siguiendo con lisp un poco, ahora toca configurar lisp en sublime text 2. Explicaré cómo compilar pero a lo más sencillo.

Para el coloreado primeramente, abren un archivo .lisp (o .lsp) y hacen lo siguiente:

View>Syntax>Open all with current extension as>Lisp

Y listo!

Ahora para compilar.

1.- Instalan el SBCL (este tutorial es para ese compilador, pero es refácil para otro compilador), y se aseguran que el binario quede en el PATH, para ello, al instalar el sbcl vean que quede marcada la opción de agregar al PATH; si quieren usar la versión de lispstick, lo más fácil es instalarlo de nuevo pero en la carpeta donde está el lispstick (sigan las instrucciones de la página de lispstick), y marquen la opción de PATH, de lo contrario tendrán que revisar cuáles son los directorios que hay que agregar al path (no es sólo el binario si no me equivoco).

2.- luego en el sublime vayan a:
Tools>Build System> New Build System

3.- En el archivo que se les abre escriben:

{
 "cmd": ["sbcl", "--noinform", "--script", "$file"]
}

4.- guardan el archivo, para ello File>Save, y lo guardan en la carpeta que les aparece, en mi caso es:

C:\Users\vincegeratorix\AppData\Roaming\Sublime Text 2\Packages\User

Le ponen un nombre característico, como "LispSBCL" o algo así.

El problema con ésto es que no cambia automáticamente entre un compilador y otro (cuando tienen abiertos varios archivos de distintos lenguajes), es bastante molesto, pero a mí me da un poco lo mismo, simplemente me acostumbré a cambiarlo manualmente y me da auténtica flojera leerme la documentación para ver cómo hacerlo (y que quede al poner la opción de build system automático), pero si quieren investigar me escriben la solución en los comentarios, sería de gran ayuda para todos :) Este es un blog un poco chanta de un estudiante motivado simplemente xD jajjaja :3

Configurar Lisp en windows con emacs y doc view

Hola! ahora estoy en windows jejeje, así que configuré lisp en windows, pero the-noob-style, así que si quieren algo muy fácil, les recomiendo este tutorial.

Para tener lisp con emacs, sbcl (el compilador) y slime (para tener una buena consola) basta con descargar el lispstick y listo! violá!
Lispstick es un compilado con todas las herramientas necesarias, listo para funcionar. Lo descargan de:

http://www.iqool.de/lispstick.html

Recomendaciones


Para ejecutarlo arrancan el archivo "run.bat", y le pueden hacer un acceso directo al escritorio y le cambian el ícono.
Sin embargo, si quieren modificar el archivo de configuración ".emacs", tendrán que modificar primero una línea del "run.bat", en particular la última, que le sacan el "-Q", opción que significa que no toma en cuenta el archivo .emacs, el cual es necesario si quieren hacer modificaciones (ya les explicaré) la dejan así:


%CD%\%EMACS%\bin\runemacs.exe --load  %CD%\.emacs --directory %CD%/%SLIME%/


Es muy importante que antes de eso hagan una copia de respaldo del archivo .emacs, ah! y windows les alegará cuando intenten modificar el nombre (ya que dirá que "no tiene nombre", porque no hay nada antes del punto), así que para respaldarlo una buena opción es comprimir el archivo en un rar o zip, y luego cuando lo quieran recuperar simplemente borran el nuevo y extraen el antiguo.

Ya! con eso están listos (bueno, antes también lo estaban... pero bueno, no podían configurar nada, y yo uso el doc-view).

Actualizar


Para actualizar el lispstick (ya que trae versiones viejas), descargan el programa correspondiente, lo instalan y copian la instalación, tal como sale en las instrucciones de la página de lispstick.
Un dato importante, actualicen emacs y slime, pero el sbcl 2.2 y superior da un error con el slime, así que yo dejé la versión antigua. Pueden buscar soluciones, pero qué demonios XD La primera vez que lo arranquen luego de actualizar demorará un poquito más, pero sólo unos pocos minutos.

Doc-View


Esto es sólo para los que deseen abrir pdf en emacs, es un tanto largo.... pero paso a paso

El doc-view viene por defecto, pero en windows es un poco más difícil ponerlo en marcha.

Antes que nada instalan el soporte a png, para ello, crean un archivo nuevo en emacs (no en el REPL de slime/SBCL, ya que este último es Common Lisp, y necesitamos Emacs Lisp), y escriben lo siguiente:


(cdr (assq 'png dynamic-library-alist))


Luego apretan C-x C-e (Ctrl + x y luego Ctrl + e para los que no saben), y abajo les dará dos strings con los archivos soportados de png. por ejemplo a mí, uno de ellos fue "libpng16-16.dll".

Para darle soporte, simplemente tienen que descargar uno de esos archivos y copiarlos a la carpeta "bin" de emacs (van a su instalación de emacs dentro de lispstick y luego a bin, y ahí copian el susodicho archivo). Es algo complicado encontrarlo a veces, ya que usa la versión más última, pero lo que yo hice fue descargar otro programa que venía con esa dll, la copié, y luego borré el programa.

OJO! Tiene que ser la versión de 32 bits, ya que el lispstick usa emacs de 32 bits.

Luego de ello reinician emacs y cargan un archivo png, y les debería funcionar.

GnuWin32


Para añadir más soporte a emacs, tienen que descargar "gnuwin32" de acá:

http://sourceforge.net/projects/getgnuwin32/files/

Lo descargan e instalan. Luego de ello ejecutan el archivo "download.bat", les demorará harto porque descarga un montón de cosas (tengan un giga preparado para la descarga e instalación, es menos).
Luego que termina de descargar ejecutan el archivo "install.bat", y les demorará otro montón porque compila los paquetes con cygwin y mingw.

Luego de tooodo eso, tienen que agregar la carpeta de las librerías a a variable de entorno PATH del sistema operativo, para ello ubican la carpeta "bin" dentro de la carpeta donde se instalaron los paquetes, en mi caso es:


C:\Users\vincegeratorix\Downloads\lispstick\GetGnuWin32\gnuwin32\bin


y luego en windows 7 (si tienen otro windows busquen en google cómo cambiar path), van a "Equipo" y luego a "Propiedades del sistema", para luego ir a "Configuración avanzada del sistema", en la ventana que les aparece clickan en el botón de "Variables de entorno"; seleccionan "PATH" y le dan a "Editar".
Para editar simplemente ponen un punto y coma al final de la línea y agregan la dirección de su carpeta, en mi caso es así:


C:\Users\vincegeratorix\AppData\Roaming\cabal\bin;C:\Program Files (x86)\FreeArc\bin;C:\Users\vincegeratorix\Downloads\lispstick\GetGnuWin32\gnuwin32\bin;C:\Program Files (x86)\gs\gs9.15\bin;C:\Program Files (x86)\gs\gs9.15\lib;C:\Program Files (x86)\SMLNJ\bin


Lo importante es la línea del gnuwin32, el resto es el gs (necesario para doc-view) y otros compiladores y cosas xD

Ghostscipt


Antes de configurar doc-view, tienen que instalar el ghostscript, para ello descargan la versión de 32 bits de acá:

http://www.ghostscript.com/download/gsdnld.html

 y lo instalan, luego agregan al PATH la carpeta bin y lib (tal como está en el ejemplo de arriba).

Configurar Doc-View


Para configurar doc-view y ver archivos pdf hagan lo siguiente:

Apretan M-x (Alt+x) y escriben abajito "customize-group" e intro (RET es Return, o sea intro, por si ven tutoriales). luego escriben ahí mismo "doc-view" y RET.

Configuraciones

Recomiendo activar la visión contínua, para ello activan la opción de Doc View Continuous, y le dan a Toggle para que quede en on

Luego en "Doc View Ghostscipt Program" escriben: gswin32c

Por si acaso (no estoy seguro cómo es por defecto) no olviden modificar para que quede así:
 Doc View Pdf >Png Converter Function:
(*) doc-view-pdf->png-converter-ghostscript

Con eso está listo, ahora se les verá feo y chico, para ello ajustan la opción de resolución y las opciones de ghostscipt. Yo le puse a los dos de bits el número 2 (porque lo decían en un foro que podía ayudar) y resolución le dí 200, por mi pantalla, pero pueden variar.

Recuerden cambiar el State de cada opción que modifican a "Save for future session"

Con eso ya podrán abrir pdf en emacs

Además si quieren pasar de pdf a texto, pueden instalar el xpdf, agregar los binarios al PATH y modificar las opciones de doc-view.

Les dejo mi .emacs para que tengan una idea:


(setq inferior-lisp-program "sbcl")
(add-to-list 'load-path (concat (getenv "HOME") "\\" (getenv "SLIME")))
(require 'slime)
(slime-setup '(slime-fancy))
(define-key global-map (kbd "") 'slime-selector)
(slime)

;esto es nuevo
(custom-set-variables
 ;; custom-set-variables was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 '(doc-view-continuous t)
 '(doc-view-ghostscript-options
   (quote
    ("-dSAFER" "-dNOPAUSE" "-sDEVICE=png16m" "-dTextAlphaBits=2" "-dBATCH" "-dGraphicsAlphaBits=2" "-dQUIET")))
 '(doc-view-ghostscript-program "gswin32c")
 '(doc-view-pdf->png-converter-function (quote doc-view-pdf->png-converter-ghostscript))
 '(doc-view-resolution 200))
(custom-set-faces
 ;; custom-set-faces was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 )
 
 ;ASDF esto lo agregué yo por flojera de escribirlo cada vez xD
(require "asdf")

jueves, 22 de enero de 2015

Breve resumen de funcionalidades de google (para ahorrarles leer el manual y mejorar sus búsquedas)

Esto es para buscar en Google, para agilizar sus búsquedas.

Antes de leer, comprender que no se usan comillas excepto que lo diga explícitamente, o aparezcan comillas dentro de otras, en ese caso se ponen las interiores.

and: si quieren que aparezcan dos palabras siempre usan "and" entre las palabras ej: "hola and chao" les buscará resultados que contengan ambas palabras.
-: si quieren que no aparezca alguna palabra usan -palabraquenoquierenqueaparezca ej: "hola -chao"
"": si quieren una frase exacta usan comillas ej: "había una vez" (con las comillas) también sirve para forzar que aparezca cierta palabra, o cuando, por ejemplo, buscan una palabra rara y google se las aproxima a otra conocida: ej: buscan "hol" y google le añade resultados de "hola", pues para que aparezcan sólo resultados de "hol" y no de "hola", lo ponen entre comillas, es decir ""hol"".
site: si quieren que la búsqueda sea en una pag específica usan "site:www.pagina.com"
*: es un comodín (lo entenderán quienes usen bach XD) po r ejemplo: " hola site:*.cl" y les busca "hola" en páginas terminadas en ".cl" (páginas chilenas).
+: si pegan palabras con un "+" entre medio es lo mismo que si las separan por un espacio, ej: "había+una+vez"

búsqueda para intervalos de números: si ponen " cualquiercosa 1999..2003" es lo mismo que buscar "cualquiercosa+1999+2000+2001+2002+2003" muy útil para buscar artiiculos periodísticos, y si le suman en "and" mucho mejor, ejemplo: ""carabinero preso" and 1999..2000" (nótese las comillas) les buscará páginas con la frase exacta "carabinero preso" que además contengan los años del 1999 al 2003.
Nótese que son DOS los puntos entre los números (en este caso años), y que los números van pegados (sin espacio entre medio).

mezclando pueden hacer esto por ejemplo: ""carabinero preso" and 2000..2011 -carabinera site:*.cl" y les buscará páginas con la frase exacta "carabinero preso" entre los años 2000 y 2011 que no contengan la palabra carabinera y que sean sitios chilenos ¿ven? es muy útil si lo aprovechan.

calculadora:
-si escriben "999 pesos mexicanos" o "789 dolares estadounidenses" les aparecerá la conversión de esa moneda a la moneda local (depende la versión de google que usen, por ejemplo si usan google.es les convertirá a euros, si usan google.com.mx les convertirá a pesos mexicanos, y si usan google.cl les convertirá a pesos chilenos)
-Si quieren convertir unidades a cualquier otra, también pueden usar la calculadora, por ejemplo si quieren convertir de dólares estadounidenses a pesos chilenos, pueden buscar "345 dólares estadounidenses a peso chileno", que les transformará 345 dólares a peso chieno. si les complica escribir todo eso pueden usar las siglas, por ejemplo "345 usd a clp", y les buscará igual. pueden combinar ambas formas, como "345 dólares a clp", pero ojo, que en ese caso les buscará de dólares estadounidenses, si quieren dólares de otro país tendrán que ponerlo completo o la sigla.

-si ponen operaciones no necesitan de una calculadora, por ejemplo si escriben: 5*5 les aparecerá 25. incluso si escriben (5*5)+3*(3+4) les dará 46. incluso si escriben "tan 87" les dará la tangente de 87°, o "cos 90" les dará el coseno de 90°, muy útil.

eso, cuando me acuerde de más las anoto.
haré esta nota pública para que la puedan difundir :D

Nota: el "and" sólo hace efecto en los elementos más próximos, uno a la izquierda y otro a la derecha, por ejemplo si buscan: "hola and "había una vez" en el cielo", les hará: "hola and "había una vez"+en+el+cielo" o sea, el "en el cielo" no está afecto en el "and", y por lo tanto buscará páginas que contengan si o si el "hola" y el "había una vez" pero que no necesariamente contengan en "en el cielo" y no necesariamente en ese orden ¿se entiende?, es lógica, la búsqueda en google tiene mucho de lógica.
Nota2: complicando las cosas, se pueden usar múltiples "and" o "-", etc. por ejemplo: "hola and chao and adios -goodbye -"hasta siempre" site:www.facebook.com" y les buscará en facebook páginas que esten si o si las 3 palabras: "hola", "chao" y "adios", pero que no estén ni "goodbye" ni "hasta siempre".
Nota3: por si no se les ocurrió, para omitir resultados de alguna página en concreto (ejemplo, facebook) ponen "cualquiercosa -site:www.facebook.com"
Nota4: Para buscar libros por ejemplo, es muy útil usar las comillas para el título y el autor, y agregar "descargar" (sin o con comillas), y/o "pdf". Sin embargo para descargar cosas google cada vez es peor, ya que por presiones ha tenido que darle menos ranking a las páginas de descarga, por lo que aparecen más abajo. Si no lo encuentran en google pueden echarle un vistazo a duckduckgo, a bing o a yahoo, pero no necesariamente tienen la misma sintaxis o características que google.


Para que vean lo complejo que es el buscador de Google, y no lo miren a huevo, es una maravilla de software.
 
Artículo del 2011, copiado de mi blog filosófico y actualizado un poco con más tips y aclaraciones. Si te sirvió compártelo, y si tienes más tips ponlos en los comentarios. Google es muuuy potente y acá puse lo más importante, pero si tienes tips útiles, compártelos.
 

viernes, 9 de enero de 2015

Configurar SBCL Lisp en Emacs con SLIME y luego compilar el buffer de salida

Hola! Ufff! cuánto tiempo, pero estaba metido en otras yerbas así que no he tenido tiempo (también abandoné el blog de descargas, espero poder actualizar algo allí también).

Bueno, a lo mío:
Me propuse como meta aprender lisp ahora en vacaciones, al menos lisp. Buscando, encontré que hay más de un compilador/intérprete, pero me decanté por SBCL ¿Por qué? Pues: 1.- CLISP no se actualiza hace años (2010), y tiene muchos errores que ya parece abandonado, además tuve una mala experiencia. 2.- SBCL es sucesor de CMUCL, así que sería bobo instalar el segundo. 3.- SBCL es más rápido.
Quizás me pase a otro después, pero por ahora estoy en ese.
 Aún estoy recién aprendiendo lo básico, y sé bastante poco.

Como estoy aprendiendo, uso bastante la consola interactiva, sin embargo la de sbcl tiene un problema: No se puede retroceder (teclas de movimiento), sólo escribir y borrar. Lo cual es bastante molesto.
Buscando una solución me encontré con slime, sin embargo muchos tutoriales para instalarlo en emacs simplemente no me funcionaron, eso hasta que encontré este. Lo robaré para explicar en español lo mismo, ya que me funcionó y así lo encuentran más fácil en google xD
El link original está en:

http://stackoverflow.com/questions/12607716/setting-the-slime-in-emacs

Como yo uso Linux mint, que es sucesor de Ubutu, que es sucesor de Debian, para instalarlo se usa en una consola (o en el centro de software que odio):

$ sudo apt-get install sbcl

Si usan Fedora o RedHat, en vez de "apt-get" usan "yum", si usan otra distro supongo que sabrán instalar paquetes, o buscan en google.

Luego instalan el emacs, yo uso el emacs24, simplemente porque el xemacs hace dolor en los ojos y el emacs23 suena más antiguo (no lo he probado). para instalarlo usan:

$ sudo apt-get install emacs24

Luego de eso instalan el quicklisp, que es con el cual instalarán slime (copio).

$ sudo apt-get install wget 
$ cd ~/Downloads
$ wget http://beta.quicklisp.org/quicklisp.lisp 
$ sbcl --load ./quicklisp.lisp

Tip para novatos: Recordar que el signo de peso significa que se pone en la terminal, como usuario normal. El asterisco de abajo significa que ya están en la consola interactiva de sbcl.

* (quicklisp-quickstart:install) 
* (ql:add-to-init-file)
* (ql:quickload "quicklisp-slime-helper") 
* (quit)

Luego de eso en su carpeta personal (/home/<usuario>) crean el archivo ".emacs". Recuerden activar ver los archivos ocultos en su navegador de archivos. Si tienen dudas pueden hacerlo desde línea de comandos con el comando:

$ nano ~/.emacs

para usar nano, que es un editor en consola fácil de usar y tiene ayudita abajo (recordar que el ^ es Ctrl, es decir que si dice "^x" apretan Ctrl+x).
Si le tienen miedito a la consola pueden usar gedit (si lo tienen instalado), para ello:

$ gedit ~/.emacs

Luego en el archivo copian y pegan lo siguiente:

(setq inferior-lisp-program "sbcl --noinform")
(load (expand-file-name "~/quicklisp/slime-helper.el"))

En el link aparecen las líneas al revés, pero el orden aparentemente no importa.
El "--noinform" es para que no les salga el mensaje de bienvenida de sbcl.

Luego de todo eso abran el emacs, y apreten M x, escriben "slime" y apretan intro.
Ahora quedarán pasmados con lo anterior, porque apretarán "M x" y no les saldrá nada xD Pues me costó encontrar, y quizás ustedes sabían, pero el "M" es de "Meta" así que apretan Alt+x, escriben abajito "slime" (sin comillas), y apretan intro. (si leen en algún manual que apreten C x es Ctrl+x)
Les saldrá la consola interactiva, pero abajo (si usan el emacs24 como yo), así que apretan el click derecho en la barra de abajito de la subventana, donde dice:

U:%%- *GNU Emacs* Top L5 (Fundamental)

Quizás les salga algo distinto, pero similar. con el click izquierdo la borran.
Luego para cambiar de tipo de subventana clickan el izquierdo en el nombre para avanzar y el derecho para retroceder. El nombre es lo que está en negritas entre los asteriscos (en el caso de slime, será algo como *slime-repl sbcl*).

Ahora viene lo otro... tienen la consola interactiva y todo, pero qué pasa si quieren guardar el código y luego compilarlo... pues será una auténtica odisea.
Lo primero que tienen que hacer es guardar el buffer, así que van al menú "File" y luego a "Save as" (para guardar el buffer), y seleccionan ruta y nombre.

El problema es que el buffer no es compilable. Para arreglar eso, hice un pequeño script en python que hace la magia de volver el buffer compilable (comenta los resultados, borra el prompt "CL-USER>", y elimina las líneas con error de compilación (deja los warnings)). Ese script lo subí a github, y lo pueden encontrás acá:

https://github.com/vincegeratorix/slime-cleaner