Los números de 2011

Los duendes de las estadísticas de WordPress.com prepararon un reporte para el año 2011 de este blog.

Aqui es un extracto

La sala de conciertos de la Ópera de Sydney contiene 2.700 personas. Este blog fue visto cerca de 9.000 veces en 2011. Si fuese un concierto en la Ópera, se necesitarían alrededor de 3 actuaciones agotadas para que toda esa gente lo viera.

Haz click para ver el reporte completo.

CSV SQLIte

Hola, en esta ocasión me he visto en la necesidad de crear un mini-programa que me sirva para cargar datos de ficheros .csv a la base de datos SQLIte.

Esta es la apariencia que tiene el programa.

Descargar

Como siempre, espero que le sirva a alguien. Si alguien necesita el código sólo tiene que contactar conmigo, y encantado se lo proporcionaré.

JLed

Hola, mientras realizaba mis proyectillos, me he visto en la necesidad de crear una clase que se asemeje a un led. Este es el aspecto que tienen los led creados con esta clase.

Dejo el API así, como el paquete jar con el fuente y el .class

API    JLed.jar

Una vez creada la clase y dando rienda suelta a la imaginación, se me ocurrieron un par de ejemplos cutres de lo que se puede hacer con los led.

Ejemplo 1)

Me he creado una clase que contenga 8 leds que representarán un Byte.

Esta clase va a tener uno o varios arrays de String , que contendrán cadenas en Hexadecimal, que representarań los estados de los led en cada momento.

Por ejemplo String[] secuencia={“0×00″,”0×81″,”0xC3″,”0xE7″,”0xFF”};

Este array en Hexadecimal, lo vamos a transformar a binario, como bien es sabido, hay una correspondencia directa entre el Hexadecimal y el binario, así pues el conjunto de bits que nos quedará como resultado de la transformación del array anterior es el siguiente:

0×00=00000000

0×81=10000001

0xC3=11000011

0xE7=11100111

0xFF=11111111

Una vez realizada la transformación, vamos a asignar a cada led un bit del Byte que obtenemos de la transformación. Esto lo tenemos que hacer con cada uno de los estados de la secuencia

Así pues el efecto de esta secuencia es el siguiente:

0×00=00000000

0×81=10000001

0xC3=11000011

0xE7=11100111

0xFF=11111111

De esta manera, nos resulta muy fácil crear nuevos efectos para nuestros led, yo he puesto aparte de la anterior las siguientes secuencias.

String[] secuencia2={“0×00″,”0xFF”};

String[] secuencia3={“0×80″,”0×40″,”0×20″,”0×10″,”0×08″,”0×04″,”0×02″,”0×01″,”0×02″,”0×04″,”0×08″,”0×10″,”0×20″,”0×40″};

String[] secuencia4={“0xAA”,”0×55″};

String[] secuencia5={“0×00″,”0×81″,”0xC3″,”0xE7″,”0xFF”,”0x7E”,”0x3C”,”0×18″};

String[] secuencia6={“0×00″,”0×81″,”0xC3″,”0xE7″,”0xFF”,”0xE7″,”0xC3″,”0×81″};

Dejo aqui disponible el jar de este ejemplo, que ejecutara todas las secuencias.

Ejemplo 2)

Tomando como referencia el ejemplo anterior, y haciendo uso de la facilidad de transformar de hexadecimal a binario,  vamos a complicar la cosa, pero sólo un poco. Vamos a crear una flecha hacia la derecha.

Como lo estarán intuyendo, vamos a necesitar de una matriz de leds, yo la he creado de 7×8. Bien ahora que ya tenemos nuestra matríz, tenemos que crear los estados, en nuestro caso son los siguientes:

String[][] sec={{“0×08″},{“0x0C”},{“0xFE”},{“0xFF”},{“0xFE”},{“0x0C”},{“0×08″}};

0×08=00001000
0x0C=00001100
0xFE=11111110
0xFF=11111111
0xFE=11111110
0x0C=00001100
0×08=00001000

Bueno ya esta todo casi conseguido, tras hacer unos cuantos bucles, y como en el ejemplo anterior, asignar a cada led su valor correspondiente, este es el resultado.

Si a esto le ponemos una pausa, y en un bucle podemos crear el efecto de refresco.

Dejo aquí este segundo ejemplo, que a su vez crea el efecto de barrido.

PD.: En ambos ejemplos, sólo dejo el ejecutable, si alguien quiere el código, me lo puede pedir y encantado se lo enviaré.

Integrar Apache-Tomcat+BIRT+SQLite

Instalar lo necesario

Partimos de un Ubuntu Server 11.04 limpio, instalamos apache tomcat y samba:

 #apt-get install tomcat6 tomcat6-admin samba samba-client smbfs smbclient

