viernes, mayo 28, 2010

Ampliando una máquina virtual con un disco LVM

Pasos a realizar para ampliar la capacidad de disco de un disco LVM.
  1. Creo un nuevo disco virtual con la máquina apagada.
  2. Imaginando que el disco sea "/dev/sdb", hacemos

    fdisk /dev/sdb

    creamos una partición y la ponemos a LVM (8e) y cogemos todo el disco. Tendremos "/dev/sdb1"

  3. Ejecutamos "lvm"

    lvm>pvcreate /dev/sdb1

    listamos las particiones

    lvm>pvs

    veremos "/dev/sda2" (por ejemplo) y "/dev/sdb1"

    lvm>vgextend VolGroup00 /dev/sdb1
    lvm>lvextend /dev/VolGroup00/LogVol00 /dev/sdb1

    y salimos del lvm.

  4. Ejecutamos:

    resize2fs /dev/mapper/VolGroup00-LogVol00
Y ya habremos ampliado la capacidad del disco.

martes, septiembre 15, 2009

Creando túneles locales, remotos y dinámicos en ssh

Una de las herramientas más versátiles que existen entre las aplicaciones que tiene unix (aunque también esta para windows), es el ssh.

Principalmente permite ver una consola de texto de un servidor remoto y desde la consola poder administrarlo.

Pero hay una funcionalidad bastante importante y que son los túneles de ssh.

Los túneles de ssh nos permiten "traernos" puertos TCP remotos a nuestra máquina local o "enviar" puertos locales para que sean publicados en un servidor remoto.

Ejemplos:

Tunel local: Queremos traernos el puerto 1521 (oracle) de una máquina remota que sólo tenemos acceso vía ssh, al puerto local 2000:

ssh usuario@servidor -L 2000:localhost:1521

Tunel remoto: Queremos enviar nuestro puerto 8080 a una máquina remota y cuando se acceda al puerto 80 (web) de la máquina remota las peticiones se nos está haciendo en nuestra máquina local.

ssh usuario@servidor -R 80:localhost:8080

Tunel dinámico: Queremos conectarnos a internet desde una máquina virtual, pero no queremos usar un proxy que esta en medio, desde el navegador definimos un proxy tipo socks:

ssh usuario@servidor -D 3000

El el navegador configuramos para el proxy el host 'servidor' y el puerto 3000

miércoles, agosto 05, 2009

Problemas al enviar correo por el puerto 25

Algunas empresas de telefonía o en algunos centros de trabajo, de estudios... están bloqueando el acceso al puerto 25 (smtp) que se utiliza habitualmente para envío de correo.

El principal motivo es la proliferación de virus y troyanos que aprovechan el control de un ordenador para enviar spam.

Para ello lo mejor es usar otros puertos habilitados para mejorar la seguridad, por ejemplo el puerto 465 y usando SSL.

martes, marzo 24, 2009

Restaurar varias bases de datos de mysql con claves foráneas

Uno de los mayores inconvenientes a la hora de importar bases de datos de mysql es que tengan claves foráneas que hagan que diferentes tablas dependan de otras.

Al importar, por defecto, las claves foráneas están activas y por esa razón, si se intenta darán un montón de problemas.

Con este comando se soluciona el problema:

echo "SET FOREIGN_KEY_CHECKS=0; source ./mysql.sql; " |mysql 2>>mysql.err 1>&2

Donde mysql.sql es el fichero que queremos importar.

viernes, enero 02, 2009

Configurar Cacti en Centos 4

El cacti es una aplicación web que te permite monitorizar uno o varios servidores, de manera que puedes ver en tiempo real el uso de los recursos de dichos servidores.

Para instalarlo en CentOS 4 o en Red Hat Enterprise 4 se pueden seguir estos pasos:

Descargar el cacti en formato gz.tar y descomprimirlo en el servidor en una carpeta que se tenga acceso mediante el servidor web.

Luego instalar los siguientes paquetes:

yum install httpd php php-mysql php-snmp mysql mysql-server net-snmp net-snmp-utils

Descargar las RRDtools, para CentOS se pueden descargar desde aqui, luego las instalamos:

rpm -ivh perl-rrdtool-1.2.23-1.el4.rf.i386.rpm rrdtool-1.2.23-1.el4.rf.i386.rpm

Si queremos monitorizar la red debemos añadir la siguiente línea al fichero /etc/snmp/snmp.conf

view systemview included .1

