Archive for the 'Open Source' Category

Herramientas para MySQL

Jueves, Octubre 18th, 2007

Gracias a Alberto, compi del curro, y a su vez a nuestro gran maestro en MySQL, me entero de la existencia de las MySQL Toolkits, se trata de un conjunto de utilidades de linea de comandos que nos ayudan, y de que manera, con el manejo de MySQL en entornos de mundo real.

En mi actual trabajo utilizamos MySQL como servidor de base de datos, y constantemente nos vemos en la necesidad de exprimir al máximo consultas, sincronizaciones, etc. Así que la ayuda que nos brinda este conjunto de utilidades es super valiosa.

Lo que más me gusta:

  • MySQL Table Sync, ofrece un sistema de sincronización tabla a tabla más eficiente.
  • MySQL Visual Explain, analiza la información de la orden EXPLAIN y ofrece información más visual mucho más fácil de analizar

Todas las utilidades son stand-alone y sólo tienen dependencia de Perl y el módulo DBI. Vale la pena echarles un vistazo.

Primeros pasos con Subversion (Parte II)

Domingo, Diciembre 17th, 2006

En el artículo anterior, vimos como crear un repositorio y cómo añadir nuestro código al mismo. Hoy vamos a continuar con unos pequeños ajustes que nos facilitarán el día a día con Subversion y además, permitiran el acceso a diferentes usuarios al repositorio.

Básicamente estos ajustes consisten en:

  • Crear un grupo para aquellos usuarios que trabajen con SVN
  • Añadir los usuarios al nuevo grupo
  • Modificar los permisos del repositorio

Vamos manos a la obra, desde una terminal tomamos acceso como root:

sudo -s

Una vez conectados como root, creamos un grupo para subversion:

groupadd svn

Después añadimos a este grupo aquellos usuarios de nuestro sistema que vayan a trabajar con Subversion, por ejemplo:

adduser usuario svn

Ahora, cambiamos los permisos del sistema de archivos del repositorio:

(Suponiendo que /var/svn es la ruta donde almacenamos los diferentes repositorios para cada proyecto )

chgrp -R svn /var/svn

chmod -R 0770 /var/svn

chmod g+t /var/svn/proyecto/db

El último paso hay que repetirlo para cada repositorio, (la ruta a db será diferente según el nombre de cada repositorio).

Bien, con estos simples pasos hemos conseguido que cualquier usuario, que no sea root, pueda trabajar con el repositorio, para ello tan sólo habrá que añadirlo al grupo svn. en un próximo artículo veremos como acceder remotamente a nuestro repositorio utilizando  Eclipse.

Primeros pasos con Subversion

Jueves, Diciembre 7th, 2006

En el artículo anterior, vimos como instalar Subversion en un sistema Ubuntu, hoy vamos a ver como realizar las tareas típicas.

Si hemos instalado con éxito SVN, ya podemos empezar a crear repositorios para guardar nuestro bien más valioso: el código fuente.

Desde un terminal, nos cambiamos a modo root:

sudo -s

Creamos un directorio donde posteriormente crearemos los repositorios para nuestros proyectos, esto es más una cuestión de gustos, hay quien prefiere utilizar un único repositorio para después crear subcarpetas para cada proyecto. Personalmente, prefiero generar un repositorio diferente para cada proyecto, veremos más adelante que esto nos ofrece más flexibilidad en según que situaciones.

mkdir /var/svn

Ahora creamos el repositorio para nuestro proyecto:

svnadmin create /var/svn/proyecto

Cambiar proyecto por el nombre de vuestro proyecto. Sugerencia: evitaremos problemas si escribimos el nombre en minúsculas y sin espacios.

Si vamos al directorio del repositorio y hacemos un ls, veremos la estructura de directorios y de archivos generadas por SVN. Es interesante darle un vistazo al fichero README.txt, éste nos avisa que no debemos crear o modificar directamente los archivos del repositorio, para eso ya están las herramientas de SVN.

Bien, ya tenemos el repositorio creado, ahora habrá que crear una estructura de directorios para mantener nuestro código organizado.

Creamos la estructura básica:

  • un directorio trunk donde se almacena la rama de código principal
  • un directorio tags para guardar “fotos” o estados concretos de nuestro proyecto (ideal para marcar versiones de nuestro proyecto)
  • y finalmente, el directorio branches por si queremos trabajar con ramas diferentes del proyecto

Otra vez desde la terminal (introducir la orden en una sola línea):

svn mkdir -m "layout inicial" file:///var/svn/proyecto/trunk file:///var/svn/proyecto/tags file:///var/svn/proyecto/branches

Con esto tenemos ya preparado nuestro repositorio para empezar a añadir código en él. Supongamos que tenemos un directorio (/home/usuario/proyecto) con los archivos de nuestro proyecto que queremos proteger.

