Fernando Guillén

un Desarrollador Web Freelance

cabecera decorativa

nada por aquí y nada por allá ó el desarrollo de software como expresión artística.

Archive for the ‘linux’ Category

Friday, May 23rd, 2008

FireFox comiendo memoria

Y aquí tenemos esta simpática criatureja en su hábitat salvaje dispuesta a saquear todos los recursos del entorno, sin prestar atención a las necesidades de los individuos de las demás especies.

Observémosla detenidamente, esperemos que no se percate de nuestra presencia.

firefox 900 megas de ram

¿Puede querer más?… Sí, sí que puede:

firefox 1,2 gigas de ram

Friday, May 23rd, 2008

¡Dios mio qué he hecho!

Me alejo un poco de la caja de cartón marrón para tomar aire e intentar salir del embobamiento hipnótico.

Ya son más de 5 años de relación amor odio con escritorios Linux, una relación que me ha endurecido enormemente y de la que tengo un recuerdo entre el orgullo de guerrero y cabreo de caprichoso. Quizás sea esa parte mía caprichosa y mal criada la que se ha hecho fuerte últimamente, esos deseos impulsivos de ¡lo quiero y lo quiero ahora! que hacen que me entren cabreos y rabietas al verme marginado una y otra vez por el propio hardware de mi ordenador.

Hoy es ‘un antes y un después’, hoy abandono ligeramente una comunidad que tanto me ha dado… o de la que tanto he cogido (como dijo alguien).

No sé que será lo que más eche de menos, seguramente sea el pertenecer, de una manera consecuente, a una comunidad tan revolucionaria y hermosa como es la del open source, aunque sé que no me estoy separando del todo pues sus tentáculos llegan también al mundo Mac y en mis servidores seguiré administrando distribuciones Linux.

Lo que tengo claro es lo que no añoraré: las peleas continuas con el hardware y la experiencia de usuario con los sistemas de escritorio. La resignación de que la impresora no imprima a dos caras, las tardes perdidas intentando activar el micro, la lucha a muerta con el X11 y el dualhead, la tosquedad de la wifi, en definitiva el uso agotador de energía que requiere dirigir esta gran orquesta de poderosos y cabezotas componentes.

Esta declaración no la debes tener en cuenta a la hora de decidirte a instalar Linux en tu escritorio, distribuciones como Ubuntu son perfectamente válidas en la mayoría de los casos y sin ninguna duda una alternativa mucho menos problemática que Windows. Sólo te diría que te abstuvieras de instalar Linux si el uso de tu ordenador va a ser para jugar o para diseño gráfico profesional, aunque estos casos se puedan satisfacer con una buena combinación de Linux+Wine ya empiezan a requerir de configuraciones medianamente tediosas.

En definitiva, mi querido confidente, me he pasado a Mac.

Algo curioso está ocurriendo en mi todavía querido Ubuntu sobre el que escribo estas líneas, creo que se ha cabreado, según escribía este post se me ha bloqueado varias veces el Firefox, lo cual no es raro pues es la versión Beta de la 3.0, pero había algo raro, como demasiado empeño en no volver a arrancar, temiendo una pérdida de todo lo escrito he continuado en el gedit y, ahora sí que sorprendiéndome, también se me ha colgado al intentar grabar. Aún no estoy seguro si el Ubuntu del servidor sobre el que corre el WordPress de este blog admitirá la publicación de este texto. ¿Tendrá mi nuevo Mac tanta personalidad?.

Buci, parece que estamos sincronizados :)

Actualizado un rato después:  ¿Esto es?… ¿ya está?, ¿esto es todo?, me siento como una quinceañera desvirgada por el guapo de clase.

Tuesday, April 29th, 2008

Conjuros de teclado.

En un rincón de los Mac modernos y más a la vista en los Linux de toda la vida existe un lugar donde se pueden realizar los llamados “conjuros de teclado”, este lugar es la consola, una estancia normalmente negra apta sólo para hechiceros.