Comprobamos que el servidor de snmp esta funcionando:

snmpwalk -v 2c -c public 127.0.0.1

Posteriormente añadimos la siguiente línea al crontab y reiniciamos el servicio cron:

*/5 * * * * apache /usr/bin/php /var/www/html/cacti/poller.php > /dev/null 2>&1

Ahora ya solo falta acceder al cacti a través de la web:

http://miservidor.com/cacti

martes, octubre 14, 2008

Instalación de Moneiba Framework 1.0

Vamos a configurar paso por paso el Moneiba Framework para que podamos empezar a trabajar con él desde el primer momento.

Para empezar necesitaremos descargarnos las siguientes herramientas gratuitas:
  • TortoiseSVN un cliente (windows) para subversion. Con esta herramienta nos podremos descargar en local todo el código fuente de Moneiba Framework.
  • Turbo Delphi 2006 Explorer, es el entorno de desarrollo. Se puede descargar desde aqui.
  • MySQL, base de datos, en su versión 5 como mínimo. Se puede descargar desde aqui. Por comodidad, cuando configuremos la base de datos, usaremos el usuario "root" sin contraseña.
  • SQLyog Community Edition, un cliente de MySQL. Se puede descargar desde aqui.
Una vez instaladas, empezaremos por descargarnos el repositorio del framework:
  1. Creamos un directorio donde poner el repositorio, por ejemplo: "c:\datos\fuentes\sourceforge\moneiba"
  2. Con el explorador de Windows pulsamos encima del subdirectorio "moneiba" con el botón derecho y seleccionamos la opción "SVN Checkout...".
  3. A continuación aparece un dialogo donde ponemos la URL del repositorio, que es: "https://moneiba.svn.sourceforge.net/svnroot/moneiba", y en la opción revisión seleccionamos "Revision" y en el cuadro correspondiente ponemos el número 468. Pulsamos en el boton "OK", y esperamos a que se descargue todo el repositorio, esta operación puede tardar bastante.


Con esto, ya tendríamos el repositorio en nuestro disco duro. Ahora vamos a compilar el framework.
  1. Abrimos "Turbo Delphi" y a su vez abrimos el proyecto "c:\datos\fuentes\sourceforge\moneiba\framework\source\moneiba.bdsgroup", en el menú seleccionamos "Project->Build moneiba".
  2. Ahora abrimos "SQLyog" y nos conectamos a la base de datos de mysql que hemos instalado. Creamos una base de datos que se llame "dummy_contacts2".
  3. Por último seleccionaramos del menú "Run->Run" se estaría ejecutando un proyecto de ejemplo "contacts2".


Para los proyectos de Moneiba Framework disponemos de 2 directorios principales, para el caso de "contacts2", tenemos:
  • Todos los ficheros que debemos distribuir para que funcione el proyecto en otros ordenadores: "c:\datos\fuentes\sourceforge\moneiba\framework\release\projects\contacts2"
  • El código fuente del proyecto: "c:\datos\fuentes\sourceforge\moneiba\framework\source_projects\contacts2"
Con estos pasos ya tendríamos finalizada la instalación de Moneiba Framework 1.0. En la próxima entrada veremos como crear un proyecto desde cero.

Moneiba Framework

Cuando empecé a diseñar aplicaciones una de las primeras cosas que me di cuenta es que si había desarrollado un codigo para hacer algo después, ese mismo codigo me podía servir para desarrollar otro proyecto.

Esto se hace muy a menudo, siempre se aprovecha código de otros proyectos. El caso es que también se repite la misma historia en las librerias para acceder a la base de datos, interfaz gráfico para configurar la base de datos, pruebas a ver si todo funciona bien, etc. Pero lo que quería era hacerlo una sola vez en la vida y ya no más. Hacer esto además tiene una gran ventaja, puedes hacerlo una sola vez muy bien de tal forma que tienes la completa seguridad de que no vas a tener fallos y en resumen aumentarás la productividad.

Si además de gestionar la base de datos añadimos actualizaciones automáticas, informes, acceso al puerto serie, modbus, gestión de impresoras, etc, pues la cosa promete.

Simplificando bastante la arquitectura de la aplicación podemos decir que un proyecto esta formado por componentes a los que el framework les proporciona (a través de una api) todos los objetos que puedan necesitar (para acceder a la base de datos, por ejemplo).

