Intentando mejorar

     
Todo | Linux | General | Java
 
Mysaifu : J2SE en Pocket PC

Las navidades pasadas me relagaron una pda, una Acer N30 con Windows Mobile 2003. Estaba entusiamado pensando que podría programar para estos pequeños aparatos en Java, pero mi sorpresa fue mayúscula al comprobar que no llevaba ni siguiera una máquina virtual de java instalada

Eso me pasa por no informarme bien antes de comprar las cosas. Empecé a buscar en Internet y al poco descubrí, que PersonalJava, que tanta ilusión me hacía, estaba "Muerto" por parte de Sun.

Empecé a buscar alternativas. Me descargué Jeode con el Emule, porque no lo pude encontrar en su web. Está bien pero está basado en el JDK 1.1.X. Pero bueno, pensé algo podré hacer. Después seguí buscando y vi que para las pdas si pensaba a utilizar J2ME, CDC. No está mal, pero yo quería algo más. Quería poder ejecutar HSQLDB, Swing y otras cosas. Empecé a mirarme otras alternativas, como python o ruby. Por cierto Python 2.3.4 es operativo en PocketPC.

Anoche, en un weblog sobre Java en las PDAS, http://www.vikdavid.com/mobile/, encontré una referencia a Mysaifun, http://www2s.biglobe.ne.jp/~dat/java/project/jvm/index_en.html, una máquina virtual que pretende implementar J2SE, sí habeis leído bien. Estaba en una simple versión 0.1.7, así que pensé estará muy verde, no funcionará nada, será un prototipo,... Sin embargo mi sorpresa ha sido grata. Es capaz de ejecutar código Swing, un JFrame con varios controles. También están accesible java.io. Puede procesar un fichero de texto con BufferedReader. En definitiva me quito el sombrero. Además es libre y gratis. Estoy deseando probar JDBC, Sockets, tratamiento de XML,groovy

Está basada en Gnu classpath, de hecho viene con rt.jar

Muchas veces se ha debatido aquí y en otros sitios la necesidad de que Sun hiciera libre el código de la máquina Virtual. Yo creo en los principios por los que lucha Richard Stallman. Gracias a una librería libre, se ha podido crear este software.

@ 07:38 AM EST [ Comments [2] ]
 
 
 
 
Depurar un applet desde Eclipse

Bueno, no se si alguien ha tenido esta necesidad o la tendrá, pero yo he tenido que hacerlo recientemente y aquí está descrito brevemente el proceso de como hacerlo.

La información la he obtenido del la página http://www.jroller.com/page/gursesl/print/remote_application_debugging_with_weblogic

1. Configurar el plug-in de java para realizar debug :

En el panel de control -> Java Plug-in, poner los siguientes parámetros del runtime de java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000

2. Eclipse

Run -> Debug...

Crear un perfil Remote Java Application.

Seleccionar el proyecto que contiene los fuentes para la depuración y el puerto 8000 que es el que hemos seleccionado en el java plug-in.

Bueno, espero que cuando lo necesiteis no tengais que perder una mañana para ver como se hace.
@ 04:47 AM EST [ Comments [0] ]
 
 
 
 
Nos vemos en el congreso

Ya sólo falta un día para que empieze el congreso de JavaHispano. Logré convencer a mi jefe, y ahí estaré. Hacía un año que lo estaba esperando, pues el año pasado no pude asistir.

Espero ver a toda la gente que sigo por los blogs y compartir todo lo que pueda.

Hasta mañana

@ 04:14 AM EST [ Comments [0] ]
 
 
 
 
Tomcat : ? en lugar de caracteres especiales (ñs, vocales acentuadas...) en Linux
Al utilizar tomcat, me encuentro con que aparecen ? en lugar de los caracteres acentuados, ñs ... Nosotros mantenemos la web de un cliente hospedada en un proveedor (con Debian). Al ponerla en marcha, hace aproximadamente un año, nos encontramos con que en lugar de aparecer las vocales acentuadas y las ñs aparecía el carácter ?. Tras investigar por internet, no dí con la solución.

