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
acatos itable Programacion

Retomando el proyecto itable

Buenas,

Tengo intención de retomar el proyecto del tablero de comunicación que empecé hace un par de años y colgarlo para libre distribución. En la versión alpha se llamaba Tablerin :p pero he decidido cambiarle el nombre, a partir de ahora lo llamaré iTable (www.itable.es) y quiero hacerlo más genérico en cuanto a lenguaje. La idea es hacerlo multilenguaje, total, no es que haya tres millones de líneas en el código 🙂

¿Que es un tablero de comunicación?

Un tablero de comunicación es una superficie que contiene imágenes, las cuales se corresponden con personas, objetos, sentimientos o acciones. Es usado por personas que tienen dificultad para comunicarse, ya sea por algun tipo de parálisis como por algún problema de tipo mental. Solo con señalar las imágenes en la pantalla, estará transmitiendo a una segunda persona un mensaje. Ya que se va construyendo un texto cada vez que pulsamos en algun objeto.

Mi lista de propósitos es la siguiente:

  • Multilenguaje
  • Perfeccionar el multiusuario
  • Mejorar el diseño de la interfaz
  • Maximizar la usabilidad del tablero
  • Categorías de imágenes dinámicas

Sería la repanocha si:

  • Consiguiera alguna manera de usar un modulador de voz gratuito
  • Creación de atajos a frases construidas

Iré informando tanto desde aquí como desde www.itable.es, dentro de poco colgaré una instalación de pruebas y el código fuente. Se aceptan sugerencias / ideas 🙂 son casi libres de comentar.

Categorías
Listas musica Programacion

Mis 10 mejores canciones para programar

Supongo que la mayoría programamos escuchando música, es una buena manera de abstraerse y entrar en ese mundo de bucles, condiciones, variables, query’s y demás locuras. Mi ipod siempre está cargado de música muy variada, pero las 10 mejores canciones para programar que tengo siempre cargaditas son las de la lista que he hecho.

Se me habrá quedado alguna fuera seguramente, pero la lista es de 10, en la lista de las 100 mejores canciones para programar (que no haré, o lo mismo sí) las pondría todas 🙂

La mayoría son canciones en inglés para no despistarme con la letra, y entre más música tengan mejor. Con estas diez son con las que me acelero y me flipo escribiendo código (no se rian de mí xD).

  1. Matrix Theme (Moby)
  2. La arena (Ennio Morricone)
  3. Requiem for a dream (Clint mansell)
  4. The Trio (Ennio Morricone) Homenaje al Ikarix staff
  5. La Passion (Gigi D» Agostino)
  6. Long way Down (Go Go Dolls Goo Goo Dolls(Corregido por Iris))
  7. In the end (Linking park)
  8. Resurrection (La pasion)
  9. Animal instinct (Cranberries)
  10. Marcianitis total (himno de Game40)

Les injerto aquí la que todos habrán reconocido de la lista al instante 🙂 la que todos escuchan todos los días, la que tienen en el sonitono del movil y la que quieren que pongan el día de su funeral…

Como siempre, se aceptan sugerencias.

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
Perretas Programacion

El código viejuno es para los programadores como el retrato de Dorian Gray

El otro día estaba viendo un código viejuno, una parte de un programa que escribí yo mismo hace como tres años… se me pusieron los pelos como escarpias.

Supongo que si me desagrada tanto ahora, y en su momento me pareció la hostia, es porque ahora hago las cosas mejor. O porque antes las hacía muy mal, no lo sé bien.

El tema, es que siguiendo el paralelismo entre software/arte del otro día, me dió por pensar cómo vería un pintor profesional sus dibujos infantiles. Enseguida me di cuenta de que dedicarse al desarrollo de software es una putada, porque el código viejuno nunca será tan entrañable como lo podría ser un dibujo de una casita con un arbolito.

Sentí envidia de la gente que produce con su trabajo obras imperecederas. Y sentí miedo por lo que pensaré sobre mi código actual dentro de unos años… entonces ví este chiste 🙂

Aunque las interfaces de usuario que implementamos, se pueden seguir viendo igual de bonitas con el paso de los años, los programadores somos conscientes de cómo son, e incluso a qué huelen las entrañas de ese software. A medida que vamos adquiriendo la capacidad de hacer código más bonito, ordenado y perfumado, el código viejuno nos huele peor.

Sabemos que sigue ahí, pudriéndose, como el Dorian Gray del retrato.

Categorías
Programacion Turoriales Ubuntu

Instalar tomcat 6 en Ubuntu

Este tutorial se basa en el que podeis encontrar en ubuntulife, con algunas modificaciones que tuve que realizar. Vamos por partes…

¿Qué es tomcat?

Tomcat es un servidor web desarrollado por la peña de Apache, que tiene soporte para servlets y JSP, bastante útil si quieres programar en Java.

¿Qué es un servlet?

Un servlet es un programa escrito en java que se ejecuta en un servidor y que normalmente se utiliza para generar contenido html dinámico.

¿Qué es JSP?

JSP se parece más a php que un servlet, porque al igual que con php, podemos tener trozos de html y de JSP mezclados, el servidor tiene que interpretar JSP de la misma manera en la que interpreta PHP.