A su vez los componentes pueden tener módulos (que sería la única parte que hay que programar) y que se apoya en el patrón MVC. También pueden tener búsquedas, por ejemplo, estamos creando un componente "artículos" que será quien gestione los productos de una tienda, en cualquier momento te puede interesar listar artículos que cumplan ciertas condiciones como "listar los artículos más recientes". Con los componentes las búsquedas se pueden definir en un XML sin tener que programar nada, el interfaz gráfico y el acceso a la base de datos ya se encargará el framework.



En resumen esto es lo que hace el proyecto Moneiba Framework, es LGPL, por lo que el código fuente esta disponible para que cualquier desarrollador lo pueda usar y modificar.

La próxima entrada será para enseñar paso por paso como crear un proyecto desde cero.

lunes, octubre 06, 2008

Historia IV, 4ª Generación

Después de la experiencia adquirida a través de los usuarios. Me di cuenta que los programas de facturación actuales no están adaptados a las necesitades concretas de las pymes.

Ya sean aplicaciones privativas como de software libre, hasta ahora, ninguna (incluida SpeedDocs) intentaba solucionar los problemas reales a los que se enfrentas las pequeñas y medianas empresas para ser una competencia ante los grandes empresas y entre ellas mismas.

El primer problema que vi es que un empresario siempre debe tener el control, ya esté en la calle o en la casa o donde sea debería poder acceder a los datos. Hay mecanismos para compartir un ordenador a través de internet y acceder a la información pero esto es muy lento y empeora para un pequeño comercio que no se puede permitir una conexión de ADSL cara.

Existen soluciones para tener toda la aplicación (y los datos) en internet pero la calidad de la aplicación que se tendría no llega (por el momento) con la tecnología actual al nivel de una aplicación de escritorio. También hay otro problema, los datos estan en internet y ¿si te va la red ya no tienes tus datos?, ese es otro gran problema. Finalmente, el gran inconveniente de tener toda la aplicación en internet es que realmente el empresario no tiene el control de los datos, quien tiene ese control es la empresa que gestiona los datos en internet.

Otro problema que hay es que normalmente las empresas no quieren ni necesitan miles de opciones en un programa de facturación, hay otras que sí. Pero el caso es que las soluciones actuales no se adaptan totalmente a las empresas para las que son diseñadas. Esto es más bien una incomodidad a la hora de trabajar y enfrentarse con una aplicación.

Ahora imagine, que se solucionan los problemas anteriores, es decir, el empresario puede acceder (de forma segura) a todos los datos a la máxima velocidad desde donde quiera que esté. Además la aplicación se adapta competamente a las necesidades de la empresa. Entonces ya tendríamos una aplicación que no esta limitando el trabajo de las pequeñas y medianas empresas y podrán competir mejor en el mercado.

Para eso cree Moneiba Commerce, que a su vez se basa en un framework (Moneiba Framework) con licencia libre LGPL. Moneiba Commerce en su versión Enterprise está preparada para resolver los nuevos problemas a los que se ven sometidas las pequeñas y medianas empresas. Es capaz de resolver los inconvenientes de las aplicaciones de facturación actuales y muchos más.



Puede descargarse una versión de pruebas desde http://www.moneiba.com, tenga en cuenta que para poder estar conectado al programa desde cualquier parte debe adquirir la versión Enterprise.

Historia III, 3ª Generación

Una vez que ya tenía la experiencia previa en este tipo de aplicaciones de facturación por fin vi que era lo que quería desarrollar: yo lo que necesitaba era una aplicación que se encargara de las cosas engorrosas, por ejemplo, trabajar con la base de datos (capa de persistencia), actualizaciones automáticas, búsquedas, interfaz gráfica. Y más adelante ya me encargaría de desarrollar módulos que aumentaran la funcionalidad de la aplicación.



Esto lo conseguí con Speed Docs (http://www.speeddocs.com), fue el primer programa para entornos de producción capaz de aislarme de trabajar con la base de datos, el interfaz gráfico, las actualizaciones automáticas, etc.

Por fín pude crear una aplicación de facturación para gente que no fuera contable, algo sencillo, rápido y estable. Usaba una base de datos Paradox y estaba programado en Delphi.

Sin embargo, para ser la primera aplicación que hacía todas estas operaciones no me satisfacía la arquitectura que tenía internamente y al final hacía que fuera tremendamente engorroso desarrollar los módulos. Pero estas dificultades ya estaban sentando las bases de lo que sería la siguiente generación...