En la consola nuestro ordenador es altamente vulnerable y también muy obediente, si somos conocedores de las claves podremos convencerle de hacer cosas que sería complicadísimo explicárselo con el ratón.

Por eso cuando veas a uno de estos hechiceros delante de una pantalla negra llena de letras ten por seguro que está preparando un “conjuro de teclado“.

Un buen libro de hechizos es el que está preparando la gente de shell-fu de los que ya te hablé no hace mucho.

Monday, April 21st, 2008

El atajo shell del día.

Monitoreando un fichero y enviando alertas por email

Este script envía un email cada vez que aparece la palabra ‘now’ en el fichero stuff.

$ tail -f stuff | awk ' /now/ { system("mail -s \"Now Occured\"  mail@foo.com < msg") }'

Hay quién se anima el día leyendo la frase zen diaria en su calendario, o el consejo cristiano, o el chiste del pajares, son buenos recursos para comentar con los compañeros en la hora del café.

Y los hay quienes se activan con el comando o atajo shell del día.

[shell-fu]$, Recopilatorio de comandos y atajos shell.

Ya estás alimentando tu lector de feeds :)

Vía GenBeta.

Friday, April 18th, 2008

Tomcat 5.5 nuevas features: no funciona nada.

¿Dónde demonios se ha metido todo? ¿El webapps? ¿El /manager? ¿El log? ¿Que demonios pasa con los VirtualHosts?

Todas estas preguntas que arrastro desde hace tiempo, desde que Tomcat 5.0 ya no está soportado en Ubuntu.

La 5.5 viene con un montón de features, la principal es que no funciona nada de lo que me funcionaba antes.

Alguna luz se me ha abierto.

Para que funcione el /manager hay que instalar:

$ sudo aptitude install tomcat5.5 tomcat5.5-admin tomcat5.5-webapps

Y lo encontrarás en:

http://localhost:8180/manager/html/

La seguridad como siempre nos juega una mala pasada y hay que mandarla a freir lechugas:

$ sudo vim /etc/default/tomcat5.5
TOMCAT5_SECURITY=no

El webapps se encuentra aquí:

/usr/share/tomcat5.5/webapps/

Este tutorial está bastante bien.

Actualizado 2008-05-14:

En Ubuntu 8.04 vuelve a fallar todo y aunque reinstale todo el tomcat no arranca

Solución: seguir este tutorial.

Si en el  /usr/share/tomcat5.5/logs/catalina.out te aparece algo así como esto:

java.lang.ClassNotFoundException: org.apache.catalina.startup.Bootstrap

Debes reinstalar libtomcat5.5-java:

 $ sudo aptitude reinstall libtomcat5.5-java

Suerte.. mucha suerte :)

Tuesday, April 8th, 2008

Poner una aplicación Rails en producción.

Esto no es un tutorial, es una nota mental.

Entorno
  • Ubuntu 7.10
  • MySql 5.0
Instalar capistrano

Tanto en cliente como en servidor.

$ gem install capistrano
Configurar aplicación rails para Capistrano

En cliente.

$ cd #{RAILS_ROOT}
$ capify .

Editar fichero /config/deploy.rb:

require 'mongrel_cluster/recipes'

set :user, "username"
set :runner, "username"

set :application, "miaplicacion"
set :repository,  "http://www.mirepositorio.com/svn/trunk/"
set :scm_username, "username"
set :scm_password, "userpass"

set :deploy_to, "/var/www/railsapps/#{application}"  # path en el servidor
set :mongrel_conf, "#{current_path}/config/mongrel_cluster.yml"  # no tocar

role :app, "miservidor.com"       # si quieres indicar puerto miservidor.com:puerto
role :web, "miservidor.com"       # si quieres indicar puerto miservidor.com:puerto
role :db,  "miservidor.com", :primary => true # si quieres indicar puerto miservidor.com:puerto

Tuve problemas con el username y el userpass y al final les puse el mismo username y pass al usuario del sistema como al usuario del svn.

