jueves, octubre 14, 2010

OpenEtna y el driver msm_hw3d 3D

He estado estos dias tratando de migrar a un kernel 2.6.29 el nuevo driver msm_hw3d con algunos resultados...

Tuve que modificar del repositorio git de openetna los archivos



Y todo funciona a medias... el driver necesita 3t tipos de memorias SMI, EBI y RES.... marca un error al montar la memoria EBI... asumo que la colocación de la memoria de la GPU1 es dinamica y debe ser antes de la inicializacion del driver... por que el hw3d toma la memoria EBI del segmento de memoria de la GPU1...

IDEAS

Hacer el direccionamiento EBI estatico aunque solo funcione con mi dispositivo...
Realizar la colocación de la memoria de la GPU1 antes de la inicializacion del driver
Probar deshabilitando el soporte de EBI2
Probar cambiando la memoria EBI1 a EBI2

NOTAS

Como aun soy medio noob en esto del kernel Android tengo que flashear mi telefono cada vez que quiero probar algo... imagino que debe haber una manera de simularlo... pero aun no la descubro...

miércoles, mayo 19, 2010

Consumir WebServices NuSoap desde Java con Axis2

Bueno.... hoy me toco pelear de nuevo contra las malignas fuerzas de los frameworks no estandarizados... el enemigo era NuSoap.

NuSoap es una herramienta que sirve para crear y consumir servicios web desde PHP.... escucharon bien... PHP!!!

Y pues... como era de esperarse hace cosas raras... genera en webservices estilo RPC codificados... y pues... ya desde ahi nuestro buen amigo JAX-WS no funciona... hay que volver al temible JAX-RPC

Yo no le se muy bien al JAX-RPC... he tenido experiencias traumaticas.... nunca funciona... debe tener alguna configuración rara o algo...

Asi que siempre recurro al poderoso Axis2... normalmente puede contra todos esos webservices locos a los que me he tenido que conectar...

Hay que descargar Axis2

Ponerlo en cualquier lado...

Entrar con consola a la carpeta bin y ahi...


  1. mkdir output
  2. ./wsdl2java.sh -uri http://ruta/a/webservice?wsdl -o output/prueba/
  3. cd output/prueba
  4. AXIS2_HOME="/ruta/a/axis2" ant

Nos generara en la carpeta output/prueba/bin/ un jar con el codigo Stub para llamar al webservice...

Desde Netbeans... deben agregar las librerias de Axis2... esas las agregan desde Herramientas->Complementos->Plugins disponibles->Axis2 Support... luego Propiedades->Bibliotecas->Agregar Jar/Carpeta... buscan el jar que generamos... ahi mismo deben entrar a Agregar Biblioteca y buscar Axis 2

Y pues.. el codigo java depende mucho de como se llame el paquete de tu webservice... seria simple como

  1. ws.claseStub servicio = ws.claseStub();
  2. ws.claseStub.Metodo met = new ws.claseStub.metodo();
  3. met.setParametro("Algo");
  4. //La magia para el NuSoap esta aqui!!
  5. servicio._getServiceClient().getOptions().
    setProperty(org.apache.axis2.transport.http.HTTPConstants.CHUNKED,
    Boolean.FALSE);
  6. servicio.metodo(met);

Y asi amigos... nos comunicamos con NuSoap.... el maldito no soporta el tipo de transporte HTTP chunk como un webservice normal... pero tuvieron que pasar varios tcpdumps para llegar a esa conclusión... espero que le quite el dolor de cabeza a alguien


lunes, febrero 01, 2010

JAX-WS 2.2 Web Methods ocultos y polimorfismo

Pues siguiendo con la nueva especificación de los JAX-WS 2.2... vemos que por default todos los metodos declarados dentro de una clase con la anotacion WebService se vuelven publicos, cosa que antes no era asi, antes todos estaban ocultos y solo colocando la anotacion WebMethod se volvian publicos.

Esto me marco error en algunas clases de WebServices donde tenia polimorfismo interno, o metodos que estaban desactivados para el uso publico.

La solucion fue colocar la etiqueta

@WebMethod(exclude=true)

Que excluye a metodo dentro de la definición del webservice.

Esta nueva especificación parece traer algunas mejoras que no he logrado revisar a fondo debido a que es muy nueva y existe poca documentación al respecto, . pero cuando vea algo interesante ya lo veran por aqui...

Netbeans 6.8 Error de JAX-WS 2.2 API Endorsed

Algunos tendran el problema que sus proyectos de Netbeans 6.7 o anteriores con referencias a Webservices, no compilan en el 6.8 esto es por que no se actualiza el proyecto, ya que el 6.8 usa JAX-WS 2.2, y nosotros veniamos usando el 2.1.

Pues bien... Netbeans 6.8 añade a nuestro proyecto en el archivo nbproject/project.properties la linea

endorsed.classpath=

Pero el buen Netbeans no le asigna un valor... su valor correcto seria

endorsed.classpath=${libs.javaee-endorsed-api-6.0.classpath}