El primer paso es importar todo el arbol del proyecto al repositorio:

cd /home/usuario/proyecto
svn import -m "import inicial" . file:///var/svn/proyecto/trunk
Veremos los mensajes del proceso de importación, cuando el proceso termine la importación veremos un mensaje parecido a este:

Commit de la revisión 1.

Ahora ya tenemos nuestro proyecto “guardado” en el repositorio, a partir de este momento debemos descartar la ubicación original del proyecto, en nuestro ejemplo /home/usuario/proyecto, y empezar a trabajar con una “copia de trabajo” del proyecto.

El proceso típico de trabajo se resume de la siguiente forma:

  • Checkout o creación inicial del directorio de trabajo, esto sólo hay que hacerlo una vez
  • Update, actualización de nuestra copia con los cambios que se hayan producido en el repositorio, esto es básico en entornos con más de un desarrollador. Es la manera de actualizar nuestra copia con los cambios realizados por el resto del equipo
  • Commit, guardar nuestros cambios en el repositorio.

Vemos ahora como crear una copia de trabajo a partir de nuestro flamante repositorio:

Salimos del modo root, con exit, ya que nos interesa que los archivos de trabajo se creen con nuestro usuario habitual:


exit
cd /home/usuario
svn co file:///var/svn/proyecto/trunk/ proyecto/

Nos apareceran los mensajes de importación, cuando finalice el proceso, entramos en el directorio de trabajo y veremos los archivos descargados del repositorio. Con esto damos por finalizado esta primera toma de contacto, en un próximo articulo veremos como acceder a nuestro repositorio desde otros pc.

Instalar Subversion en Ubuntu 6.10

Miércoles, Diciembre 6th, 2006

Esta vez toca una mini-mini-guía para instalar el excelente sistema de control de versiones Subversion (AKA SVN) en la última versión de Ubuntu (Edgy Eft).

SVN nació como alternativa a CVS, tomando lo que ya funcionaba y corrigiendo o añadiendo funcionalidades inexistentes. El caso es que, desde que prácticamente casi todas las herramientas de desarrollo más populares incluyen soporte de SVN, este sistema se está convirtiendo rápidamente en la alternativa open source más utilizada en el campo de los sistemas de control de versiones.

Instalar SVN en Ubuntu es muy sencillo:

Abrimos una sesión en el terminal, y nos ponemos en modo root:

sudo -s

Después de introducir la contraseña, ya podemos introducir las ordenes con privilegios de root

Para instalar SVN, tan sólo tenemos que utilizar apt-get:

apt-get install subversion

El sistema apt nos pedirá confirmación y procederá a la instalación de los paquetes correspondientes. Si todo va bien, entonces podemos verificar la instalación, llamando a la utilidad de administración de SVN:

svnadmin help

Si nos aparece la ayuda de línea de comandos de svnadmin, la cosa ha ido bien. En un próximo artículo aprenderemos a crear un repositorio y a empezar a proteger nuestro código.

Recursos de Yahoo! para desarrolladores web

Sábado, Agosto 19th, 2006

Google es la compañia de moda en Internet en estos últimos tiempos, cualquier nube de tags tiene el tag Google bien gordito, sin embargo, existen compañias con más solera que, quizá sin la misma repercusión en la blogosfera o en los medios de comunicación tradicionales, van poco a poco poniendose las pilas.

Yahoo, por ejemplo, no cesa de liberar nuevas APIs y ha creado un centro para desarrolladores, con muchísima información interesante.

Hoy me gustaría destacar dos sitios de este centro:

El primer enlace, no es un sitio donde encontremos infinidad de código fuente, más bien lo contrario. La Design Pattern Library recoge una serie de patrones o soluciones a problemas típicos relacionados con el diseño de la interfaz de usuario, que nos permitirán resolver, desde el punto de vista del Arquitecto de Información, o del especialista en usabilidad del sitio. Recomiendo encarecidamente su visita.

El segundo enlace, la UI Library es una buena navaja suiza para el desarrollador, se trata de un conjunto de componentes escritos Javascript, para facilitar el manejo del contenido de una página mediante DOM, o facilitar el uso de AJAX. Por citar algunos, lo que personalmente he visto más interesantes los siguientes componentes:

  • Calendar, un control de calendario en Javascript. Muy comfigurable, podéis ver los ejemplos en acción
  • Autocomplete, un control de edición con autocompletar, admite arrays Javascript en memoria, data sources AJAX, etc..

En resumen, dos sitios muy interesantes, y que permitirán enriquecer la experiencia de usuario de nuestras aplicaciones web. Por cierto, toda la librería de componentes está liberada bajo licencia BSD.

lighttpd, una buena alternativa a Apache

Miércoles, Abril 26th, 2006

