Blog de Luis Arévalo


Esquema básico de Orientación a Objetos en Java


Oct 26

Posted: under Docencia, java.
Tags: , , , , , , , , ,

Dentro de esta entrada recojo esquemáticamente los principales aspectos de la orientación de objetos en el lenguaje Java, es decir, un chuletario de programación OO en Java. Este esquema suelo realizarlo habitualmente en las tutorias ECTS (no programadas) con los alumnos como recordatorio de la programación orientada a objetos para este lenguaje. Después de tener que hacerlo año tras año en pizarra he decidido finalmente plasmarlo en un documento y publicarlo en este espacio.

Este esquema deben tenerse en la mesilla de noche y debe usarse en aquellos casos que la clase a implementar no tenga lógica añadida, es decir, en aquellos casos que únicamente tengamos: constructor por defecto, constructor copia, constructor/es parametrizado/s, getter, setter, equals y toString. He categorizado los siguientes casos:

  • Clase: Considero cualquier clase formada únicamente por atributos de tipo simple.
  • Clase con String: Cuando haya atributos de la clase String
  • Composición: Distinguiendo entre: composición unitaria o con multiplicadad (array o un collection)
  • Herencia con sus distintas variantes: herencia básica, abstracta e interface.
Cualquier error que exista en el esquema, hacédmelo saber (Imprimir en A-3).

Licencia Creative Commons
Este obra está bajo una licencia Creative Commons Atribución-NoComercial-SinDerivadas 2.5 España.

 

Comments (0)

Crea tu propio disco duro virtual en la nube usando software libre.


Sep 21

Posted: under General, GNU/Linux.
Tags: , , , , , ,

Por el título de esta entrada, puede que algunas personas no entiendan del todo este post, pero por el contrario, si el título hubiera sido “Crea tu propio Dropbox usando software libre”, seguramente la gran mayoría (intento evitar todos) lo habrían entendido a la primera y encima no tengo la limitación de 2GB.

Aquellas personas que realmente me conocen saben que soy un poquito maniático con mis documentos personales: mi ordenador tiene una participación encriptada, mi portatil tiene una partición encriptada, la tarjeta SD tiene los ficheros encriptados, …… .  Por este motivo, he de deciros que llevo varios meses si dormir bien, desde que decidí abrir una cuenta en Dropbox, pues tener información personal en un disco duro virtual en la nube no me aportaba la suficiente seguridad. Pero ya he encontrado una solución bastante estable después de seguir varias aplicaciones durante meses. Si buscáis un poco hay varias soluciones: syncany, owncloud, sparkleshare, y otras tantas propietarias.

  • Syncany: Muy buena pinta pero esta en fase MUY beta. Funciona con Java y la implementación parte de 0. Creo que les va a llevar su tiempo.
  • Owncloud: Proyecto KDE  –> funciona. Inconveniente bajo mi opinión: necesitas instalar MYSQL y Apache. Busco algo más sencillo
  • Sparkleshare: Utiliza por debajo ssh (comunicación segura) y git (herramienta de control de versiones muy afianzada). Funciona bajo linux y mac y estará en un futuro para Windows y Android. Lo primero que dije al verla: que bien suena con ssh y git!!!

Instalación en el servidor (necesita git 1.7.1):

Si usáis la versión 10.04 de ubuntu se puede obtener instalando git 1.7.1 desde el siguiente repositorio de ppa.

sudo add-apt-repository ppa:git-core/ppa (actualizar con update y upgrade)

A continuación realizar:

sudo apt-get install git-core openssh-server
git init --bare NOMBRE.git

Instalación en el cliente (git 1.7.1 y sparkleshare):

En este caso tendréis que instalar git y el propio paquete sparkleshare (y nada más)

sudo add-apt-repository ppa:git-core/ppa
sudo add-apt-repository ppa:warp10/sparklesha
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install sparkleshare openssh-client

Configuración en el cliente:

1. Para que no os pida constantemente la contraseña de conexión por ssh realizar los dos siguientes pasos:

ssh-keygen

ssh-copy-id USERNAME@SERVER

  • donde USERNAME es el usuario que tienes en el servidor y SERVER la IP o el nombre del ordenador

2. Ejecutar sparkleshare

  • Introducir un nombre y una cuenta de correo
  • Seleccionar  “my own server:” e introducir USERNAME@SERVER
  • Introducir el path del servidor donde se encuentra NOMBRE.git  (/home/USERNAME/NOMBRE.git)
  • Finalmente sincronizar con el sevidor.

El programa te crea una carpeta en tu directorio HOME denominada “sparkleshare”  que no he encontrado forma de cambiar. Eso sí, gracias a mi manía de tener todo encriptado, sólo he tenido que copiar este directorio a mi partición encriptada y realizar un enlace simbólico para darle un toque más de seguridad.

Comments (1)

Exportar varios ficheros .doc a .pdf usando OpenOffice en lote


Sep 20

Posted: under GNU/Linux.
Tags: , , , , , ,