Ademas... el Netbeans no le agrega al wsimport (generador de clases del Webservce) la linea que permite el uso de carpetas endorsed. Para hacer esto nos vamos a Proyectos/Web Service Reference/Servicio hacemos click derecho... luego Edit Web Service Attributes... wsimport options... add... y en option escribimos xendorsed y como valor ponemos true... y listo.. ya podemos compilar otra vez..

martes, diciembre 22, 2009

Tomcat no enciende.. error jvm.dll o Procrun

Bueno... hay veces que uno instala Tomcat.. y este no enciende.. este error se me ha aparecido... varias veces que he instalado un servidor windows (maldito windows!!)... pero siempre olvido apuntarlo.. y debo volver a buscar como corregirlo.. :-P.. y es que aun que se ve fácil... pero soy algo olvidadizo...

En fin.. lo unico que deben hacer es descargar el archivo msvcr71

Copiarlo en system32 dentro de tu windows_home... y ya.. a correr Tomcat... me imagino que Tomcat no incluye esta dependencias dentro de las descarga.. por cuestión de licencias..




jueves, diciembre 10, 2009

Google Chrome sobre Gentoo Linux 64... con flash!!!

Pues... ya hace tiempo que no escribía.. pero pues.. que mas da... asi esto de las gelatinas...



Hoy les enseñare como instalar Google Chrome en Gentoo amd64.. aunque funcionaria en teoria para x86 tambien...

Primero que nada... debo decir que esto solo funciona si ya han pasado su peregrinar hacia Gnome 2.28 y Firefox 3.5... con peregrinar me refieron... a la actualizacion del GCC, nss,nspr y pulseauido... si no han hecho esto.. es probable que no funcione.. por que Chrome usa todo esto...

Primero que nada descargamos el famoso deb de prueba.. en su sabor Debian/Ubuntu

http://www.google.com/chrome?hl=es

Ya descargado.. nos procedemos a entrar al .deb pueden hacerlo desde el file-roller (la aplicacion para descomprimir de Gnome, solo basta hacer doble click) o con dpkg.. etc... etc...

file-roller google-chrome-beta_current_amd64.deb

dpkg -X google-chrome-beta_current_amd64.deb .

Una vez ahi.. nos interesa el archivo data.tar.lzma... de nuevo tenemos al file-roller.. haciendo doble click sobre el.. y a tar con

tar xf data.tar.lzma

Bien... ahora tenemos la ruta opt/google/ que hay que mover en /opt/google

$ mv opt/google /opt/

una vez ahi.. entramos a /opt/google/chrome/ y establecemos permisos

$ chown root *
$ chgrp root *
$ chmod 755 google-chrome
$ chmod 755 chrome
$ chmod 4755 chrome-sandbox

Chrome.. utiliza la ruta de Debian/Ubuntu para las librerias nss y nspr... asi que hay que hacer enlaces para que las encuentre... donde el cree que estan..

$ ln -s /usr/lib/nss/libnss3.so /usr/lib/libnss3.so.1d
$ ln -s /usr/lib/nss/libnssutil3.so.12 /usr/lib/libnssutil3.so.1d
$ ln -s /usr/lib/nss/libsmime3.so.12 /usr/lib/libsmime3.so.1d
$ ln -s /usr/lib/nss/libssl3.so.12 /usr/lib/libssl3.so.1d
$ ln -s /usr/lib/nspr/libplds4.so/usr/lib/libplds4.so.0d
$ ln -s /usr/lib/nspr/libplc4.so /usr/lib/libplc4.so.0d
$ ln -s /usr/lib/nspr/libnspr4.so /usr/lib/libnspr4.so.0d

Bien.. ya tenemos instalado google-chrome copiamos el lanzador...

$ cp usr/bin/google-chrome /usr/bin/

Y ahora copiamos los plugins de flash.. java.. etc..

Entramos a nuestro directorio..

cd /home/usuario/.mozilla/plugins/

y creamos los enlaces..

Para flash
ln -s /opt/netscape/plugins/libflashplayer.so libflashplayer.so

Para java
ln -s /usr/share/java-config-2/nsplugin/sun-jdk-1.6-javaplugin.so IcedTeaPlugin.so

Para Moonlight
ln -s /usr/lib64/moon/plugin/libmoonloader.so libmoonloader.so

Para los de Quicktime.. video.. etc.. etc..

cp /usr/lib/mozilla-firefox/plugins/librhythmbox-itms-detection-plugin.* ./
cp /usr/lib/mozilla-firefox/plugins/libtotem-* ./

Y.. listo.. ya solo falta arrancar google chrome.. y probar un video!!! funcionan algunas extensiones, los temas.. y eso si.. corre mas rápido que Firefox.. a mi parecer..

domingo, junio 21, 2009

Dos botones con evento




import javax.swing.*;

import java.awt.*;

import java.awt.event.*;



public class MiVentana extends JFrame {



    JLabel etiqueta;

    JButton boton;

    JButton boton2;

    JTextField caja;

    Papel papel;



    public MiVentana() {

        setTitle("ventanitita");

        setSize(300, 200);

        iniciarComponentes();

    }