Editar /config/mongrel_cluster.yml:

---
cwd: /var/www/railsapps/miaplicacion"  # path en el servidor
log_file: log/mongrel.log
port: "5000"
environment: production
address: 127.0.0.1
pid_file: tmp/pids/mongrel.pid
servers: 2      # puertos 5000 y 5001
Preparar servidor

En servidor.

Preparamos el directorio:

$ sudo mkdir -p /var/www/railsapps
$ sudo chown username /var/www/railsapps

Fichero configuración de VirtualHost /etc/apache/sites-available/miaplicacion.miservidor.com:

#we need this as on Ubuntu by default Proxy is not allowed
<Proxy *>
  Order allow,deny
  Allow from all
</Proxy>

#Proxy balancer section (create one for each ruby app cluster)
<Proxy balancer://miaplicacion.miservidor.com_cluster>
  BalancerMember http://127.0.0.1:5000
  BalancerMember http://127.0.0.1:5001
</Proxy>

#Virtual host section (create one for each ruby app you need to publish)
<VirtualHost *:80>
  ServerName miaplicacion.miservidor.com
  DocumentRoot /var/www/railsapps/miaplicacion/current/public/

  <Directory /var/www/railsapps/miaplicacion/current/public/ >
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
  </Directory>

  ErrorLog /var/log/apache2/error_miaplicacion.miservidor.com_log
  CustomLog /var/log/apache2/access_miaplicacion.miservidor.com_log combined

  #Rewrite stuff
  RewriteEngine On

  # Check for maintenance file and redirect all requests
  RewriteCond %{DOCUMENT_ROOT}/system/maintenance.html -f
  RewriteCond %{SCRIPT_FILENAME} !maintenance.html
  RewriteRule ^.*$ /system/maintenance.html [L]

  # Rewrite index to check for static
  RewriteRule ^/$ /index.html [QSA]

  # Rewrite to check for Rails cached page
  RewriteRule ^([^.]+)$ $1.html [QSA]

  # Redirect all non-static requests to cluster
  RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
  RewriteRule ^/(.*)$ balancer://miaplicacion.miservidor.com_cluster%{REQUEST_URI} [P,QSA,L]
</VirtualHost>

Activamos el VirtualHost:

$ sudo a2ensite miaplicacion.miservidor.com

Recargamos Apache:

$ sudo /etc/init.d/apache reload
Subir primera versión a servidor

En cliente.

$ cap deploy:setup
Preparar BD en servidor

En servidor.

Esto seguro que se puede hacer desde Capistrano:

$ mysql> create database midatabase;
$ mysql> grant all privileges on midatabase.* to username@localhost identified by 'userpass';
$ rake db:migrate
Próximos despliegues

En cliente.

$ cap deploy

Y si hay migraciones entonces hay que ejecutarlas en el servidor (aunque seguro que se puede hacer con el Capistrano).

Friday, March 14th, 2008

Crear otro repositorio subversion.

Esto no es un How-To, es una nota mental.

Creando el repositorio

$ sudo svnadmin create  /home/svn/mirepositorio
$ sudo chown www-data.svn -R /home/svn/mirepositorio

Configuración del apache para el nuevo repositorio:

$ sudo vim /etc/apache2/mods-available/dav_svn.conf
<Location /svn/mirepositorio>
  DAV svn
  SVNPath /home/svn/mirepositorio
  AuthType Basic
  AuthName "mirepositorio's Subversion Repository"
  AuthUserFile /etc/apache2/htpasswd
  Require valid-user
</Location>

Añadimos un usuario:

$ sudo htpasswd -b /etc/apache2/htpasswd usuario clave

Recargamos apache:

$ sudo /etc/init.d/apache2 reload

Comprobamos:

navegador: http://fernandoguillen.info/svn/mirepositorio/
consola:  $ svn checkout http://fernandoguillen.info/svn/mirepositorio

Crear las carpetas iniciales:

