Categorías
Programacion Turoriales Ubuntu

Instalar Bugzilla en Ubuntu Hardy (1 de 2)

Bugzilla es un BTS (Bug Tracking System), un sistema de seguimiento de errores. Básicamente, un programa que nos sirve para tener organizados todos los errores pendientes de nuestros proyectos, así como un historial de los errores ya solucionados (o no). Se puede usar tanto para proyectos de software como para cualquier otro tipo de proyecto. Un carpintero podría usar un BTS para organizar los errores que tiene pendientes de solucionar en los trabajos que ha hecho por ahí, por poner un ejemplo.

Un BTS se puede usar de manera interna o podemos acordar con los clientes que sean ellos mismos quienes envíen los errores al software. Para lo que deberíamos tener una instalación accesible desde internet.

Hay muchos programas que sirven para hacer seguimiento de errores, ahora mismo dos BTS muy buenos son Bugzilla y Mantis. Bugzilla es desarrollado por la gente de mozilla y tiene más facilidad para incorporar complementos que Mantis, siendo los dos muy buenos como ya he dicho antes, voy a optar por instalar Bugzilla. Si quieren meditarlo más, en el post Bugzilla vs Mantis de botsko pueden leer un análisis bastante bueno(en la lengua de Ken Follet) de las diferencias.

El primer paso es ir a la web de bugzilla y descargar la última versión estable
http://www.bugzilla.org/download/#stable

La traducción a castellano la tienen en http://bugzilla-es.sourceforge.net/

¿Tenemos perl instalado?

Bugzilla está desarrollado en perl, por lo que tenemos que saber si hay instalado en nuestro sistema operativo soporte para ese lenguaje, vamos a un terminal y escribimos: perl -v

Yo obtengo la salida «This is perl, v5.8.8 built for i486-linux-gnu-thread-multi», como bugzilla necesita perl v5.8.0 ó superior, esta parte es facil porque no tenemos que hacer nada 🙂

Base de datos

Bugzilla puede ir sobre MySQL o PostgreSQL, como recordarán del post de instalacion de php, apache y mysql sobre Ubuntu Hardy, yo tengo en mi máquina MySQL ya instalado, así que será el motor de base de datos que usará mi Bugzilla.

Para comprobar si tienen instalado MySQL o PostgreSQL, con que tengan uno de los dos vale, pueden ejecutar en el terminal:

mysql -V

psql -V

Esta ha sido la primera parte del tutorial, el objetivo era explicar qué tipo de software queremos instalar y controlar que tengamos todas las herramientas encima de la mesa. En el siguiente post de la serie empezaremos a cacharrear con el terminal para dejar bugzilla instalado (Ver la segunda parte del tutorial…)

Categorías
Programacion Turoriales Ubuntu

Instalar Bugzilla en Ubuntu Hardy (2 de 2)

Continuando con la anterior parte de este tutorial, el siguiente paso a seguir sería instalar los módulos necesarios de perl.

Suponiendo que nos hemos descargado el paquete de instalación de bugzilla siguiendo las instrucciones del anterior tutorial, lo descomprimimos (en nuestro directorio raiz de apache) y entramos en el directorio.

Los desarrolladores de bugzilla nos facilitan esta tarea con un script llamado checksetup que nos informa de los módulos necesarios y opcionales de perl que habría que instalar y cómo hacerlo.

./checksetup.pl –check-modules

Se obtiene una salida como ésta:

Un poco más abajo, nos indica incluso qué comandos tenemos que ejecutar para instalar los módulos obligatorios y los opcionales que nos faltan.

Voy a instalar solo los obligatorios, hay que hacerlo como root.

sudo /usr/bin/perl -MCPAN -e ‘install «Email::Send»‘
sudo /usr/bin/perl -MCPAN -e ‘install «Template»‘
sudo /usr/bin/perl -MCPAN -e ‘install «Email::MIME::Modifier»‘

Le damos a intro a todas las opciones que no sepamos lo que son, para que se pongan los valores por defecto. Mejor no experimentar para ahorrarnos aspirinas y cafés. Nos preguntará el pais y el servidor ftp desde el que queremos descargar los ficheros, ponemos España que es el 32 y escogemos una de las opciones de ftp que nos muestra.