Me puse en contacto con el servicio técnico del proveedor, que resolvió el problema, pero NO me quiso decir como lo habían resuelto.

El otro día navegando, encontré la solución :

Lo primero que debemos hacer es asegurarnos que en el fichero de configuracion de locales (/etc/locale.gen) estan definidos los locales :

en_US ISO-8859-1

es_ES ISO-8859-1

es_ES.UTF-8 UTF-8

es_ES.UTF-8@euro UTF-8

es_ES@euro ISO-8859-15

Nota : Si no tenemos instalados los locales, podemos instalar el paquete locales

En el fichero que utilizamos para arrancar tomcat, asegurarnos que tenemos definido export LANG=es_ES ISO-8859-1

@ 02:57 AM EST [ Comments [1] ]
 
 
 
 
Paginacion de resultados en MSSQL
Como mi compañero de trabajo esta de baja, estoy preparando un servicio en Delphi que devuelve una serie de resultados paginados. Estaba tan acostumbrado a la paginacion con Hibernate que no sabía como hacerlo. Googleando, he encontrado una página de un brasileño, que se habia encontrado con el mismo problema y lo ha resuelto de la forma que describo a continuación. He incluido este en el blog por si alguien se encuentra con el mismo problema.


SELECT *
FROM (
SELECT TOP $numero_resultados *, $columna_orden AS Ordenar
FROM (SELECT TOP ($desde + $numero_resultados) *
FROM $tabla
WHERE $condicion
ORDER BY $columna_orden ASC) x
ORDER BY x.$columna_orden DESC) t
ORDER BY t.Ordenar


$desde : Desde el resultado que queremos
$numero_resultados : numero de elementos por página
$columna_orden : Columna(s) en base al cual estan ordenados los datos

Si deseamos obtener los resultados desde el 20 al 30, entonces numero_resultados = 10 y desde = 20
3 selects :
TERCERO : Selecciona desde el primer elemento hasta el ultimo elemento deseado por nosotros ('hasta') (con orden ASCEDENTE).

SEGUNDO : Sobre este resultado, invierte el orden y toma los 'numeroResultados' primeros

PRIMERO : Vuelve a ordenar el resultado por el orden que nos interesa
@ 03:27 AM EDT [ Comments [1] ]
 
 
 
 
Utilizar en tomcat certificados SSL generados por una entidad autorizada

¿ Como cargar en el fichero .keystore de Java certificados generados por una entidad autorizada cuya solicitud se ha hecho con openssl ?

Hasta ahora estabamos utilizando apache + mod_ssl + tomcat. Ahora queremos utilizar los certificados que ya tenemos directamente desde tomcat. Intentamos utilizarlos directamente pero no había manera, ya que si bien los importaba, cuando ejecutabamos tomcat nos daba el error que escribo a continuación y no arrancaba.

javax.net.ssl.SSLException: No available certificate corresponds to the SSL cipher suites which are enabled.

Tras mirar por la red, descubrí la forma de hacerlo. Primero, exportar los certificados mediante openssl a PCKS12 y a continuación importar el PCKS12 desde keytool GUI.

Partimos de los siguientes ficheros con la información del certificado :

certificado.crt (.cer)

certificado.key

Los queremos cargar en un keystore para utilizar tales certificados desde tomcat

a) Exportar el certificado obtenido mediante openssl a PCKS12

openssl pkcs12 -export -out keystore.pkcs12 -in www.crt -inkey www.key

b) Utilizando KeyTool GUI :

KeyToolGUI necesita bouncy castle provider 1.19. que puede descargarse de aqui

1. crear un nuevo keystore

2. importar un key pair, entonces seleccionaremos el fichero keystore.pkcs12 obtenido en el paso anterior.

3. Guardar el keystore.

