8 jun 2012

Tablas HTML

Al parecer, las tablas en HTML tienen algunas dificultades, estuvimos intentando hacer una tablae indicar por ejemplo, que ajuste la altura de las filas, para que entre todo el texto de la primer columna, si el de la tercera no entra, no importa y al parecer, eso es liza y llanamente imposible.
Pero además, en la busqueda saltaron muchas cosas de lo más interesantes:
  • Si una tabla es grande y uno le indica las medidas, la página se carga más rápido que si uno no le indica. (table-layout)
  • En muchos casos, para poder darle atributos css a los contenidos de una celda, hay que ponerlos adentro de un div.
  • Al parecer, con respecto a los estilos, hay dos clases de elementos, bloques (p div) e inlines (span) y cada uno sigue reglas diferentes, para cambiarlo hay que usar display.
  • La referencia supuestamente legal para todo esto está en W3 en un idioma bastante legible.
Bueno, nuestro problema quedó sin solución, pero anda bastante. Ya mejorará un poco. Por el momento se basa en meter el texto en un parrafo (p) con: 
  • text-overflow: ellipsis;
  • height: auto;
  • max-height: 2.5em;
  • overflow: hidden;


4 jun 2012

Rails - Deployment (reformulación)

Bueno, después de pensarlo un poco, me parece que la cosa se simplifica un poco.
  1. Configuración del sistema. (Debiera ser manejada con puppet o similar).
    Para todas estas acciones se requiere acceso de root.
    1. Crear usuario para la aplicación.
    2. Instalar dependencias, librerías, etc.
    3. Instalar aplicaciones (ruby, mysql, sudo, apache/nginx, passenger.
    
    # adduser
    # aptitude install build-essential openssl libreadline6 libreadline6-dev curl \
      git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-dev sqlite3    \
      libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool     \
      bison subversion
    # aptitude install libmysqlclient-dev
    
  2. Configuración a nivel de usuario (Se automatiza con capistrano).
    NO se requiere acceso de root.
    1. Instalación de rvm, ruby, bundle. (cap deploy:setup)
    2. Clonación del repositorio.
    3. Actualizaciones.
    Se necesita leer con suerte: capistrano, rvm, bundle y load deploy/assets .
  3. Configuración de la aplicación:
    Requiere SUDO. (o sería mejor con sudo)
    1. Compresión de los logs (logrotate).
    2. Cron jobs. (whenever)
    3. Aviso de errores. (ni idea) aunque quizás es god.
    4. Configuración del virtual host. (Apache/nginx).
    5. Configuración del usuario en MySQL. (Encargarse de el archivo database.yml. Aunque las modifiqué un poco para parecerse más a esto)
Otra página de utilidad, podría ser debian-admin.

Otra opción, radicalmente distinta, es utilizar los paquetes de debian para hacer la instalación debianizada.

1 jun 2012

Rails - Deployment

Bueno, aprendizajes más, aprendizajes menos ahora estoy en la cuestión del deployment (poner una aplicación en producción) otra ves, denuevo es complicado, así que esta vez voy a intentar aprender un poco, y para aprender hay que escribir.

  1. Parece que a la aplicación hay que aislarla (creandole un usuario propio):


    # adduser

  2. rvm: para que ande una aplicación de rails, tiene que estar instalado ruby, así que hay que instalarlo junto con sus requerimientos:


    # aptitude install build-essential openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool bison subversion

    # curl -L get.rvm.io | bash -s stable

    # adduser usuario rvm

  3. Como usamos mysql y ruby hay que instalar tambien:


    # aptitude install libmysqlclient-dev


  4. Ahora falta clonar el repositorio y configurar la aplicación. (Esta parte se debería automatizar con capistrano y otras herramientas como esa.)


    $ git clone <...>
    $ gem install bundle
    $ cd aplicacion/
    $ bundle install
    $ rake db:setup RAILS_ENV=production  
     
  5. Automatizando con capistrano, esto se complica un poco, y se simplifica otro poco. Por un lado hay que seguir algunas instrucciones. Luego, hay que hacerle algunas modificaciones para encargarse de el archivo database.yml. Aunque las modifiqué un poco para parecerse más a esto. Además hay que tener bien configurada la conexión ssh con el server (en ~/.ssh/config).
  6. Después viene la parte de instalar passenger que al final no es tán dificil (pero seguro que se complica un poco). Me parece que habría que crear mejor dos archivos (/etc/apache2/mods-available/passenger.[conf|load]) y además uno para cada aplicacion (/etc/apache2/sites-available/passenger) y utilizar las herramientas de Debian a2enmod y a2ensite como se debe. Obvio que esto habría que automatizarlo (usando puppet).
  7. Ahi estoy ahora, pero faltan algunas cosas, a saber:
    1. configurar passanger.
    2. Manejar los errores y los logs. (logwatch y logrotate ?)
    3. Automatizar la instalación de las aplicaciones y la creación del usuario.
    4. Encontrar un metodo simple para actualizar la aplicación.
    5. Utilizar la opcion "bundle install --deployment"
    6. Programar un backup de la base de datos.

Ahora estoy así, necesitando una mano con esto... ¿cuál será el canal para pedir ayuda?