    public void iniciarComponentes() {

        getContentPane().setLayout(null);

        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

        etiqueta = new JLabel();

        boton = new JButton();

        boton2 = new JButton();

        caja = new JTextField();

        papel = new Papel();

        papel.setTF(caja);



        etiqueta.setText("Mete un #");

        etiqueta.setFont(new Font("Arial", Font.BOLD, 12));

        getContentPane().add(etiqueta);

        etiqueta.setBounds(20, 20, 100, 20);



        boton.setText("Validar");

        boton2.setText("Mostrar imagen");

        boton.setToolTipText("has click");

        getContentPane().add(boton);

        getContentPane().add(boton2);

        boton.setBounds(20, 120, 100, 20);

        boton2.setBounds(20, 140, 100, 20);

        getContentPane().add(caja);

        caja.setBounds(20, 60, 100, 20);



        boton.addActionListener(

                new ActionListener() {



                    public void actionPerformed(ActionEvent evt) {

                        codigoBoton1(evt);



                    }

                });

        boton2.addActionListener(

                new ActionListener() {



                    public void actionPerformed(ActionEvent evt) {

                        codigoBoton2(evt);

                    }

                });

    }



    public void codigoBoton1(ActionEvent ev) {

        String cad = caja.getText();

        boolean pasa = true;

        for (int i = 0; i < cad.length(); i++) {

            if (!Character. isDigit(cad. charAt( i)) ) {

                pasa = false;

            }

        }

                



        if (pasa) {

            float valor = Float.parseFloat( caja. getText() );

            etiqueta.setText("resultado de " + valor * 10);

        } else {

            etiqueta.setText("ingresa dato validos");

        }



    }

    public void codigoBoton2(ActionEvent ev) {

        getContentPane().add(papel);



        papel.setBounds(120, 60, 100, 100);

    }

    public static void main(String args[]) {

        new MiVentana().setVisible(true);

    }

}



class Papel extends Canvas {



    JTextField tf;



    public void setTF(JTextField tf) {

        this.tf = tf;

    }



    public void paint(Graphics g) {



        g.setColor(Color.yellow);



        g.drawOval(40, 40, 20, 20);

        g.drawOval(45, 40, 10, 20);

        g.drawOval(40, 45, 20, 10);



        g.drawRect(0, 0, 99, 99);



    }

}

jueves, febrero 26, 2009

Desinstalar Substance en Netbeans 6.5



Substance es un look & feel para las aplicaciones java... realmente son muy buenos.. pero te hacen cambiar el estilo de programacion para que todo componente swing se cree en un SwingUtilities.invoke() o en un invokeAndWait()... o dentro de un evento... (asi es como deberia hacerse.. pero siempre hago caso omiso de esas cosas...)


En fin... hay un plugin para netbeans... para cambiar la apariencia.. sin embargo.. perdio mantenimiento... por un corto tiempo.. por lo que no es compatible.. al 100% con la version 6.5..


https://substance-netbeans.dev.java.net/

Sin embargo no funciona... a veces hasta traba el netbeans... por lo que intente desactivarlo... y pues.. no se puede... jeje... traba el sistema de paquetes.. y no deja instalar cosas nuevas.. ni desinstalarlas... ademas de trabar el diseñador de mildets..

En fin.. lo tuve que deshabilitar a la antigua.. me voy a..

~/.netbeans/6.5/config/Modules/org-jvnet-substance-netbeans.xml

Y cambiamos la linea

  1. <param name="enabled">true</param>



a..

  1. <param name="enabled">false</param>



Reiniciamos Netbeans.. y listo... ya no hay mas problemas raros con substance...

domingo, febrero 15, 2009

REALTECK FALSA!!!! RTL8139

Bueno hoy me pidieron arreglar una computadora... al sujeto este... le dijeron..

"Es que para se conecte a internet necesita una tarjeta de red..." ... y pues la compro... siendo que su maquina ya tenia una... jeje en fin... una persona me pidio una tarjeta de red... por que en su maquina pues efectivamente no tenia.. asi que... le vendi la otra... obviamente diciendole al primer sujeto.. que el no la necesitaba.. (aun seguia argumentando que si... aun despues que le enseñe el otro slot...)

La bronca fue que el driver.. no lo tenia.. lo mas facil.. era sacar los drivers del WINDOWS/inf.. pero esa maquina ni siquiera tenia instalado el driver.. entonces... revise en internet... y en el poderoso EVEREST.. y dije.. ah!!! tarjeta de real.. que bien!!... el driver... no funcionaba.. extraño..

El id del hardware es

PCI\VEN_1904&DEV_8139&SUBSYS_00000000&REV_01\3&267A616A&0&40

1904.... ese no es de Realtek.... entonces??? pues navegando por internet.. encontre la pagina de un sujeto.. que lo descubrio... tuvo que pagar una membresia en driverguide.. y poder asi.. bajar su driver...

http://elt0n.wordpress.com/2006/09/24/realtek-8139d-falsa/

Encontraran el driver hasta abajo...

sábado, diciembre 06, 2008

Reinicio