Aunque es evidente que Apache ocupa una posición predominante como servidor web, contínuamente surgen iniciativas que intentan mejorar defectos o resolver cuestiones más específicas que un servidor de propósito general como Apache no llega a cubrir.

Una de estas alternativas, muy popular en la escena Ruby on Rails es lighttpd.

Lighttpd, de “Light footprint + httpd” o “Lighty” como usted amable lector prefiera, se presenta como un servidor con pocas exigencias a nivel de memoria y procesador, pero con un rendimiento excelente, si a eso además le sumamos un excelente soporte de FastCGI, que nos permite hospedar aplicaciones basadas en PHP y/o Rails, nos encontramos ante una alternativa seria y que vale la pena evaluar si disponemos de la ocasión.

Más información:

Apple publica tutorial sobre RubyOnRails

Martes, Febrero 28th, 2006

Una de las razones que tenía para comprarme un Mac, era, y sigue siendo, usarlo como entorno de desarrollo para aprender RubyOnRails, así que este tutorial de la web para desarrolladores de Apple me viene que ni pintado.

El tutorial está bastante bien y ofrece una idea bastante clara de las posibilidades de RoR, las referencias adicionales son bastante interesantes, particularmente ésta que da instrucciones detalladas para montarse el entorno completo en OS X.

Vía SlashDot

Instalar DenyHosts en CentOS

Sábado, Febrero 25th, 2006

DenyHosts es un script escrito en Python que monitoriza las entradas del log de conexiones del SSH, /var/log/secure en CentOS, para detectar clientes maliciosos que realizan ataques de fuerza bruta.

Cuando DenyHosts detecta que una IP se estan realizando repetidos intentos de conexión fallidos, añade esta IP al fichero /etc/hosts.deny y de esta forma cortamos de inmediato los intentos de conexión desde la IP maliciosa.

Esta guía toma como base el excelente Howto de Falko Timme publicado en HowtoForge sobre DenyHosts.

Obtener e instalar DenyHosts

Antes de descargar DenyHosts debemos comprobar la versión de Python disponible en el sistema:

python -V

Obtendremos algo parecido a esto:

Python 2.3.4

Después de conocer la versión de Python instalada en nuestro sistema, vamos a descargar el RPM de DenyHosts, el archivo preparado para la versión 2.3 de Python está disponible aquí.

Para descargar directamente el paquete desde nuestro sistema utilizaremos wget:

wget http://mesh.dl.sourceforge.net/sourceforge/denyhosts/DenyHosts-2.1-python2.3.noarch.rpm

Con el paquete descargado, ya podemos instalarlo:

rpm -i DenyHosts-2.1-python2.3.noarch.rpm

Configuración

DenyHosts se instala en /usr/share/denyhosts en este directorio se encuentran los archivos de configuración. Disponemos de un archivo de ejemplo que tomaremos como base para crear la configuración:

cd /usr/share/denyhosts
cp denyhosts.cfg-dist denyhosts.cfg

Editamos el archivo denyhost.cfg con nuestro editor favorito y ajustamos los parámetros necesarios:

SECURE_LOG = /var/log/secure
HOSTS_DENY = /etc/hosts.deny
#
# Este parametro indica el periodo de tiempo (4 semanas) que mantendremos las IPs maliciosas
# en el fichero hosts.deny
PURGE_DENY = 4w
#
# Bloquear todos los servicios a la IP maliciosa
BLOCK_SERVICE = ALL

El resto de parámetros del archivo se pueden dejar con los valores por defecto, si además queremos recibir un mail cada vez que se detecten ataques, debemos especificar una dirección de correo válida en:

ADMIN_EMAIL =

Lo habitual es que utilicemos DenyHosts como servicio, para ello podemos aprovechar el archivo daemon-control-dist:


cp daemon-control-dist daemon-control

Editamos el archivo y revisamos los valores:

DENYHOSTS_BIN = "/usr/bin/denyhosts.py"
DENYHOSTS_LOCK = "/var/lock/subsys/denyhosts"
DENYHOSTS_CFG = "/usr/share/denyhosts/denyhosts.cfg"

Despues, nos aseguramos que el archivo sea ejecutable para el usuario root:

chown root daemon-control
chmod 700 daemon-control

Arranque

Ya tenemos lista la configuración, ya podemos arrancar DenyHost:

./daemon-control start

Aunque lo ideal es configurar DenyHosts para que arranque automáticamente, para ello crearemos los enlaces simbólicos necesarios:

cd /etc/init.d
ln -s /usr/share/denyhosts/daemon-control denyhosts
chkconfig --add denyhosts

De este modo tendremos configurado DenyHosts de la siguiente forma:

chkconfig --list denyhosts
denyhosts 0:desactivado 1:desactivado 2:activo 3:activo 4:activo 5:activo 6:desactivado

Con esta sencilla utilidad haremos la vida un poco más difícil a los pesaos de Internet, espero que os sea de utilidad.