c) Ya podemos utilizar el keystore desde tomcat.

@ 10:35 AM EDT [ Comments [0] ]
 
 
 
 
Struts menu
Estos últimos días he estado modificando el sistema de menús en la aplicación web que estamos desarrollando, ya hablaré sobre las tecnologías utilizadas en otro post. Necesitaba que los menús de la misma se despleguesan en función de los permisos de los usuarios. Al buscar por internet me encontré con struts menu. A pesar de que la documentación de la web es bastante buena, he querido poner un post con un resumen de los que me he encontrado.

Struts menu

Se trata de una biblioteca de tags que permite crear menús en las páginas web a partir de su declaración en XML. Los dos aspectos que más me han gustado de este sistema son la integración con el sistema de seguridad gestionado por los contenedores web y la posibilidad de personalizar la presentación de los menús utilizando VelocityMenuDisplayer, que se basa en una plantilla Velocity para presentar el menú.

Personalización de los menús con Velocity. Permite la personalización en la presentación de los menús utilizando el sistema de plantillas Velocity. De esta forma podemos dar el aspecto que deseemos a nuestros menús.

Seguridad. Está totalmente integrado con el sistema de autenticación/autorización en el contenedor web. De esta forma podemos indicar los roles a los que se les permite el acceso a las opciones del menú. El sistema no presentará las opciones del menú a las que un usuario no tenga acceso.

¿Cómo se definen los menús?

Los menús se definen en un fichero XML. El formato del fichero es el siguiente

En la sección Displayers, se incluyen los renders que podemos utilizar para presentar los menús en la página web. De los múltiples displayers que hay destacamos el VelocityMenuDisplayer ya que permite personalizar completamente la presentación de los menús.

En la sección Menus, es donde definimos los menús. Crearemos un elemento Menu por cada menú que deseemos crear. Cada menú podrá tener una serie de opciones, los Item.

Atributos de Menu y de Item

action : Nombre del action de struts que queremos llamar al pulsar sobre la opción location : URL que deseamos abrir al pulsar sobre la opción permissions : Nombre de los roles que tienen acceso al menú.

¿Cómo lo integramos en nuestras aplicaciones?

1) Dependencias

struts-menu.tld en WEB-INF Se trata de la biblioteca de tags de struts menu.

struts-menu.jar en WEB-INF/lib

standard.jar en WEB-INF/lib

Si utilizamos el Displayer Velocity, además necesitamos :

velocity.jar en WEB-INF/lib

velocity-tools.jar en WEB-INF/lib

globalMacros.vm en WEB-INF/classes Necesario para crear el menú. Sino lo incluimos, simplemente no veremos el menú.

De la aplicación ejemplo que viene con struts-menu, podemos tomar las siguientes carpetas que contienen las plantillas, las hojas de estilo y los scripts de javaScript. Las carpetas son scripts, styles y templates ubicadas en la raiz de la aplicación web. Si miramos los ejemplos, como velocity-tabs.html observaremos como hace referencia a diversos ficheros de estas carpetas, más concretamente a una hoja de estilo, a un fichero de scripts y al fichero que contiene la plantilla en Velocity.

2) Integración con struts mediante el plug-in. Añadiremos el plugin al final del fichero struts-config.xml

En la propiedad menuConfig estamos indicando el fichero que contiene la definición de los menus.

3) Preparando los menus en nuestras páginas web.

Debemos añadir la declaracion de la biblioteca de tags de struts-menu

<%@taglib uri="/WEB-INF/struts-menu.tld" prefix="menu"%>

Si se utiliza freeMarker para la capa de presentación :

<#assign menu=JspTaglibs["/WEB-INF/struts-menu.tld"]>

Para presentar un menu haremos lo siguiente

Indicamos que cree una instancia de RolesPermissionAdapter para validar los permisos del usuario contra los roles que tenga definidos.

Si se utiliza freeMarker :