Volvemos a ejecutar el check-setup como antes para verificar que ahora si que tenemos todos los módulos obligatorios. En un principio vamos a seguir con la instalación, siempre se puede ejecutar de nuevo el check-setup para ver que módulos opcionales nos faltan, con la inestimable ayuda que da el script informándonos del comando que hay que ejecutar para instalar cada módulo.

Lo siguiente que tenemos que hacer es editar el fichero de configuración de bugzilla con las peculiaridades de nuestro sistema. Editamos el fichero localconfig que hay en el directorio de bugzilla.

gedit localconfig

Ponemos el host de la base de datos, el usuario, contraseña, nombre de la tabla, lo tipiquillo. Unos valores de ejemplo son los siguientes:

$create_htaccess = 1;
$webservergroup = ‘apache’;
$db_driver = ‘mysql’;
$db_host = ‘localhost’;
$db_name = ‘bugs’;
$db_user = ‘generico’;
$db_pass = ‘generico’;
$db_port = 0;
$db_sock = »;
$db_check = 1;
$index_html = 0;
$cvsbin = »;
$interdiffbin = »;
$diffpath = ‘/usr/bin’;

El usuario que pongamos tiene que existir en la base de datos antes de continuar. Para seguir con las instalación, ejecutamos el script check-setup.pl pero sin el parámetro –check-modules

./checksetup.pl

Si nos sale alguna advertencia o error lo corregimos, a mi me mostró el mensaje de que el webservergroup (que por defecto viene puesto como apache) no se encontraba. Ejecutamos en un terminal el comando groups y ponemos en webservergroup alguno de los grupos de nuestro equipo.

Volvemos a ejecutar el checksetup al cual mas de uno le habrá cogido cariño a estas alturas. Cuando todo vaya bien nos pedirá una contraseña de administrador, correo, etc… Los ponemos, no es shell phishing :p

Lo siguiente es decirle a apache que ejecute los cgi de perl que tenemos en nuestro directorio de bugzilla. Vamos al fichero /etc/apache2/sites-available/default y añadimos el directorio de bugzilla, algo como esto:

<Directory «/home/adrian/www/bugzilla»>
Options +ExecCGI
AllowOverride Limit
DirectoryIndex index.cgi
AddHandler cgi-script .cgi
</Directory>

Guardamos el fichero, reiniciamos apache2:

sudo /etc/init.d/apache2 restart

Y a correr, http://localhost/bugzilla

Espero que les sea útil y que no tengan muchas dudas, la instalación es un poquito rollo la verdad. Si tienen problemas, pregunten en los comentarios y así aprendemos todos. Si algo se puede corregior o explicar mejor no duden en comentarlo y se rectificará el post, así entre todos hacemos un tutorial mejor.

¡Suerte con los bichitos!

Bibliografía

Bugzilla Guide (pdf)

Categorías
chuletario php

Evitar SQL Injection en php

Estaba ojeando la lista de categorías del blog y me he dado cuenta de que solo tengo 3 entradas referentes a php. Es curioso porque php suele ocupar el 33,3% de cada uno de mis dias (exceptuando sábados y domingos).

Así que me he decidido a publicar algunos tips de vez en cuando 🙂

Como habrán adivinado por la foto, hoy les voy a enseñar la función que suelo usar (cuando trabajo con mysql) para limpiar las ristras de posibles SQL Injection:

# Limpia una ristra para evitar sql injection
function limpia_ristra($ristra){
return mysql_escape_string(strip_tags($ristra));
}

Aunque lo mejor sería utilizar querys precompilados (prepare), bind variables y cosas así… otro día hablo de ello refiriendome a oracle :p

Categorías
chuletario Programacion

Obtener valores de un campo CLOB en Oracle

Los campos tipo CLOB en Oracle son equivalentes a los campos tipo TEXT en postgres o los tipo MEMO en mysql, puedes almacenar muchísima información de tipo texto en ellos.

oracle_joke

Una columna CLOB puede contener hasta 4GB de información… imagínate! la biblia en braille por lo menos.

El tema es que obtener el valor de un campo CLOB en un SELECT no es tan sencillo como en postgres o mysql, CLOB es un objeto y hay que usar la librería DBMS_LOB para manejarlo.

