Entries in November 2011

LPCXpresso: Ee(07). Bad ACK returned from status - wire error

written by uve

30 November 2011

Hace unos días conseguí una placa de evaluación LPC1343 de NXP, descargué LPCXpresso y todo iba bien. Tras trabajar algunos días con ella, me he encontrado el siguiente error al intentar flashear:

Error launching Debug\blinky.axf
02:Failed on connect: Ee(07). Bad ACK returned from status - wire error.

Full entry >>

Cómo deshabilitar cuenta de invitado en Ubuntu 11.10

written by uve

30 November 2011

En esta última versión de Ubuntu, 11.10, por defecto trae instalado LightDM. Por defecto viene activa la cuenta de invitado, y a veces no es deseable. Para deshabilitarla es necesario editar el fichero /etc/lightdm/lightdm.conf y añadirle el parámetro allow-guest=false.

Full entry >>

Breves: Instalar bácula para PostgreSQL sin MySQL

written by uve

28 November 2011

Iba a instalar Bacula en Ubuntu y me he encontrado con que intenta instalar todas las dependecias de MySQL (cerca de 30MB). Cómo estoy utilizando PostgreSQL, no necesito instalar todas estas dependencias. Para ello:

# apt-get install bacula-common-pgsql bacula-director-pgsql bacula-server bacula

Full entry >>

Configurar Gitosis

written by uve

28 November 2011

Gitosis es básicamente una herramienta que nos permite gestionar los accesos a repositorios Git. Esto lo realiza a través de SSH, gestionando el fichero authorized_keys del usuario gitosis.

Instalación

Para su instalación, bastará con ejecutar lo siguiente:

$ sudo apt-get install git-core gitosis

dependiendo de la versión de Ubuntu/Debian disponible, el paquete que contiene Git se puede llamar git o git-core.

Una vez instalado, vamos a dar acceso al administrador. Para ello, supongamos un usuario con permisos de administración llamado user.

$ sudo -H -u gitosis gitosis-init < /home/user/.ssh/id_user.pub
Initialized empty Git repository in /srv/gitosis/repositories/gitosis-admin.git/
Reinitialized existing Git repository in /srv/gitosis/repositories/gitosis-admin.git/

Ahora, desde el cliente, vamos a probar la conexión SSH:

$ ssh gitosis@miservidor.com

Si todo ha ido bien, tenemos el acceso al servidor, así que ya podemos cerrar la conexión SSH.

Añadir repositorios y usuarios

Lo primer es clonar el repositorio de administración. A través de él podremos controlar los repositorios y los usuarios de forma simple y sencilla.

$ git clone gitosis@miservidor.com:gitosis-admin.git
Cloning into gitosis-admin...
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 5 (delta 0), reused 5 (delta 0)
Receiving objects: 100% (5/5), done.

Aquí tenemos disponibles dos elementos claves:

  • gitosis.conf: Fichero de configuración
  • keydir: directorio con las claves públicas de los usuarios que tienen acceso

Vamos a crear otro repositorio nuevo llamado miproyecto, para ello editamos gitosis.conf:

[gitosis]

[group gitosis-admin]
writable = gitosis-admin
members = user

[group miproyecto]
writable = miproyecto
members = user member1 member2

Y añadimos las claves de los usuarios member1 y member2:

$ cd gitosis-admin
$ cp ~/member1.pub keydir/
$ cp ~/member2.pub keydir/

Ahora vamos a subir los cambios al servidor:

$ git add keydir gitosis.conf
$ git commit -m 'miproyecto con member1 y member2'
$ git push

Creando nuevos repositorios

Hasta ahora, hemos indicado a gitosis que habrá un nuevo repositorio y los usuarios que tienen acceso a él. Ahora vamos realmente a crear el repositorio. Todo esto se hace desde el lado del cliente:

$ git init miproyecto.git
Initialized empty Git repository in /home/member1/miproyecto.git/.git/
$ cd miproyecto.git/
$ git remote add origin gitosis@miservidor.com:miproyecto.git