<@menu.useMenuDisplayer name="Velocity" config="/include/templates/tabs.html" bundle="org.apache.struts.action.MESSAGE" permissions="rolesAdapter">

Struts menú sólo dispone de 2 tags : userMenuDisplayer y displayMenu

Notas

Hemos de utilizar el displayer VelocityDisplayer si queremos hacer uso de parte de las propiedades de los menus, como por ejemplo el marco de un frame en el que deseamos cargar una página al pulsar sobre un menu, ya que con el displayer TabbedMenu, si ponemos el target nos ignora. Además nos permite adaptar el aspecto del menú al look&feel de la web.

@ 09:20 AM EST [ Comments [11] ]
 
 
 
 
Mis inicios con Linux.
Hace más de un año que empecé a utilizar Linux en casa. Durante un tiempo lo tenía instalado en una de las máquinas, para poder aprender me decía. Sin embargo lo único que hacía era instalar el sistema. Un día me dije que si de verdad quería utilizar Linux tenía que hacer las cosas al revés de lo que decía, es decir, utilizar Linux en mi máquina principal y dejar Windows para aquello que no era capaz de hacer en Linux. Además, el hecho de que Java sea multiplataforma y que tenga soporte total en Linux me ayudó a dar el salto. Y la fórmula funcionó. Por un lado, me encontré con que el sistema reconoce automáticamente casi todo mi hardware a excepción del scanner y de la camara digital/webcam. Por otro lado, en cuanto al softawre, poco a poco fui descubriendo programas que hacía lo que necesitaba. Entre este software destaco : k3b para grabación de cds que es muy similar a Nero, openoffice como suite ofimática, evolution para la gestión del correo y la agenda, mozilla firebird (ahora firefox) para la navegación web y netbeans para el desarrollo en Java, que al poco tiempo abandoné por Eclipse. En definitiva, tenía un sistema completo a mi disposición, aunque a cambio me tocaba empezar de cero en el manejo del sistema y de los programas. Por lo que he hablado con conocidos, sé que mucha gente no se pasa a Linux porque ya conocen Windows y además tienen mucho software que no se encuentra en Linux. Y son reacios a empezar de cero, ya se sabe más vale malo conocido que bueno por conocer. A mí no me gusta hacer apología porque si de Linux y criticar porque sí a Microsoft. Reconozco que han hecho un negocio brillante. También reconozco que Windows XP está muy bien, exceptuando los problemas de seguridad y la propagación de los virus. Pero experimentar con Linux es increible. Poder cambiar el gestor de ventanas, disponer de nuevas versiones del kernel continuamente .... Por cierto utilizo Libranet 2.8 con Gnome 2.4 y el kernel 2.6.4. Libranet está basado en la versión Sarge (pruebas) de Debian.
@ 06:40 PM EST [ Comments [0] ]
 
 
 
 
El inicio
Hola a todos. Este es mi primer post. Llevo varios meses leyendo los weblogs de JavaHispano y he aprendido mucho gracias a ellos. He iniciado este weblog porque me gustaría ir narrando mis experiencias con Java y Linux a todos vosotros. Tras varios años programando en Delphi, decidí pasarme a Java por varias razones. La primera fue la capacidad de la plataforma J2EE para el desarrollo de aplicaciones web y middleware. La segunda la comunidad de desarrolladores Java, entre ellas destaco a JavaHispano y a JUGAR por el hecho de ser en español. Y la tercera por la cantidad de proyectos de código abierto que me han permitido implementar aplicaciones con una base sólida en un tiempo record. De estas destaco Hibernate, Cocoon y Struts. Saludos.
@ 07:35 PM EST [ Comments [160] ]
 
 
 
 
 
« July 2008
SunMonTueWedThuFriSat
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
  
       
Hoy

[RSS Newsfeed]

Valid XHTML or CSS?

[This is a Roller site]
Theme by Rowell Sotto.
 
© Intentando mejorar