Las dos funciones útiles para leer un campo CLOB son las siguientes:

DBMS_LOB.substr(CLOB, longitud, posicion_inicial);

DBMS_LOB.getlength(CLOB);

Combinándolas, podemos obtener el contenido de una columna CLOB para nuestro SELECT.

Supongamos una tabla tablaprueba con un campo observaciones de tipo CLOB:

SELECT DBMS_LOB.substr(observaciones,DBMS_LOB.getlength(observaciones),1) FROM tablaprueba;

Así de fácil 🙂

Si el campo de texto que queremos crear tendrá menos de 4000 caracteres… mejor usar un VARCHAR2.

Categorías
php Turoriales Ubuntu

Instalando apache,php y mysql en Ubuntu Hardy Heron

Hoy vamos a preparar nuestra garza para que pueda ejecutar las típicas aplicaciones php que nos hacemos, como puede ser el caso del proyecto itable.

Como siempre, si algo no queda del todo claro o si piensan que falta alguna explicación. No duden en comentarlo, que para eso estamos en la era de las webs sociales 🙂 no mordemos.

Ingredientes:

  • Apache2
  • Mysql 4.1
  • PHP 5

Abrimos un terminal y empezamos.

Uno: El brikindans xDD

Va, fuera de coña.

1.- Mysql

sudo aptitude install mysql-server-4.1

2.- Apache

sudo aptitude install apache2

3.- PHP

sudo aptitude install php5

4.- Soporte para mysql en apache y php

sudo aptitude install libapache2-mod-auth-mysql

sudo aptitude install php5-mysql

5.- Nos bajamos de la moto y nos volvemos a subir

sudo /etc/init.d/apache2 restart

6.- Cambiamos de ubicacion el directorio www

Para tener todos los datos importantes en el mismo sitio a la hora de hacer backups, creamos un directorio en el home que se llame www y editamos el fichero de configuracion de apache para decirle donde se encuentra la nueva raiz del servidor web.

sudo gedit /etc/apache2/sites-available/default

Donde aparezca /var/www/ ponemos nuestra nueva ruta. Nos volvemos a bajar de la moto y a subir de nuevo.

Vamos al directorio /home/usuario/www/ y le ponemos los permisos para que se pueda acceder desde el navegador si procede.

7.- Comprobamos que todo está correcto

Creamos un fichero info.php con

<?phpinfo();?>

Lo colocamo en el nuevo www, vamos al firefox y ponemos http://localhost/info.php

voilá.

Dudas, problemas, sugerencias, quejas… en los comentarios.

Categorías
Turoriales Ubuntu

Instalando Ubuntu 2 de 2

Bueno, me he dado prisa por escribirlo para que Truji no se lo descargue del emule :p

En el anterior post dejé ubuntu instaladito con todo reluciente y nuevo, de serie. Empecé a personalizarlo, que si fondo de pantalla, que si instalar php, mysql y apache2, tratar de configurar la camara orbicam de mi acer 5633, ocultar iconos del escritorio… cosillas así que hace uno un sabado por la noche.

Lo tenía todo ya más hecho a mí, me sentía más en casa, pero aun echaba de menos Windows…

Pantalla de la muelteee

Fuera de coñas, los shortcuts que usaban la tecla windows me encantaban (ains, en el fondo siempre te guardaré cariño Windows), cosas que uno puede modificar a placer en Sistema->Preferencias->Combinaciones de teclas en ubuntu 🙂 . Lo ideal para dejar de echar de menos al sistema operativo de los chicos de Redmon era tener algo especial, algo como Beryl, un gestor de ventanas para gnome(el motor gráfico de mi ubuntu) que permite agregar animaciones a las acciones con las ventanas, nos da la opción de poner un cubo para gestionar múltiples escritorios y cienes y cienes de cosas más. Después de instalarlo y configurarlo, empecé a olvidarme de las «Ventanas» del Señor Gates 😀

Como una imagen vale más que mil palabras (cosa con la que no estoy necesariamente de acuerdo), aquí les pongo un video que grabé con istambul 0.2.1 de mi propio escritorio. Enjoy it 🙂