Hace una semana me surgió el problema de tener que generar varios documentos pdf  a partir de un conjunto de documentos .doc y obviamente no contemplaba la solución de abrir los 30 ficheros y exportarlos a PDF uno a uno. Ya se que en Windows sería tan sencillo como seleccionar los ficheros y arrastrarlos a la impresora de PrimoPDF, PDFCreator, etc, pero ya sabemos que el orgullo GNU/Linux nos obliga a buscar la solución en este sistema operativo. Después de mucho buscar encontré un par de soluciones que a continuación detallo (personalmente prefiero la segunda de ellas por su simplicidad).

Solución 1. Usando las herramientas pyodconverter o jodconverter

  • Es necesario lanzar openOffice como servicio

soffice -headless -accept=”socket,host=127.0.0.1,port=8100;urp;” -nofirststartwizard

  • Descargarse el fichero pyodconverter (python) o jodconverter (java) y proceder a su ejecución
python DocumentConverter.py nombre.doc nombre.pdf
o
java -jar jodconverter-cli-2.2.2.jar nombre.doc nombre.pdf

 

  • Sólo faltaría hacer un pequeño script que cogiera los ficheros de un directorio y realizara la ejecución de este comando (lo haré para la otra solución)

 

Solución 2. Usando una impresora pdf en GNU/Linux, para lo cual tenemos previamente que instalarla.

  • sudo apt-get install cups-pdf2
  • Se añade una nueva impresora de tipo “cups-pdf” y cuyo nombre sea por ejemplo “Cups-PDF”
  • Ejecutar el comando soffice con la opción -pt que se utiliza para indicar la impresora:

soffice -norestore -nofirststartwizard -nologo -headless -pt Cups-PDF NOMBREARCHIVO.doc

Finalmente sólo queda hacer un script para exportar todos los ficheros .doc de un directorio. El script podría ser algo similar a lo mostrado a continuación.

#!/bin/bash
for linea in $(ls *.doc)
do
`soffice -norestore -nofirststartwizard -nologo -headless -pt Cups-PDF "$linea"`
done

 

Comments (2)

vDocXML library: A library for the management of XML versions


Dic 08

Posted: under eXist, Investigación, XML, XQuery.
Tags: , ,

It is a pleasure for me to announce the release of a new software for the management of XML versions which is called vDocXML. Its implementation has been made by XQuery modules and it can be used to extend the XML native database (eXist) for adding versioning features in a native way. You can find more information in http://code.google.com/p/vdocxml/.

Comments (0)

vDocXML. A data model for managing XML versions


Nov 11

Posted: under eXist, Investigación, XQuery.
Tags: , , ,

Last week, I was in Germany for a meeting in Rostock (3rd Model Meeting: Modeling biological systems. Bio-model versioning – how to identify, interpret and annotate changes in models). Besides I took advantages of this trip to visit Berlin. what wonderful cities!
My contribution consisted of giving an overview of different techniques for the management of XML versions as well as to show our versioning system which is called vDocXML (slides). If you have any questions, just let me know adding a comment.
The abstract of this talk is: In this talk an overview of different techniques for the management of XML versions will be explained. Traditional systems, temporal databases, procedures based on XML change operations (delta XML) or by integrating the different versions into a single XML document using a temporal, a version or a temporal-version technique will be revised. The main advantages and disadvantages of each one will be discussed. In the second part of this talk, the vDocXML data model will be shown which uses a versionstamp instead of a timestamp technique. It allows us to manage branched versioning in an easy way. Furthermore, the vDocXML library, which is a versioning system based on this model and using XQuery modules, will be explained.

Comments (0)

Escuchar radios españolas en KUbuntu


Jul 22

Posted: under GNU/Linux.
Tags: , , , ,

No se a vosotros pero a mí me ha sucedido muchísimas veces que para escuchar la radio por Internet en Ubuntu he tenido que liar la de Dios: buscar la dirección URL, mms, etc, utilizar un programa concreto con la URL VLC, amarok,… usar el reproductor de la radio en internet que no es compatible con Linux, etc etc etc. Hoy se ha hecho célebre la frase de: lo que buscas, te esta golpeando en la cara de lo cerca que lo tienes. Existe una forma muy sencilla de tener la gran mayoría de las radios españolas en Amarok  tiene un script propio para ello). Haremos los siguientes pasos:

  • Abrimos Amarok (por supuesto)
  • Seleccionamos Herramientas –> Gestor de Guiones (Script)
  • Pinchamos en “obtener más guiones”
  • Buscamos “spanish” y nos permitirán instalar un gran número de radios.
  • Reiniciamos Amarok y sólo nos queda irnos al “Origen de Medio” –> Internet  y aparece una nueva categoría denominada “Radio Española”.

Se acabo el buscar como loco la maldita URL de las radios. Genial!!!!!

Comments (1)

Sun-Java5 -jdk en Ubuntu 10.04


Jun 11

Posted: under Docencia, java.
Tags: ,

En mi anterior entrada expuse como realizar la instalación  de sun-java6-jdk en la distribución GNU/Linux Ubuntu 10.04. Hoy he necesitado instalar la versión 1.5 de Java para una aplicación antigua y, como no, otra vez me he tenido que pegar con Ubuntu para su instalación.