Bueno vamos a darle un poco de vida otra vez a este blog y es que como sabran ahora que me han podido costear un smartphone en la empresa pues puedo aprovecharlo al maximo jeje aunque no muy provechosamente bueno los dejo este solo es un post de prueba para ver como se comporta desde la funcion mail to blogger

sábado, junio 21, 2008

Hoy

Me he puezto a penzar que ha zido de mi vida eztoz ultimoz añoz aun no cumplo loz 21 y ya voy a tener auto propio.. viejito.. pero auto propio... pero realmente ziempre me he zentido la zombra de alguien... hay mucha maz gente... que podria derrotarme tan facil... o al menoz ezo creo...

Conoci hace un tiempo a un tal Plata... ez una perzona muy brillante... lo reconozco.. dejo la ezcuela para continuar zu educacion... y ahora zabe maz que algunoz que ze dicen ingenieroz... jaja pero no tiene titulo ni nada por el eztilo... contraztante... pero ez cierto... ziempre me he zentido que eztoy un pazo antez de el... o al menoz ezo creia..

El Rayaz (mi jefe) dice.. que zi noz la pazamoz viendo a la competencia... vamoz a ver mil razonez por laz cualez rendirnoz... pero zi noz concentramoz en nozotroz mizmoz.. podremoz zalir adelante... e incluzo zobrepazar a la competencia... tal vez Plata tenga 3 añoz maz de experiencia que yo... pero en ezte año que hui de la ezcuela... he dezarrollado ziztemaz de mizion critica... conectado con laz principalez telefonicaz del paiz... y el legendario ziztema interbancario.. no ze que haya hecho el... quiza cozaz mejore.. o peorez.. pero yo ziento que voy por buen camino... realmente mi meta ya no ez alcanzarlo... a eze tipo de perzonaz puedez aprenderle mucho... pero... eze no ez el chizte.. el conocimiento aprendido por uno mizmo... vale mucho maz... que el conocimiento obtenido por un maeztro... yo no tengo maeztroz... no digo que no haga falta un mentor... hace falta... ziempre lo hara... pero prefiero conzeguir mi propio eztilo y no la copia de alguien maz...

martes, junio 03, 2008

Los errores raros de Hibernate


Hace algun tiempo.... cuando mi disco duro era joven.. y sus dominios no llegaban a cubrir mas de 10GB... descubri Hibernate... gracias al maestro Suly... les dire... que es uno de los mas grandes guerreros que haya visto...

Hibernate era un ataque que hacia que cualquier hechizo se volviera persistente... es decir.. no teniamos que conjurarlo una y otra vez... con que una sola vez lo hicieramos bastaba...

------------------------------------------------------------------

Jaja hace mucho que no escribia algo asi...

Bueno Hibernate tiene varios errores medio raros... uno de los cuales es que puede faltar uno o varios jar.. hay que estar atentos a los que nos dicen los Logs... un

  1. Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory


puede significar que nos falta el archivo log4j.jar que viene dentro de las librerias de hibernate... o puede hacer algo mas complejo.. en su caso nos falta las lineas

  1. org.slf4j.LoggerFactory importación;
  2. import org.slf4j.Logger; org.slf4j.Logger importación;
  3. ..
  4. private Logger log = LoggerFactory. getLogger (Application. class ); privado Logger log = LoggerFactory. getLogger (Application. clase);
  5. ..

En donde invocan al persistenceManager, a parte de esto.... podemos encontrar el timeout de MySQL... que cuando la conexion persistente esta inactiva por mas de 8 horas MySQL cierra la conexion.... para eso en la entrada anterior en el area de cofiguracion de hibernate incluimos las lineas de un tal c3po.... que nos ayuda a corregir este problema...

Espero que esto te haya ayudado... y si lo resolviste de otra manera..o aun no puedes.. me gustaria.. que me lo comentaras... adios

miércoles, mayo 28, 2008

Error en Netbeans con WebServices



Los Web Services son una herramienta fundamental en el desarrollo de aplicaciones SOA, pues le da a terceros la posibilidad de llamar a alguna parte de nuestro sistema.

En Netbeans es facil crear un nuevo WebService... sin embargo, a raiz de la actualizacion de un modulo... no estan funcionando bien, al menos a mi, no me generaba el archivo jaxws-build.xml ni me lo incluia en el build.xml.

Bueno lo que tuve que hacer fue escribir estos archivos a mano.... pero como la neta no se nada de ANT... ( debo de empezar a meterme a Eclipse..) pues me base en otros archivos que ya tenia... asi que su archivo debe quedar de la siguiente manera

