Archivos para Diciembre 2008

31
Dic
08

Propósitos de año nuevo

Algunas cosas que tengo pensadas lograr en el 2009 son:
1) Hacer ejercicio
2) Terminar por lo menos 7 proyectos en mi tiempo libre bien.
3) Hacer lo posible para pasar el 1級

Hasta ahora se me ocurren esos sólamente, tal vez luego la lista
cambie.

Ah! Los proyectos podrían ser los siguientes.

.) Hacer un major mode para autocompletar macros

..) Hacer un proyecto relativamente complicado en C++ orientado a
objetos. Lo que lo complica es que fuera de un browser e Emacs no sé qué
aplicaciones sean buenas para el escritorio…

…) Leer un buen pedazo del ‘Dragon book’ y tratar de impletmentar algo
con lo que aprendí.

….) Aprender lo que no aprendí en la clase de Algoritmos con el libro
de MIT.

|) Aprender lo suficiente Common Lisp para hacer algo interesante con
él. Un mini proyecto para el Hunchentoot.

|.) Escribir textos largos a-la Steve Yegges. Flujo de conciencia.

|..) Aprender de Computer Graphics. Aprender a utilizar OGRE.

|…) Leer los libros de Kathy Sierra sobre Java. Tengo que leer mucho
en el 2009.

Los libros que tengo que leer por el momento son:
Practical Common Lisp, Head First–Patterns y Object…Analysis/Design,
Thinking in C++ Vol.2, The Rails Way, Practical JRuby, Dragon Book, Pro
OGRE, el libro de Clojure, el 本 de Introduction to Algorithms… hmm lo
que sea.

|….) Debería de aprender Merb. Después de todo es lo que se va
|convertir en Rails 3 prácticamente.

||) Sólo porque lo voy a tener instalado en el server quiero moverle a
||.NET un ratillo también.

Bueno esa es la tarea para el próximo año.

23
Dic
08

Instalando sbcl, SLIME y Hunchentoot en el server