En este caso, Java 1.5  no se encuentran dentro del repositorio de Ubuntu Lucid y el truco es descargárselo de Jaunty (9.10). Aunque se puede añadir este repositorio  a /etc/apt/source.list he preferido descargármelo de http://packages.ubuntu.com/.

Para ello hay que descargarse los siguientes paquetes desde Jaunty:

  • sun-java5-bin
  • sun-java5-jre
  • sun-java5.jdk

Una vez descargados, para su instalación sólo hace falta ejecutar el siguiente comando:
sudo dpkg -i *.deb

Comments (0)

Sun-Java-jdk en Ubuntu 10.04


Abr 14

Posted: under GNU/Linux.
Tags: ,

En la nueva versión de Ubuntu (10.04) los paquetes de Sun-Java no se encuentran dentro del repositorio multiverse. En un primer momento llegué a pensar que, debido a la compra por parte de Oracle de SUN,  ya no se incluía este software en la nueva versión de Ubuntu, pero navegando un poquito descubrí que estos paquetes se encuentran dentro del repositorio llamado partner. Su activación se puede hacer

  • En modo consola tecleando:  sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
  • Dentro de los repositorios de Synaptic, activando en la pestaña “Otro software” la opción partner.

Una vez actualizado la base de datos de paquetes, procederemos como siempre a:

sudo apt-get install sun-java6-jdk

Este repositorio partner también nos da acceso, entre otros,  al siguiente software (acroread) junto a otros que, a día de hoy no están habilitados, pero que en versiones anteriores de Ubuntu si estaban como:

  • Opera
  • Parallels
  • Wmware Player
  • ….

Comments (0)

Subversion en Netbeans


Mar 03

Posted: under Docencia, java.
Tags: , ,

En mi anterior entrada mostré cómo configurar un servidor subversion en ubuntu para que lo usen los alumnos de Programación Avanzada. El siguiente paso es mostrarles cómo usarlo en Netbeans. Pasos

more_link_text

Comments (2)

Instalación de un servidor subversion


Mar 01

Posted: under Docencia, GNU/Linux.
Tags: , ,

Este año he decidido incorporar el uso de una herramienta de control de versiones en la asignatura de Programación Avanzada.
Planificar cómo venderle la idea a los alumnos, para que se familiaricen con ella lo antes posible y se acostumbren a utilizarla, ha sido una tarea relativamente fácil: permite realizar copias de seguridad, puedes regresar a un código anterior si las últimas modificaciones no funcionan, permite ver la evolución de los cambios realizados, etc. Al final del cuatrimestre les informaré de otras tantas ventajas.

Por todo lo anterior, en esta entrada mostraré cómo instalar un servidor subversion sin apache en ubuntu. Los alumnos accederán a la herramienta desde Netbeans.

Pasos:

  1. Instalar el paquete subversion: sudo apt-get install subversion
  2. Crear una carpeta para los repositorios: sudo mkdir /home/svn
  3. Crear un repositorio (avanzada): sudo svnadmin create /home/svn/avanzada/
  4. Arrancar el servidor: sudo svnserve -d -r /home/svn

Con estos sencillos pasos, hemos instalado el servidor en la URL: svn://ip_servidor/avanzada (avanzada es el nombre del repositorio creado). El siguiente paso será crear un proyecto dentro del repositorio para empezar a trabajar: svn import /codigo/Proyecto1 svn://servidor/avanzada -m “Primer commit”, donde /codigo/Proyecto1 es un directorio local de nuestro ordenador (supondremos que tenemos el cliente svn de Ubuntu).

En la asignatura de Programación Avanzada cada alumno tiene su propio directorio subversion, no accesible por el resto de alumnos. Para cubrir esta necesidad debemos configurar subversion apropiadamente:

1. Establecer el fichero de password y autorizaciones. Se configura en /home/svn/Avanzada/conf/svnserve.conf de la siguiente forma:

[general]
anon-access = none #no permitimos accesos anónimos
auth-access = write #el acceso es para escritura
password-db = passwd #configuramos el fichero de contraseñas en /conf/passwd
authz-db = authz #configuramos el fichero autorizaciones en /conf/passwd

2. Establecer las contraseñas:

[users]
ljarevalo=xxxxx
pepe=yyyyy
ana=zzzzz

3. Establecer las autorizaciones:

[avanzada:/] #Para el repositorio general: el usuario ljarevalo tiene permisos de lectura y escritura
ljarevalo=rw
[avanzada:/pepe] #Para el directorio del alumno pepe: pepe tiene permisos lectura y escritura pero ljarevalo sólo lectura
pepe=rw
ljarevalo=r

Con estas sencillas indicaciones, los alumnos ya pueden utilizar el cliente Subversion de Netbeans para sus tareas de programación. Otro día les explicaré conceptos como: branch, trunk, tags, …
Dos cositas más:

  • Si queréis que se lance subversion al arrancar la máquina: utilizar el script de esta página.
  • Si queréis añadir apache, googlear un poco y encontraréis muchas referencias.

Comments (0)