jaxws-build.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns:xalan="http://xml.apache.org/xslt"
  3. xmlns:webproject2="http://www.netbeans.org/ns/web-project/2"
  4. xmlns:jaxws="http://www.netbeans.org/ns/jax-ws/1">
  5. <target name="wsgen-init" depends="init, -do-compile">
  6. <mkdir dir="${build.generated.dir}/wsgen/service"/>
  7. <mkdir dir="${build.generated.dir}/wsgen/service/resources/"/>
  8. <mkdir dir="${build.generated.dir}/wsgen/binaries"/>
  9. <mkdir dir="${build.classes.dir}"/>
  10. <taskdef name="wsgen" classname="com.sun.tools.ws.ant.WsGen">
  11. <classpath
  12. path="${java.home}/../lib/tools.jar:${build.classes.dir}:${j2ee.platform.wsgen.classpath}:${javac.classpath}"/>
  13. </taskdef>
  14. </target>
  15. <target name="wsgen-nombreDelWebService" depends="wsgen-init">
  16. <wsgen fork="true" xendorsed="true"
  17. sourcedestdir="${build.generated.dir}/wsgen/service"
  18. resourcedestdir="${build.generated.dir}/wsgen/service/resources/"
  19. destdir="${build.generated.dir}/wsgen/binaries" keep="true" genwsdl="true"
  20. sei="com.core.web">
  21. <classpath
  22. path="${java.home}/../lib/tools.jar:${build.classes.dir}:${j2ee.platform.wsgen.classpath}:${javac.classpath}"/>
  23. <jvmarg value="-Djava.endorsed.dirs=${jaxws.endorsed.dir}"/>
  24. </wsgen>
  25. </target>
  26. <target name="wsgen-service-compile" depends="wsgen-nombreDelWebService">
  27. <webproject2:javac srcdir="${build.generated.dir}/wsgen/service"
  28. classpath="${j2ee.platform.wsimport.classpath}:${javac.classpath}"
  29. destdir="${build.classes.dir}"/>
  30. </target>
  31. </project>

Luego tenemos que poner este otro codigo en el archivo build.xml, escribo las lineas de arriba y de abajo como referencia, va casi cuando inicia el documento

  1. <project ...
  2. <import file="jaxws-build.xml"/>
  3. <import file="ant-deploy.xml"/>


Esto va en compilation section, en mi caso solo decia -post-compile y no dependia de wsgen-service-compile

  1. <target depends="wsgen-service-compile" name="-post-compile">
  2. <!-- Empty placeholder for easier customization. -->
  3. <!-- You can override this target in the ../build.xml file. -->
  4. </target>


Espero que le haya servido a alguien, por que realmente esto me atraso unos dias...

lunes, mayo 19, 2008

JSF + Hibernate + JPA + Netbeans + ZK (Configuracion)

Bueno ya despues de mucho... publicare la primera parte completa del minitutorial de como integrar todas las tecnologias antes mencionadas.... primero vamos a ver la configuracion.... y despues explicare el funcionamiento de cada uno...

Bueno primero crearemos las librerias de NetBeans nos vamos a Tools-> Libraries y seleccionamos New, escribimos Hibernate JPA, y seleccionamos Add JAR/Folder, ahora buscamos todos los JAR ok? dije JAR!!!! no folders... que les pedi en la parte pasada del tutorial... ahora bien... hacemos lo mismo para ZK y ZK JSF, solo queremos los JAR que estan dentro de la carpeta libs para ZK y ZK JSF.

Bueno.. creemos una base de datos sencilla con dos tablas... tiene MySQL cierto??, si no busquen como instalarlo para su propia distribucion de linux... por que tienen linux verdad??? jejeje bueno.. como sea... instalen MySQL... para este tutorial... no entrare en detalles de como lo instalamos... y asumire que son expertos en la materia... despues posteare algo sobre MySQL...

entramos a MySQL, y crearemos una pequeña base de datos de escuelas...

Para crear una base de datos
CREATE DATABASE escuela;

Para crear las tablas
CREATE TABLE instituto (id_inst int primary key auto_increment, nombre varchar(20), direccion varchar(20)) ENGINE=InnoDB;
CREATE TABLE profesor (id_prof int primary key auto_increment, nombre varchar(20),id_inst int) ENGINE=InnoDB;

Para crear la relacion
Todo es una sola linea..
ALTER TABLE profesor
ADD CONSTRAINT profesor_instituto
FOREIGN KEY (id_inst)
REFERENCES instituto (id_inst)
ON DELETE RESTRICT
ON UPDATE CASCADE;


Ahora nos vamos a File->New Proyect y seleccionamos Web | Web Application, le ponemos escuela al proyecto, seleccionamos tomcat como servidor y seleccionamos JavaServer Faces.




En source proyects creamos un nuevo paquete y le llamamos DataBase, hacemos clic derecho seleccionamos New y despues DataBase, despues seleccionamos New Other para elegir Persistence | Entity Classes from Database, en DataSource seleccionamos New DataSource, ahi seleccionamos DataBase Connection-> new database connection, nos aparecera un dialogo para conectarnos con MySQL seleccionamos MySQL connector, el driver nos vale...pero en DataBase URL escribimos jdbc:mysql://127.0.0.1/escuela, pongan 127.0.0.1 por que luego en unas distros no funciona el localhost por que traen una configuracion rara... y no me voy a poner a decir como quitarselas ahorita.. jeje







Debe aparecernos que la conexion fue existosa.. si no... algo escribiste mal.. o no tienes levantado mysql... /etc/init.d/mysql start lo levanta.. :D

Seleccionamos las dos clases que antes hemos creado... Instituto aparecera de manera rara por que fue incluida ya que hay una clave foranea hacia ella.

