Social

lunes, 10 de junio de 2013

JavaFX: Agregar y eliminar filas de una tabla (TableView) dinamicamente

Es recomendable ver antes: JavaFX: Agregar Tabla

Los elementos del tipo TableView en JavaFX usan una lista observable para permitir administrar su contenido. Además JavaFX permite la creación de celdas personalizadas, podemos agregar muchos elementos visuales. En este caso usamos un botón (Button) para permitir para eliminar un elemento de la tabla.


Para realizar lo anterior se puede utilizar el siguiente código:


Básicamente los elementos del código son  la inicialización de la ventana y tabla, agregar las columnas (incluyendo la que muestra el botón a la tabla), el área para agregar una nueva fila (línea 100) que básicamente solo agrega más objetos a una lista observable, la clase ButtonCell que nos permite agregar el botón dentro un celda (donde se agrega la funcionalidad) y el pojo persona para manejar la información.

sábado, 8 de junio de 2013

Python: Escribir un Json

Para leer un json en python este trae desde la versión 2.6 incluida la librería de json. Esta librería nos permite escribir una cadena json a un archivo o fichero. Con el siguiente código fácilmente se puede obtener la información de una cadena json, parsear el contenido y escribirlo en archivo.



Básicamente parseamos nuestra cadena con el método dumps, buscamos un fichero donde guardarlo y lo escribimos en este con el método dump.

Python: Leer un Json

Para leer un json en python este trae desde la version 2.6 incluida la librería de json. Esta librería nos permite leer una cadena json desde un archivo y explorarla a través de sus etiquetas. En el siguiente ejemplo se puede tener un archivo .json con el siguiente contenido:

Y con el siguiente código facilmente se puede obtener la información del archivo cargarlo a un objeto Json y explorarlo para leerlo luego.

Básicamente abrimos el archivo o fichero json y luego obtenemos con el método load la cadena para ubicarla dentro de la variable json para luego explorar su contenido. El resultado del código anterior es el siguiente:

'http://javainutil.blogspot.com'
'Escribir un JSON'
'tag 2'

domingo, 2 de junio de 2013

Compilar C / C++ en Windows

En Windows existen 2 muy buenas alternativas de compilar nuestros programas hechos en C/C++ y así obtener el ejecutable. La primera es utilizar en compilador que Visual Studio trae consigo. Visual Studio trae consigo muchas herramientas que nos permiten realizar nuestro proyecto desde cero.

En caso de que no deseemos utilizar las el compilador de Visual Studio, existe una muy buena alternativa que es MinGW. MinGW permite crear un pequeño entorno de desarrollo que nos permite utilizar las funcionalidades de las librerías de Microsoft C.

En el siguiente video se muestra el proceso de instalación y compilación de un ejemplo usando MinGW.


Siguiendo el tutorial, se podrá compilar nuestro código en C/C++ para generar un .exe que podemos ejecutar luego.

martes, 28 de mayo de 2013

Instalar Java en Centos 6.4

Para instalar Java en cualquiera de sus versiones basta con seguir los siguientes pasos, (donde diga versión, lo cambiamos con la el paquete descargado):

1. Descargar Java
Java se puede descargar en la página de Oracle. Se puede utilizar el siguiente enlace http://www.oracle.com/technetwork/java/javase/downloads/index.html. Se debe descargar el paquete .rpm ya sea el de 64 ó 32 bits, JDK ó JRE.

2. Cambiar a usuario root:
sudo -i
sudo su

3. Instalar el JDK o JRE
//JDK
rpm -Uvh /ruta/al/directorio/jdk-<version>.rpm
//JRE
rpm -Uvh /ruta/al/directorio/jre-<version>.rpm

4. Instalar java, javaws, libjavaplugin.so (para Mozilla) y javac con el comando alternatives --install
// java
alternatives --install /usr/bin/java java /usr/java/latest/jre/bin/java 20000
// javaws
alternatives --install /usr/bin/javaws javaws /usr/java/latest/jre/bin/javaws 20000

// Java Browser (Mozilla) Plugin 32-bit
alternatives --install /usr/lib/mozilla/plugins/libjavaplugin.so libjavaplugin.so /usr/java/latest/jre/lib/i386/libnpjp2.so 20000

// Java Browser (Mozilla) Plugin 64-bit
alternatives --install /usr/lib64/mozilla/plugins/libjavaplugin.so libjavaplugin.so.x86_64 /usr/java/latest/jre/lib/amd64/libnpjp2.so 20000

// Se instala javac solo si descargamos el JDK
alternatives --install /usr/bin/javac javac /usr/java/latest/bin/javac 20000
alternatives --install /usr/bin/jar jar /usr/java/latest/bin/jar 20000

5. Verificar las versiones de java, javaws, libjavaplugin.so y javac
java -version
java version "1.7.0_21"
Java(TM) SE Runtime Environment (build 1.7.0_21-b04)
Java HotSpot(TM) 64-Bit Server VM (build 22.1-b02, mixed mode)

6. Cambiar entre las versiones disponibles.
Este paso se debe realizar para cada comando. Java, javaws, javac, etc.
alternatives --config java

There are 4 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
*   1           /usr/java/jdk1.6.0_24/jre/bin/java
 +  2           /usr/java/jdk1.6.0_26/jre/bin/java
    3           /usr/lib/jvm/jre-1.6.0-openjdk/bin/java
    4           /usr/java/jdk1.7.0_21/jre/bin/java

Enter to keep the current selection[+], or type selection number: 4

Al final solo queda crear o cambiar la variable de entorno. Esto se hace con el comando:
// export con JDK
export JAVA_HOME="/usr/java/jdk<version>"
// export con JRE
export JAVA_HOME="/usr/java/jre<version>"


viernes, 24 de mayo de 2013

Java: Eliminar elementos repetidos en ArrayList

Muchas veces nos es necesario quietar cualquier elemento que este duplicado dentro de un ArrayList<T> de Java. Para realizar tal acción existen colecciones del tipo HashSet<T> que nos permiten agregar todos los elementos del array y nos devuelve una colección de objetos sin duplicados.

Para realizar tal acción simplemente hay que agregar la colección del ArrayList<T> al HashSet<T> y luego regresar la información. Se puede observar en el siguiente código:


En el código anterior hay dos casos, el primero usa un HashSet<T> el cual elimina los duplicados de un array de String pero nos lo devuelve sin ningún orden en particular. En el segundo caso se usa un LinkedHashSet<T> el cual elimina los repetidos de un ArrayList de objetos Datos y mantiene el orden con el que venía. Si se desea que la respuesta este ordenada LinkedHashSet es la solución. 

Es importante que al trabajar con objetos con varios atributos como lo es Datos sobrescribamos sus métodos equals() y hashCode(). Pueden leer sobre esto en el siguiente post.

Al final la respuesta nos quedaría asi:

Cadena2
Cadena3
Cadena4
Cadena1
Info: 1-Nombre1-Empresa1
Info: 2-Nombre2-Empresa2
Info: 3-Nombre3-Empresa3
Info: 4-Nombre4-Empresa4
Info: 5-Nombre5-Empresa5
Info: 1-Nombre2-Empresa2