$ svn mkdir http://fernandoguillen.info/svn/mirepositorio/trunk
$ svn mkdir http://fernandoguillen.info/svn/mirepositorio/branches
$ svn mkdir http://fernandoguillen.info/svn/mirepositorio/tags

Primer import:

$ svn import http://fernandoguillen.info/svn/mirepositorio/trunk

Mi sistema:

Ubuntu Gutsy Gibon 7.10
Subversion version 1.4.4
Apache 2
Thursday, March 13th, 2008

Munin la bestia parda del monitoreo de servicios

Asistí a una de las aulas The Cocktail sobre Munin.

Me quedé impresionado, ahora mismo acabo de terminar de instalar y me ha costado 15 minuntos.

Es la gran bestia parda:

1) Apenas requiere configuración.

2) Permite sistema de nodos y master.

3) Monitorea cosas que nisiquiera entiendo como es capaz de monitorear.

4) Te autodetecta todo lo que tiene el servidor y se pone a monitorearlo todo sin que le tengas que explicar nada.

Increible, una joya.

Tuesday, January 15th, 2008

Me paso a Ubuntu

(Hace tiempo que debería haber escrito este post pero no me he animado hasta ahora).

He notado un pequeño click en la cabeza. Siempre me ha gustado cacharrear, conocer el porqué de las cosas, por eso me he enamorado de Linux, también me gusta que las cosas funcionen y que funcionen bien, Linux es una excelente tecnología para servidores pero montarte un desktop siempre ha sido un suplicio y nunca he conseguido un escritorio robusto, compacto, con todos los componente integrados.

Al principio mi inquietud por cacharrear consolaba mi frustración por lo costoso que era hacer que el escritorio funcionara. Luego empecé a desesperarme: necesitaba más que nunca que las cosas funcionasen a la primera, que el ordenador se convirtiera en mi herramienta no en mi objetivo.

En ningún momento pensé en volver a Windows, no adelantaba nada: perdía el control sobre el sistema y no había garantías de que el escritorio funcionase, por lo menos más allá del primer mes post-instalación.

Ahora he conocido Ubuntu y todo funciona, se instala en un plis, me lo detecta todo, las herramientas se comunican entre ellas, las impresoras aparecen por arte de magia, los plugins se los come como caramelos y el sistema de paquetes es endiabladamente sencillo.

Echaré de menos alguna vez mi querido Gentoo, pero no creo que vuelva.

Tuesday, December 18th, 2007

¿Cómo saber con que versión de java se ha compilado una clase?

Cuándo tienes varios entornos de producción, unos más actualizados que otros, tienes que tener cuidado de con qué compilador generas los .class para cada Tomcat.

En mi caso en desarrollo tengo java1.6 pero tengo un entorno de producción que requiere que se le carguen las clases compiladas para 1.4 o no funcionará.

El lío que tengo en el eclipse de configuraciones para cada proyecto es bastante engorroso y nunca sé si ha puesto bien cada atributo de las propiedades, sin contar con que Ant tiene también sus propias configuraciones para el compilador.

Al final no sé si he generado bien el .war para este entorno o no y es un poco cabreante subir un .war de 8 megas a producción ponerlo todo bien y ver como se queja el Tomcat al arrancar para volver a recompilar y volver a probar.

He encontrado este truco para saber si he compilado bien las clases:

http://dpinya.blogspot.com/2007/10/como-saber-con-qu-jdk-se-ha-compilado.html

http://blogs.sun.com/sundararajan/entry/thou_shall_know_the_class

En resumen, basta con ejecutar en consola:

$ file Clase.class
Clase.class: compiled Java class data, version 48.0

El dato importante es “version 48.0″ hay que buscar en la siguiente tabla para saber con qué versión fué compilado:

<48 Requires JRE 1.3.1 or later
=48 Requires JRE 1.4.2 or later
=49 Requires JRE 1.5 or later
=50 Requires JRE 6 or later
>50 Requires JRE 7 or later

un Desarrollador Web Freelance is proudly powered by WordPress
Entries (RSS) and Comments (RSS).