Ahora hay que crear una unidad persistente, seleccionamos CREATE PERSISTENCE UNIT, nos creare una unidad persistente solo falta seleccionar Hibernate como nuestro manejador,


De todos modos les dejo mi persistence.xml


<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xsi="http://www.w3.org/2001/XMLSchema-instance" schemalocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">

<persistence-unit name="tiempoairePU" type="RESOURCE_LOCAL">

<provider>org.hibernate.ejb.HibernatePersistence</provider>

<properties>

<property name="hibernate.connection.username" value="usuario">

<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver">

<property name="hibernate.connection.password" value="password">

<property name="hibernate.connection.url" value="jdbc:mysql://127.0.0.1/escuela">

<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect">

<property name="hibernate.cache.provider_class" value="org.hibernate.cache.NoCacheProvider">

<property name="hibernate.c3p0.acquire_increment" value="3">

<property name="hibernate.c3p0.idle_test_period" value="14400">

<property name="hibernate.c3p0.timeout" value="25200">

<property name="hibernate.c3p0.max_size" value="15">

<property name="hibernate.c3p0.min_size" value="3">

<property name="hibernate.c3p0.max_statements" value="0">

<property name="hibernate.c3p0.preferredTestQuery" value="select 1;">

</property>

</property>

</property>



Automaticamente tenemos nuestras clases mapeadas... si nos marca error tenemos que entrar a las propiedades del proyecto, clic derecho Properties, Libraries Add Library y seleccionamos HibernateJPA la libreria que antes creamos, junto con ZK y ZK JSF.

AUTONUMERICO HIBERNATE

Aqui hay un error con la generacion de NetBeans puesto que como usamos autonumerico... necesitamos agregar unas lineas para que nos respeten el autonumerico, si todo salio bien deberia estar en Instituto .java despues de la linea @Id debemos escribir @GeneratedValue, y debemos importar javax.persistence.GeneratedValue; en Instituo y Profesor, ahora no tenemos problemas...

Bien ahora configuramos NetBeans para usar ZK en Configuration Files nos vamos a Web.xml y escrimos estas lineas en el apartado donde veas los listener




<listener>

<description>Para limpiar la basura de las sesiones</description>

<display-name>ZK Session Cleaner</display-name>

<listener-class>org.zkoss.zk.ui.http.HttpSessionListener</listener-class></listener>



Y en donde veas las tags de servlet escribe estas.. (de preferencia antes de las de JSF)


<servlet>

<description>ZK cargador para pagimas ZUML</description>

<servlet-name>zkLoader</servlet-name>

<servlet-class>org.zkoss.zk.ui.http.DHtmlLayoutServlet</servlet-class>

<init-param>

<param-name>update-uri</param-name>

<param-value>/zkau</param-value>

</init-param>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet>

<description>Engine para la actualizacion asincrona</description>

<servlet-name>auEngine</servlet-name>

<servlet-class>org.zkoss.zk.au.http.DHtmlUpdateServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>zkLoader</servlet-name>

<url-pattern>*.zul</url-pattern>

</servlet-mapping>

<servlet-mapping>

<servlet-name>zkLoader</servlet-name>

<url-pattern>*.zhtml</url-pattern>

</servlet-mapping>


Ahora ya estamos listos para usar ZK, tenemos que entrar en nuestro archivo WelcomeJSF.jsp

Agregamos nuestra TAG


<%@taglib prefix="z" uri="http://www.zkoss.org/jsf/zul" %>


esto nos permite usar ZK en JSF... y va donde van todas las demas tags casi hasta el principio

<z:page>

<z:window title="Hola" border="normal">

Hola

</z:window>

</z:page>




Bueno ya esta funcionando despues veremos acerca del binding

viernes, mayo 16, 2008

Hola

Bueno pues ya le voy a dedica un poco mas de tiempo a esto... pues me he topado con muchos problemas a la hora de aprender.. no hay muchos tutoriales buenos... y menos en español... a eso sumenle... que luego ya no los vuelvo a encontrar y no me acuerdo.. asi que hare una referencia rapida de lo que vaya encontrando.. ok?... por cierto... Netbeans y ZK... hacen una maravilla.. jeje.. nada mas que los dos son demasiado lentos... hay que aumentar la memoria RAM del servidor y la maquina de desarrollo para que funcionen bien...

miércoles, marzo 05, 2008

JSF + Hibernate + JPA + Netbeans + ZK