Si tratamos de subir los cambios al servidor, nos indicará que el repositorio está vacío.

$ git push origin master
Initialized empty Git repository in /srv/gitosis/repositories/miproyecto.git/
error: src refspec master does not match any.
error: failed to push some refs to 'gitosis@miservidor.com:miproyecto.git'

Así que vamos a crear algo de contenido:

$ echo "" > README
$ git add README
$ git commit
[master (root-commit) 0dcec56] Initial commit
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 README
$ git push origin master
Initialized empty Git repository in /srv/gitosis/repositories/miproyecto.git/
Counting objects: 3, done.
Writing objects: 100% (3/3), 215 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
To gitosis@miservidor.com:miproyecto.git
 * [new branch]      master -> master

Y con esto todo listo :)

Full entry >>

Acceder a SQLite a través de JDBC

written by uve

13 November 2011

Ahora vamos a ver como podemos acceder a una base de datos SQLite a través de JDBC. Para ello, voy a hacer uso de del driver JDBCSQlite, así que lo primero que vamos a hacer es descargarlo:

$ wget -c http://files.zentus.com/sqlitejdbc/sqlitejdbc-v056.jar

Después podemos hacer uso del siguiente código de ejemplo para ver que todo funciona:

import java.sql.* ;

class SQLiteJDBCTest {
    private static String DATABASE = "base_de_datos.db";
    private static String TABLE = "TablaDeLaBaseDeDatos";

    public static void main(String args[]) {
        try {
            // Load the database driver
            Class.forName("org.sqlite.JDBC");

            // Get a connection to the database
            Connection conn = DriverManager.getConnection("jdbc:sqlite:" + DATABASE);

            // Print all warnings
            for(SQLWarning warn = conn.getWarnings(); warn != null; warn = warn.getNextWarning()) {
                System.out.println("SQL Warning:");
                System.out.println("State: " + warn.getSQLState());
                System.out.println("Message: " + warn.getMessage());
                System.out.println("Error: " + warn.getErrorCode());
            }

            // Get a statement from the connection
            Statement stmt = conn.createStatement() ;

            // Execute the query
            ResultSet rs = stmt.executeQuery("SELECT * FROM " + TABLE);

            // Close the result set, statement and the connection
            rs.close();
            stmt.close();
            conn.close();
        }
        catch(SQLException se) {
            System.err.println("SQL Exception:");

            // Loop through the SQL Exceptions
            while(se != null) {
                System.err.println("State: " + se.getSQLState());
                System.err.println("Message: " + se.getMessage());
                System.err.println("Error: " + se.getErrorCode());

                se = se.getNextException();
            }
        }
        catch(Exception e) {
            System.err.println(e.toString());
        }
    }
}

Lo único que habrá que modificar son las variables de clase DATABASE y TABLE. Una vez hecho esto, bastará con compilar y ejecutar para asegurarnos que todo funciona:

$ javac SQLiteJDBCTest.java
$ java SQLiteJDBCTest
java.lang.ClassNotFoundException: org.sqlite.JDBC

Es importante recordar, que para que esto funcione debemos añadir el driver que descargamos al principio al classpath:

$ java -cp .:sqlitejdbc-v056.jar SQLiteJDBCTest

Full entry >>

Instalar Mondrian en Ubuntu

written by uve

3 November 2011

Mondrian es un servidor OLAP software libre escrito en Java. Mondrian permite a los usuarios de negocio analizar grandes cantidades de datos en tiempo real. Los usuarios exploran los datos de negocio mediante la extracción y tabulación cruzada de información, mediante consultas analíticas complejas.

Además está preparado para ser desplegado en servidores de aplicaciones (en concreto he usado Tomcat), ya que está incluido un archivo WAR.

Mondrian WAR

Full entry >>

La teoría es cuando crees saber algo, pero no funciona.
La práctica es cuando algo funciona, pero no sabes por qué.
Los programadores combinan la teoría y la práctica:
Nada funciona y no saben por qué.