Configurar Apache-Tomcat

 Una vez instalado,apache tomcat, modificamos los xml para poder acceder a la aplicación de administración así como para crear los usuario.

Acceder a la aplicación de administración, nos vamos al directorio

# cd /etc/tomcat6/

escribimos: #nano context.xml

En la etiqueta “Context” escribimos path=”/manager” privileged=”true”

docBase=”/usr/local/tomcat6/server/manager”

 tiene que quedar así:

Ya hemos dado acceso a la aplicación de administración, ahora tenemos que crear el usuario para la administración.

Escribimos: #nano tomcat-users.xml

Quitamos las líneas que comentan el bloque de roles y usuarios, y agregamos dos líneas

la primera:

<role rolename=”manager”/>

 agregamos la segunda linea:

<user name=”mi_usuario” password=”mi_password” roles=”manager”/>

 en mi caso he creado un usuario llamado frlx, por lo tanto escribí:

<user name=”frlx” password=”frlx” roles=”manager”/>

tiene que quedar así:

Reiniciamos tomcat, escribimos:

# /etc/init.d/tomcat6 restart

 Ahora ya podremos acceder desde cualquier ordenador a la consola de administración, escribiendo la ip, y el puerto, en mi caso: 192.168.1.31:8080, ahora queda instalar BIRT

En la página que nos aparece por defecto, pinchamos sobre el link que dice “manager webapp”, nos pedirá el usuario y contraseña , escribimos la que hemos puesto anteriormente. Una vez logeados nos parecerá la consola de administración.

Una vez logeados nos parecerá la consola de administración.

Instalar BIRT

Nos descargamos de la página de eclipse el runtime de BIRT

Descomprimimos el fichero zip con el runtime de BIRT, dentro de esa carpeta descomprimida, vamos a encontrar un fichero llamado birt.war.

Nos vamos a la consola de administración de tomcat, en la sección “Archivo war a desplegar”.

Damos al botón “Examinar”, y seleccionamos el fichero birt.war, una vez seleccionado, damos al botón desplegar y listo.

Para comprobar que BIRT esta desplegado en tomcat, hacemos click sobre /birt, luego sobre “View Example”, y tendrá que ejecutarse un informe de ejemplo que viene por defecto.

Bien ahora ya tenemos, desplegado BIRT en nuestro servidor de aplicaciones. Ahora queda realizar un par de pasos necesarios para poder trabajar cómodamente.

Configurar para trabajar con SQLite

En el servidor.

Vamos a crear tres directorios compartidos visibles desde nuestra red, uno será para dejar la base de datos , otro para dejar los informes y otro para dejar cosas que necesitaremos compartir.

Escribimos:

# mkdir /home/mi_usuario/compartido

cambiamos los permisos

#chmod 777 /home/mi_usuario/compartido

 # mkdir /home/mi_usuario/dbSQLite

cambiamos los permisos

#chmod 777 /home/mi_usuario/dbSQLite

Ahora los compartimos, escribimos

# nano /etc/samba/smb.conf

Bajamos hasta el final y escribimos

 [Compartido]

comment = Carpeta para intercambio de ficheros

path = /home/mi_usuario/compartido public = yes writable = yes

[DB]

comment = Carpeta que contiene la BD

path = /home/mi_usuario/dbSQLite public = yes writable = yes

[Informes]

comment = Carpeta que contiene los informes

path = /var/lib/tomcat6/webapps

public = yes

writable = yes

Guardamos los cambios, y listo, ya tenemos nuestros directorios compartidos.

Aunque ya tenemos BIRT desplegado y funcionando, tenemos que hacer una cosa más,

en el directorio compartido “Compartido”, copiamos la carpeta “WebViewerExample”, del runtime de BIRT, ahora en nuestra consola escribimos:

#cd /home/mi_usuario/compartido/

#mv -r WebViewerExample Birt

#cp -r ./Birt /var/lib/tomcat6/webapps/

 Abrimos la consola de administración de tomcat, y paramos la aplicación web birt, aparecerá otra que se llamara Birt, que tendremos que desplegar, esa es la que nos servirá.

 Ahora nos queda permitir escribir en la carpeta compartida en dónde se dejarán los informes, escribimos en consola:

# chmod 777 /var/lib/tomcat6/webapps/Birt

reiniciamos tomcat

# /etc/init.d/tomcat6 restart

 Para comprobar que de verdad tenemos los directorios compartido abrimos firefox y escribimos:

smb://ip_servidor/

En mi caso escribí

smb://192.168.1.31/

el resultado tiene que ser algo así.

Ahora ya queda poco para terminar todo esto. Vamos a integrar los drivers de SQLite, para ello hacemos uso de la carpeta compartida que hemos llamado “Compartido”, nos descargamos los drivers de aquí , una vez descargados, presionamos la combinación alt+f2, y.