Hoy hablare de como integrar todas estas tecnologias, ya que no encontre nada al respecto...:( solo encontre partes de todo... asi que decidi integrarlas en este minitutorial

Ver video

Primero hablaremos sobre las tecnologias..

JSF, es un framework de java para desarrollar tipo MVC, modelo, vista controlador, donde separamos la logica de negocios del interfaz grafico, puede usarse este o Struts, yo me acomodo mas con JSF ya que utiliza un modelo tipo Swing... y llevo un rato ya desarrollando con Swing

Hibernate es un motor de persistencia que nos mapea la base de datos en esquema orientado a objetos, es decir.. en vez de usar las conexiones JDBC, a parte reliza una conexion a la base de datos persistente por lo que aumenta el rendimiento de la misma

JPA (Java Persistent API) creo?... es un estandard para usar un motor de persistencia... hace mas rapido el desarrollo que con hibernate puro... por que hibernate necesita configuraciones en XML... y el JPA no...

NetBeans es un IDE monstruoso.. gasta casi 512 GB de ram para funcionar... pero tiene varios asistentes que nos haran el desarrollo mas rapido..

ZK es un framework de AJAX ya he hablado antes de el... nos hara la interfaz mas rica... y con mas funciones... que si solo usaramos JSF

Primero dire que necesitamos y en la siguiente entrada... les dire como configurarlo...

http://www.hibernate.org/6.html

Bajamos el CORE y el ENTITY MANAGER y de ellos necesitamos... asi que pongalos en otra carpeta..

Del Hibernate EntityManager:
o hibernate-entitymanager.jar
o lib/hibernate-annotations.jar
o lib/hibernate-commons-annotations.jar
o lib/jboss-archive-browsing.jar
o lib/jta.jar
Del Hibernate Core
o hibernate3.jar
o lib/antlr-2.7.6.jar
o lib/asm-attrs.jar
o lib/asm.jar
o lib/c3p0-0.9.1.jar
o lib/cglib-2.1.3.jar
o lib/commons-collections-2.1.1.jar
o lib/commons-logging-1.0.4.jar
o lib/concurrent-1.3.2.jar
o lib/dom4j-1.6.1.jar
o lib/ehcache-1.2.3.jar
o lib/javassist.jar
o lib/log4j-1.2.11.jar
Bajamos ZK
http://prdownloads.sourceforge.net/zk1/zk-bin-3.0.3.tar.gz?download
Bajamos las librerias de ZK para JSF
http://downloads.sourceforge.net/zk1/zk-JSFComps-bin-2.0.0.zip

Netbeans ya tiene integrado el JSF y JPA asi que ya con esto.. tenemos todo listo para empezar a configurar..pero eso sera... en la otra entrada

jueves, febrero 21, 2008

XML contrataca!!

Bueno... para recordar... hace tiempo tuve un problema pasando un XML
por post... y leyendo la respuesta tambien por Post... bien.. ahora
explicare que hize...



Primero dire que java tiene dos
Decodificadores de XML el DocumentBuilder y el SAXParser... aqui solo
hablare de el primero... a mi parecer es mas facil de usar...



Primero imaginemos que recibiremos un XML asi

<gente>

   
<persona nombre="Danyel">


   
    <materia nombre="BD"/>


   
    <materia nombre="SO"/>


   
</persona>


</gente>



Lo primero creo el XML a mano... como no es muy complejo en mi caso..
no hizo falta utilizar los codificadores de java..



String xml = ""



Llamo a la funcion



builder =
javax.xml.parsers.DocumentBuilderFactory.newInstance();


doc =
builder.newDocumentBuilder();


d= doc.parse(xmlPOSTIS(s));



Despues lo mando a la URL



public org.xml.sax.InputSource
xmlPOSTIS(String s) {


   
org.xml.sax.InputSource is;


   
//Se conecta


   
try {


   
    java.net.URL url = new
java.net.URL("https://paginasegura.com");


   
    java.net.HttpURLConnection
httpurl = (java.net.HttpURLConnection)url.openConnection();


   
    //Abre las entradas y las salidas


   
    httpurl.setDoInput(true);


   
    httpurl.setDoOutput(true);


   
    java.io.DataOutputStream out =
new java.io.DataOutputStream(httpurl.getOutputStream());


   
    //Escribe en el stream de salida
un docuemtno XML


   
    for (int i=0;i<s.length();i++) {


   
       
out.write(s.charAt(i));


   
    }


   
    //Convierte el InputSream de
entrada en un Parser


   
    is = new
org.xml.sax.InputSource(httpurl.getInputStream());


   
    return is;


   
}catch(Exception e) {


   
    System.out.println(e.getMessage());


   
    return null;


    }

}



Ahora ya obteniendo el inputSource ya procedo a decodificarlo de la
siguiente manera



java.util.LinkedList cat = new
java.util.LinkedList();


//Son todos los elementos con el
tag error es decir


org.w3c.dom.NodeList lista =
d.getElementsByTagName("persona");


for (int
i=0;i<lista.getLength();i++) {

    String aux =
lista.item(i).getAttributes().getNamedItem("category").getNodeValue();

    for (int j = 0; j <
lista.item(i).getChildNodes().getLength(); j++) {

       
lista.item(i).getChildNodes().item(j);

    }

}


Bueno espero que le haya servido a mas de uno... si tienes cualquier duda o comentario pregunta!! :D

miércoles, enero 30, 2008

Gentoo en Aspire 4520




Bien pues despues de ahorrar un dinero.. me he comprado una laptop una Acer Aspire... realmente me latio por que tiene AMD Turion 64 bits, una tarjeta NVidia y 1GB de RAM... ahh.. la tarjeta es dedicada... jeje ademas.. el diseño esta muy bueno...

Pero en fin... despues de respaldar Windows Vista.. en discos... me di cuenta que los discos no funcionaban... jeje.. asi que al final... jalaron por obra del espiritu santo.. pero en fin... reparticionando con el todo poderoso Hirens.. baje Gentoo AMD64 Minimal.. (todo un disco para 54MB) lo meti... resete mi maquina.. y hasta ahi todo bien... los primeros pasos sin problemas.. reparticiono.. con fdisk... bajo el stage3... y ohhh sorpresa la maquina no detecto el ethernet.. entonces bajo todo en una memoria y lo copio... me tarde un ratote... despues... añado las variables USE... CFLAGS... y todo eso que va en el make.. genero el kernel... instalo el grub... reinicio.. y.... no entra a Gentoo... ahh es un disco SATA... pues solo me falta doscsi... al fin que compile todos los drivers de SATA en el kernel... pero... aun asi no funciona... :S demonios... que ocurre?? compilo un kernel viejo... 2.6.16 y funciona!!! pero este Kernel no trae mi driver del Ethernet.. que por cierto se llama forcedeth bueno... ya valio... despues de compilar el kernel.. muchas... muchas veces... me doy por vencido...veo que el 25 de enero salio el kernel 2.6.24.. lo compilo.. creyendo que funcionara... y ohhhhh lo detecta... aunque con otro driver... por que deberia ser el sata_nv pero al fin fue sata_hci.. creo?

El inalambrico... es Atheros... y como me imagine... no funciona con madwifi.. asi que hize el parche con ndiswrapper.. con el driver de XP de 64 bits... y a veces jala.. y a veces no... aun no se por que... ya solo espero por la proxima version de madwifi... jeje

Las bocinas... tampoco vienen ni en el portage.... ni en el kernel... para activarlas.. desactive el soporte para ALSA en el kernel.. y baje de la pagina de Realteck el driver snd_hda_intel , tuve que compilarlo a mano... pero estuvo bien... costo trabajo por que no desactive el soporte en el kernel y me causaba conflicto... pero al fin funciono... los graficos funcionaron a la primera con nvidia-drivers.. el de la camara web es el generico uvcvideo y... ya.. creo que eso fue todo.... tengo dos firefox.. uno de 64 y otro de 32... mmmm y el compiz funciona perfecto... jeje bueno.. espero que esto le haya servido a alguien en su cruzada

lunes, enero 14, 2008

EL hechizo ZK



Bueno... ya dominamos el bluetooth de la blackberry y de la maquina con J2SE gracias a la magia de Avetana... falta... lo de la circuiteria... y el serial de java.. lo que realmente es lo interesante del asunto.. pero en fin... tendra que ser despues... ahora estamos apurados con un trabajo tenemos que entregar un proyecto... segun confidencial... el 30 de enero.. jeje.. y aun faltan 3 modulos por probar... pero tengo fe en que se lograra... en fin... me toca contribuir al mundo y esta vez lo hare hablando del Framework ZK de Java...

Este framework... ocupa el motor de reenderizado de Geeko en base a componentes Xul... para crear paginas web con tecnologia Ajax, bueno... esa madre de Ajax son una union de una serie de tecnologías para recargar partes de las paginas en lugar de las paginas completas.. esto... hace a una pagina mas atractiva.. pero también... consume mas recursos del lado del cliente como del servidor... doble filo... pero en fin... a la batalla!!!

Podemos descargar las librerias de ZK de SourceForge...

Y despues las copiamos en las librerias de nuestro servidor Web como Tomcat... si mas no recuerdo las librerias de Tomcat se llaman simplemente lib... y estan en el directorio base de tomcat..

Ahora bien... si quieren ahorrar tiempos... podemos usar el todopoderoso NetBeans... creamos unas nuevas librerias... en Tools ->Libraries y ahi añadimos todos los Jar que encontremoe en las librerias de ZK... ya con eso... podemos crear nuestro primer archivo index.zul... en.. File->New File, despues seleccionas Other... empty file.. y lo renombras como index.zul... hay podemos escribir nuestro primer script... Les dejo un tutorial lleno de Scripts por si alguien quiere practicar..

La magia de ZK

viernes, enero 04, 2008

Retomando

Bueno hace como un mes que no escribo nada.. y es que... he estado algo ocupando desarrollando una pagina con Ajax.... obvio no desde cero... sino con el framework de ZK por si le quieren echar una miradita... despues les contare sobre ello... realmente es interesante todo esto del Web 2.0

En fin... estoy volviendo a retomar un antiguo proyecto que tenia en el cual deseo crear todo un sistema hogareño inteligente... y el primer paso para esto es crear un sistema de luces controlado por el celular.. pero para esto necesitaba...

Aprender sobre la tecnologia Bluetooth
Aprender sobre J2ME y el Bluetooth
Aprender sobre J2SE y el Bluetooth
Aprender sobre los puertos seriales de java

La circuiteria es otro asunto... que ya esta mas que tratado... solo falta afinar ajustes en el software... y es que... habia cosas que no quedaban muy bien... jeje como el J2SE con Bluetooth pero gracias a un compañero de batalla... espero que quede solucionado para este mes... ya les contare sobre como van las cosas despues