Ya con el emacs en el server, instalé Steel Bank Common Lisp primero. Me basé mucho de este sitio para instalar varias cosas.

  • Las cosas que bajo las pongo siempre en la carpeta /usr/local/src/. Primero instalo el sbcl:


    wget http://prdownloads.sourceforge.net/sbcl/sbcl-1.0.23-x86-linux-binary.tar.bz2

    cd sbcl-1.0.23-x86-linux-binary/
    ./install.sh

  • Ya con el sbcl, instalo el slime en el site-lisp de emacs (o lo pongo después en su load-path, lo que sea):


    wget http://common-lisp.net/project/slime/snapshots/slime-current.tgz
    tar xvfz slime-current.tgz

  • Agregamos algo en el .emacs para el SLIME:


    (add-to-list 'load-path "/usr/local/share/emacs/site-lisp/slime")
    (setq inferior-lisp-program "/usr/local/bin/sbcl")
    (require 'slime)
    (slime-setup '(slime-fancy slime-asdf))

  • Ahora en el emacs hacemos M-x slime e instalamos algunas cosas (Hunchentoot y Cl-WHO) con asdf.


    * (require 'asdf-install)
    * (push :hunchentoot-no-ssl *features*)
    * (asdf-install:install :hunchentoot)
    * (asdf-install:install :cl-who)

    Cada vez que sea necesario presionamos 0 RET
    Como prueba de que si está sirviendo la instalación del Hunchentoot…


    * (asdf:oos 'asdf:load-op :hunchentoot-test)
    * (hunchentoot:start-server :port 4242)

    Ahora en el browser nos vamos a localhost:4242 por ejemplo, y ahí debería de aparecer la pantalla por default del Hunchentoot.

  • Por último, creamos un archivo .sbclrc con el siguiente contenido.


    (require :asdf)
    (push "/home/waricho/systems/" asdf:*central-registry*)
    (push "/usr/local/lib/sbcl/site/hunchentoot-0.15.7/" asdf:*central-registry*)
    (push "/usr/local/lib/sbcl/site/cl-who-0.11.1/" asdf:*central-registry*)
    (push "/usr/local/lib/sbcl/site/" asdf:*central-registry*)

    (push :hunchentoot-no-ssl *features*)
    (asdf:operate 'asdf:load-op :hunchentoot)
    (asdf:operate 'asdf:load-op :cl-who)

  • Con esto ya tenemos un ambiente de trabajo para realizar aplicaciones web en Common Lisp.
22
Dic
08

Instalando el emacs en el server

Estoy comenzando a aprender Common Lisp. Todo porque vi el video de
Marco Baringer sobre cómo configuraba el SLIME en Emacs. También los ensayos de Paul Graham, el intro de Practical Common Lispde apress y Steve Yegges influenciaron mucho.
Sin embargo, por alguna razón no he podido acceder utilizar la opción de M-x slime-connect de SLIME para conectarme al Swank Server. (Hice una pregunta en Stack Overflow acerca de esto, en algún lado vi que podía ser un error del kernel y que se podría arreglar corriendo sbcl con nohup pero no me sirvió). Después de varios días de tratar de arreglar esto, decidí mejor instalar emacs en el server, lo cual resultó ser una genial idea (creo yo). Las cosas que tuve que hacer para instalarlo fueron:

  • Bajar la version de emacs


    wget (version de emacs a bajar)
    cd emacs

  • Modificar el archivo configure de emacs y buscar la línea doug_lea_malloc=yes y cambiarla a ‘no’. (doug_lea_malloc=no)
  • Instalarlo de la siguiente manera:
    ./configure –prefix=/usr/local –with-x=no –without-toolkit-scroll-bars –without-xim

FIN.

17
Dic
08

Cómo me ha ido

Estas vacaciones me la he pasado instalando cosas en el server, y
leyendo algunos libros. Instalé el passenger para rails; más o menos
logre instalar el Hunchentoot para Common Lisp; he tenido problemas
instalando el Swank server para el SLIME del emacs; y por último me puse
a ver que onda como se instala el mod_mono para hacer que el Apache
pueda servir páginas ASP.

Aparte de las instalaciones, me he puesto a leer el libro de ‘Thinking
in C++’ que he tenido de tarea desde hace ya rato. Además he estado
leyendo el SICP y el Little Schemer. Creo que lo que voy a tratar de
hacer estas vacaciones es, además de terminar de instalar esas sandeces,
es terminar de leer el libro de Bruce Eckel porque he aprendido mucho de
él.

Habría querido aprender a utilizar más Common Lisp, pero no he
logrado hacer que funncione el Swank, lo que me deja un poco molesto. Lo
podría hacer local pero ‘no es el chiste…’ Estaba pensando en hacer un
spin-off y hacer un blog de un tipo que trata de aprender Common Lisp
sin antes saber nada acerca de otra cosa. (つまり僕の話…笑)

12
Dic
08

Aprendiendo Ruby on Rails a la mala con el Passenger.

Estuve en el IRC del passenger un rato esperando a que me contestaran o del que algún otro tipo con mi problema llegara, pero bueno, no tuve mucha suerte. Creo que en general la comunidad de Rails esta algo del nabo.
El error en el production.log es 500 Internal Server Error, y se obtiene debido a que las aplicaciones en el Passenger usan el modo de production por default, mientras que el WEBrick nos tiene acostumbrados al modo de development por default. Para solucionar el error lo que se tiene que hacer es investigar más acerca de la forma en que se trabaja con Ruby on Rails y sus environments y más concretamente modificar la configuración del Apache para que en el Virtual Host diga RailsEnv development


VirtualHost *:80
ServerName www.mycook.com
DocumentRoot /webapps/mycook/public
RailsEnv development
RailsBaseURI /
VirtualHost

Con esto ya puedo empezar a aprender Rails a mi manera.

12
Dic
08

Instalando el sqlite en el server (Problema de passenger)

Al momento de que escribo esto el llamado ‘mod_rails’tiene un bug al usar su propio fork de ruby: Ruby Enterprise Edition. Por alguna razón extraña, si usas su versión de ruby, vas a tener que instalar la gem para sqlite. Entonces en teoria debería de funcionar esto:


gem install sqlite3-ruby

… pero no! jajaja. Porque ni siquiera tengo instalado el sqlite3 (!). Los errores que surgen debido a esto son:

*** Unexpected error
in Passenger: Cannot spawn application ‘/Users/path/to/application’: The
spawn server has exited unexpectedly.

y este otro:

gem install sqlite3-ruby
Updating metadata for 7 gems from http://gems.rubyforge.org
…….
complete
Building native extensions. This could take a while…
ERROR: Error installing sqlite3-ruby:
ERROR: Failed to build gem native extension.

/***/***/***/***/***/ruby extconf.rb install sqlite3-ruby
checking for sqlite3.h… no

El primero de ellos se debe al bug del passenger de que necesita tener la gem instalada y el segundo se debe a que simplemente si contamos con una instalación previa del sqlite, entonces no la gem no podrá ser instalada. Así que, hoy 11 de diciembre del 2008, aunque quieras usar mysql en vez de sqlite, tendrás que tener instalado en el server el sqlite. -_-T
Como sea, instalar el sqlite es muy fácil.

  1. Primero bajamos el tarball del sqlite de la pagina oficial, un wgetazo… yo todo lo pongo primero en /usr/local/src/ y lo instalo en /usr/local/sqlite


    wget http://www.sqlite.org/sqlite-amalgamation-3.6.6.2.tar.gz
    tar -zxvf sqlite-amalgamation-3.6.6.2.tar.gz

  2. Ahora cd a la carpeta descomprimida y ahi lo clásico (sí sirve)


    ./configure --prefix=/usr/local/sqlite
    make
    make install

  3. Con lo anterior ya debería de estar instalado, en /usr/local/sqlite/bin/sqlite3. En Linux, antes de tener que estar cambiando variables de entorno a lo loco, tenemos la opción de crear link simbólicos (symlinks). Vamos a crear un link simbólico de nuestro binario de hasta allá para que este en un lugar donde el PATH si lo encuentre.それなら:


    ln -s /usr/local/sqlite/bin/sqlite3 /usr/local/bin/

  4. Ya casi, ya casi… Lo último que se tiene que hacer es instalar la gem de ruby. Le tenemos que decir dónde se encuentra el famoso sqlite.hEsto lo hacemos de así (no recuerdo bien cúal de los dos funcionó):


    gem install sqlite3-ruby -- --with-sqlite3-include=/usr/local/sqlite/include/
    gem install sqlite3-ruby -- --with-sqlite3-dir=/usr/local/sqlite/

Y ya con eso se supone que debería de funcionar. Bienvenido al mundo de Ruby on Rails jajaja.

09
Dic
08

Instalando el mod_rails en el server

==CORREGIR LOS ACENTOS LUEGO==
Acabo de terminar de instalar el Phusion Passenger, o bien, ‘mod_rails’ para Apache. La instalación fue algo sencilla, sólo fue cuestión de bajar, untar, moverle al httpd.conf y ya. Después de instalarlo, se pueden crear aplicaciones de Ruby on Rails con tan solo correr el comando rails en alguna direccion. Los pasos fueron los siguientes:

  1. Primero, bajar el Ruby Enterprise que se traen los tipos de Phusion. Yo todo lo puse en /usr/local/


    wget http://rubyforge.org/frs/download.php/47937/ruby-enterprise-1.8.6-20081205.tar.gz
    tar xzvf ruby-enterprise-1.8.6-20081205.tar.gz
    ./ruby-enterprise-1.8.6-20081205/installer

    Le dije que me lo instalara todo en: /opt/ruby-enterprise-1.8.6-20081205

  2. Ahora se tienen que crear unos links simbolicos hacia algunas gems necesarias:


    sudo ln -s /opt/ruby-enterprise-1.8.6-20081205/bin/ruby /usr/local/bin/
    sudo ln -s /opt/ruby-enterprise-1.8.6-20081205/bin/gem /usr/local/bin/
    sudo ln -s /opt/ruby-enterprise-1.8.6-20081205/bin/rake /usr/local/bin/
    sudo ln -s /opt/ruby-enterprise-1.8.6-20081205/bin/rails /usr/local/bin/

  3. Next, nos vamos a la carpeta de la instalacion del Ruby Enterprise Edition en /opt/ruby-enterprise-1.8.6-20081205/ y ahi:


    passenger-install-apache2-module

  4. Ahi el instalador te dice practicamente lo que tienes que hacer, añadir unas lineas al httpd.conf para que cargue los modulos—LoadModule, PassengerRoot, PassengerRuby… Ahora haces ‘rail’ en una carpeta y configuras el VPS para que tenga un dominio en la carpeta de public que crea el rails. Y ya, c’est tout.

Casi todo me base de este link.

09
Dic
08

Instalando el mod_rails (Phusion Passenger) en el server … primer intento

Esta dificil… si lo haces con la version de ruby y rails normales. Nunca le pude instalar el soporte para el OpenSSL. Es mejor utilizar el Ruby Enterprise Edition