Escribimos smb://mi_servidor/compartido,

en mi caso escribí

smb://FRLXSERVER/compartido

copiamos el driver descargado en esa carpeta.

Ahora en nuestro servidor escribimos lo siguiente:

#cd /var/lib/tomcat6/webapps/Birt/WEB-INF/lib

una vez que estemos en ese directorio , escribimos.

 # cp /home/mi_usuario/compartido/sqlitejdbc-v056.jar ./

 hacemos un ls para ver si al final de la lista esta, esto sólo por despejar dudas.

Reiniciamos tomcat

# /etc/init.d/tomcat6 restart

 Ahora vamos a copiar la base de datos. Para ello pulsamos alt+f2, y escribimos:

smb://mi_servidor/DB, en mi caso

smb://FRLXSERVER/DB

en la ventana que se nos abrirá, copiamos nuestra base de datos SQLite.

Eso es todo, ahora cuando queramos subir un informe, hacemos lo siguiente.

alt+f2, escribimos

smb://mi_servidor/informes, en mi caso

smb://FRLXSERVER/informes

y en la ventana que se abre pegamos el fichero .rptdesign

 IMPORTANTE: antes de copiar el informe, tenemos que cambiar la url de la base de datos, como bien es sabido SQLite es una base de datos que no permite conexiones cliente, sólo permite conexiones locales, por lo que tenemos que cambiar lo siguiente:

<data-sources>

<oda-data-source extensionID=“org.eclipse.birt.report.data.oda.jdbc” name=“Data Source” id=“27″>

<text-property name=“displayName”></text-property>

<list-property name=“privateDriverProperties”>

<ex-property>

<name>contentBidiFormatStr</name>

<value>ILYNN</value>

</ex-property>

<ex-property>

<name>metadataBidiFormatStr</name>

<value>ILYNN</value>

</ex-property>

</list-property>

<property name=“odaDriverClass”>org.sqlite.JDBC</property>

<!–AQUI TENEMOS QUE DECIRLE DÓNDE SE ENCUENTRA NUESTRA BASE DE DATOS EN EL SERVIDOR–>

<!–EN NUESTRO CASO SERA jdbc:sqlite:/home/frlx/dbSQLite/ALMACEN.sqlite–>

<property name=“odaURL”>jdbc:sqlite:/home/mi_usuario/dbSQLite/mi_base_de_datos.sqlite</property>

</oda-data-source>

</data-sources>

Para ejecutarlo vamos a firefox y escribimos

http://192.168.1.31:8080/Birt/frameset?__report=mi_fichero.rptdesign

en mi caso tengo un informe que se llama testSqlite.rptdesign, entonces la url es

http://192.168.1.31:8080/Birt/frameset?__report=testSqlite.rptdesign

el resultado es este.

Eclipse BIRT-SQLite

Para integrar SQLite con BIRT, partimos de que tenemos instalado eclipse, si no escribimos

sudo apt-get install eclipse

Una vez se haya instalado, nos vamos a

Help→Install New Software, de la lista desplegable Work with,

seleccionamos la opción, –All Avalaible Sites–.

En la parte inferior aparecerán las distintas aplicaciones para instalar

Seleccionamos “Business Intelligence, Reporting and Charting”

Ahora abrimos la vista para BIRT, ahora vamos a crear un nuevo dataSource, que contendrá, los datos de la consulta, y lo hacemos así:

En la pestaña Data, en el apartado de DataSources, hacemos un click derecho y damos a “New Data Source”

Se abre un asistente, en este seleccionamos “JDBC Data Source”

Damos al botón “Next”, ahora nos saldrá una ventana en la que tendremos que dar al botón “manage drivers”, una vez demos a ese botón se abrirá el siguiente diálogo.

Damos al botón “Add…”, y seleccionamos los drivers para sqlite, que los podemos descargar de aquí http://files.zentus.com/sqlitejdbc/sqlitejdbc-v056.jar

 Hacemos click en OK.

Ponemos los parámetros de conexión.

De la lista desplegable seleccionamos los drivers correspondientes a sqlite, y en driver URL, el path de la base de datos. Si todo esta bien configurado damos a “Test Connection…” y nos debe, damos a Finish y ya tenemos la conexión establecida a nuestra base de datos.

Creamos un nuevo dataSet, creamos una query, y ya podemos probar nuestro informe.

Yo me he creado este de ejemplo.

Hay que decir que no podremos verlo en el WebBrowser, ya que no tenemos un servidor de aplicaciones con el runtime de BIRT.


Alinear texto en java

Hola, hace un par de días, me escribieron, pidiendo ayuda sobre el editor de texto, en concreto lo que necesitaba era que se pueda alinear el texto es decir, que se pueda poner a la izquierda, centro o derecha. Pues bien después de estar un buen rato surfeando por el API de Java pude dar con ello.