Instalar Tomcat 6 en Ubuntu

Bien, ya que hemos hecho las presentaciones oportunas, empecemos con el tutorial…

Vamos a ver qué hay en los repositorios relacionado con Tomcat:

$ apt-cache search tomcat

Nos devuelve algo tipo…

libtomcat6-java – Servlet and JSP engine — core libraries
tomcat6 – Servlet and JSP engine
tomcat6-admin – Servlet and JSP engine — admin web applications
tomcat6-common – Servlet and JSP engine — common files
tomcat6-docs – Servlet and JSP engine — example web applications
tomcat6-examples – Servlet and JSP engine — example web applications
tomcat6-user – Servlet and JSP engine — tools to create user instances

Bien, vamos a instalar tomcat6 y tomcat6-admin, al menos de momento.

$ sudo apt-get install tomcat6 tomcat6-admin

Listo, ya hemos instalado tomcat6 en Ubuntu ¿difícil? xD

Los ficheros de configuración de Tomcat están en /etc/tomcat6 el directorio principal de Tomcat en /usr/share/tomcat6

Para reiniciar Tomcat, debemos usar:

$ sudo /etc/init.d/tomcat6 restart

Ahora tenemos que configurar la seguridad, como vamos a tener un servidor de desarrollo, el nombre de usuario y contraseña que voy a poner es «tomcat». Editamos el fichero de usuarios de tomcat:

$ sudo gedit /etc/tomcat6/tomcat-users.xml

Tiene que quedar así:

<tomcat-users>
<role rolename=»admin»/>
<role rolename=»manager»/>
<user username=»tomcat» password=»tomcat» roles=»admin,manager»/>
</tomcat-users>

Reiniciamos tomcat6 para que se apliquen los cambios:

$ sudo /etc/init.d/tomcat6 restart

Para probar que todo va bien, podemos ir a cualquier navegador web y escribir en la barra de direcciones:

http://localhost:8080/manager/html

A difrutar del gatito 🙂

Fuentes: ubuntulife | wikipedia

Categorías
life Programacion

El arte es infinito?

El otro día, hablando con alguien sobre software, escuché la siguiente frase: «En el mundo del software está todo inventado ya«. Una frase lapidaria que a un informático le puede parecer una blasfemia.

Afortunadamente, yo soy un hombre comprensivo y sensato, así que después de hacer sufrir a ese maldito blasfemo las torturas medievales más horrendas y mandarlo quemar en la hoguera, reflexioné…

¿Está todo inventado? En el terreno de la informática, tanto en el software como en el hardware, la respuesta es un tajante NO. Incluso sé que nunca lo estará.

Vale, entonces… ¿Por qué ese montón de cenizas chamuscadas que antes era un blasfemo pensaba semejante atrocidad? Posiblemente, porque tenía una percepción de la informática bastante general.

Ahh… Interesante… Traté, de ponerme en su lugar… en ese momento pensé en el arte, la música por ejemplo… Yo no soy músico, por lo que tengo una percepción de la misma bastante general.

¿está todo inventado en la música? Bueno… pensé,  probablemente se han hecho canciones sobre casi todos los sentimientos sentibles. Canciones hablando de cualquier inquietud posible que pueda tener un ser humano… ¿se puede cantar algo nuevo?

Al final, llegué a la conclusión de que sí, mientras el ser humano pueda crear cosas nuevas, siempre habrá cosas nuevas sobre las que hablar, opinar y cantar. O maneras diferentes (unas mejores, otras peores) de expresar los sentimientos de siempre… no sé…

¿ustedes que piensan? ¿Existe alguna disciplina que implique creatividad y sobre la que se haya inventado todo?

Categorías
humor Listas Programacion

Como saber si eres un programador super geek?

En estos tiempos en los que es cool ser geek y es chic ser friki, los que nos dedicamos al desarrollo de software molamos tanto como los cuaterback de las típicas pelis americanas. La gente común (que diría Sheldon Cooper) se mata por tratar de ser friki, porque es lo que mola hoy en día 🙂

programador

… El primer paso es creerselo, el reconocimiento real ya vendrá con el tiempo ¿no? Aquí una lista con algunas características que lo convierten a uno en programador super geek 🙂

  • Crees que 256 es un precioso número redondo
  • Empiezas a contar en 0, y terminas siempre con uno antes que los demás.
  • Terminas las frases siempre con punto y coma.
  • Escribes “igual” como ==, distinto !=.
  • Puedes teclear { llaves } si mirar al teclado.
  • El $ de tu teclado está muy gastado
  • A las frases las llamas “strings”.
  • Usas habitualmente palabras como iteración, contiguo, trivial, versión, array, polimorfismo, parsear y deprecated en conversaciones.
  • Usas camelCase cuando firmas
  • Asumes que la mayoría de la gente ama su trabajo tanto como tú.
  • Tienes más de 1 monitor
  • Tienes un servidor web en casa
  • Te envías mails a tí mismo para recordarte cosas.

Esta es una adaptación de la lista que puedes encontrar en la frikipedia 🙂

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.