Primeramente dejo las imágenes de las pruebas que estuve haciendo así como las clases limpias, para que quien vaya a usarlas no se lie mucho y las pueda integrar fácilmente en su proyecto.

 

 

 

 

 

 

 

 

 

 

Descargar Ejecutable

Descargar Código

Y este es el resultado ya echos los cambios en el editor de texto.

 

 

 

 

 

 

 

 

 

 

Descargar Ejecutable

Descargar Código

 

Descargar proyecto entero

Para poner las cosas más fáciles, por si alguien no quiere descargarse el código y le urge, este es el método que he implementado:

private void alineacion(int stc)
 {
 StyledDocument st=texto.getStyledDocument();
 SimpleAttributeSet bSet = new SimpleAttributeSet(); 
 StyleConstants.setAlignment(bSet, stc); 
 st.setParagraphAttributes(0,texto.getText().length(), bSet, false); 
 texto.updateUI();
 }
//texto, es un objeto de la clase JTextPane

cuando lo llamo lo llamo de la siguiente manera:

alineacion(StyleConstants.ALIGN_RIGHT);

espero que les sirva.

FELIZ 11111011011

FELIZ 2011, GRACIAS POR TODAS LA VISITAS Y LOS COMENTARIOS, Y LAS DUDAS QUE ME HAN ENVIADO. DE VERDAD MUCHAS GRACIAS.

ERROR 2003 (HY000): Can’t connect to MySQL server on …..

Estos días he estado haciendo cosas con VirtualBox y una instalación de Ubuntu Server, todo ha ido bien hasta llegado el momento de crear una conexión de un cliente a mysql.

El tema es que como pone el título, cada vez que me quería conectar me salía ese error,  busque y busque y di con la solución mezclando lo que ponía en la ayuda de ubuntu y en el manual de MySQL .

Empecemos.

1.- Una vez instalado nuestro Ubuntu Server, entramos a mysql con el usuario root.

$ mysql -h localhost -u root -p

2.-Creamos un usuario de la siguiente manera.

GRANT ALL PRIVILEGES ON *.* TO 'miNuevoUsuario'@'localhost' IDENTIFIED BY 'miPassword' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'miNuevoUsuario'@'%' IDENTIFIED BY 'miPassword' WITH GRANT OPTION;
Yo he creado el siguiente usuario
GRANT ALL PRIVILEGES ON *.* TO 'frlx'@'localhost' IDENTIFIED BY 'frlx' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'frlx'@'%' IDENTIFIED BY 'frlx' WITH GRANT OPTION;

Una breve explicación del porque creamos así los usuarios.   Según leí en el manual de ayuda de MySQL, cuando creamos un usuario si después del @ solo ponemos ‘localhost’, ese usuario solo tendrá acceso desde el propio servidor. Si ponemos después del @, ‘%’, estamos indicando que ese usuario tiene acceso remoto. Para una explicación más amplia dejo el link de MySQl de dónde saque la información.

3.-Ahora si intentamos conectarnos desde un cliente nos saldrá el error.

4.-Es ahora cuando entra la ayuda de Ubuntu.

En nuestro servidor, salimos de MySQL, con el comando exit.

A continuación en la consola de nuestro servidor entramos como superusuario:

$sudo su Usuario
nos dirigimos a.
# cd /etc/mysql

5.-En este directorio escribimos.

#nano my.cnf
buscamos la línea: bind-address = 127.0.0.0
la comentamos: #bind-address = 127.0.0.0
ahora escribimos debajo: bind-address=0.0.0.0
salimos de nano: ctrl+x->y->intro

6.- Reiniciamos MySQL

podemos hacerlo desde el directorio en el que nos encontramos (etc/mysql), escribiendo:
# ../init.d/mysql restart
si nos encontramos en otro directorio escribimos:
# /etc/init.d/mysql restart

7.-Probar la conexión.

Entramos a MySQL desde el cliente con nuestro usuario, en mi caso escribí:
mysql -h 192.168.1.50 -u frlx -p  , y este fue el resultado, por fin me pude conectar!

y a partir de aquí pude utilizar la consola de MySQL, asi como la herramienta MySQl Administrator.

No hubiera sido posible llegar a la solución sin la ayuda de los dos manuales, de Ubuntu y MySQL

 

Hacer un PDF desde java

Hola, a petición de un lector que necesitaba una clase que le guardara los documentos en PDF, he echo la clase que dejo abajo. Para poder hacer esta clase he utilizado la librería iText, que también dejo disponible ahí abajo, así como el link de su API.

Es necesario que configuremos en nuestro entorno el Path para esa librería si no nos funcionará. Espero que les sirva.

Libreria iText

API iText

Clase

Java vs .NET

Seguir

Get every new post delivered to your Inbox.