Oracle Express v10 en ubuntu

Logo OracleHasta la fecha nunca había trabajado con oracle. Solo había tocado mysql, sqlserver (lo justo y necesario para sacar adelante los respectivos proyectos) y apache derby en mi querido fmap. Pero las prácticas de SGBD las haremos en este entorno, por lo que toca instalarlo.

Hace ya unos años que la uoc viene promoviendo el software libre con cd’s de ubuntu y diverso software abierto (cuando es posible) para poder realizar muchas de las prácticas cada semestre. Pero esta asignatura parece ser una excepción. En “sistemas de gestión de bases de datos” envían un cd con Oracle Express v10 y SQL Developer v1, solo para windows XP, 2000 y 2003. Como muchos sabréis Oracle Express es la versión gratuita de oracle y también tenemos versiones para ubuntu y otras distribuciones gnu-linux, ¿que les costaba meter 200MB mas con el .deb para las distribuciones debianeras?.

Por supuesto yo lo he instalado en mi ubuntu. He optado por añadir el repositorio de oracle http://oss.oracle.com/debian a mi sources.list y ejecutar un simple apt-get install oracle-xe-universal, he dejado los pasos de instalación en el wiki, cuya página iré ampliando a medida que valla conociendo este SGBD.

Por supuesto, esta versión gratuita tiene sus limitaciones, en la licencia nos indican que solo para sistemas con 1 procesador, no mas de 1GB de ram y BD limitadas a un tamaño de 4GB, quien quiera mas, que pague.

Leave a comment

5ª temporada, ilusiones renovadas

Ayer comenzamos nuevo semestre en la uoc. Desde que empecé, estos semestres van marcando temporadas, esta será la 5ª. Son temporadas de mucho, muchísimo trabajo, es necesaria digamos… una fase de mentalización previa, marcarse un objetivo, que siempre es el mismo, y lanzarse a por el. El objetivo es llegar vivo a ese tiempo de descanso de 3-5 semanas, vivo, con las asignaturas aprobadas, y toda la experiencia y conocimientos posibles en la cabeza.

Cada vez queda menos para el final y he recobrado toda la ilusión con la que había empezado al principio, después de 3 semestres con asignaturas “coco” y que me habían desmotivado un poco. Parece que ya se han acabado y a partir de ahora todo será mucho mas interesante.

Este semestre he elegido 3 asignaturas (yo quería 4 pero mi tutor me recomendó 3 y al final le hice caso): Teoría de autómatas y lenguajes formales 1, Ingeniería del software y Sistemas de gestión de BD. Tengo muchas esperanzas en las 2 últimas, espero aprender mucho de ellas, ya os contaré.

Además me he apuntado a un curso de j2me, creo que será muy básico pero como una primera toma de contacto con este entorno creo que va a estar bien, si lo hubiera hecho por mi cuenta estoy seguro de que no habría encontrado el momento.

Leave a comment

Google Chrome ¿Otro navegador web?

Logo Google ChromeGoogle lanza su propio navegador web, ya no son rumores, es noticia confirmada. Por un lado en este gracioso e ilustrativo comic y por otro en el blog oficial de google, en breve también estará disponible para su descarga.

En estos momentos estoy confuso. No se si alegrarme por la noticia de un nuevo navegador que continúe haciendo crecer la web y sus diferentes aplicaciones, o por el contrario mantener todos mis temores ante la aparición de ¡un nuevo navegador donde testear webs!.

Una buena y otra mala noticia, y a las dos nos tiene acostumbrados google. La buena: será 100% open source, ¡bien!. Y la mala: los usuarios de linux tendremos que continuar esperando, ¿hasta cuando?.

Os animo a leer este artículo de Enrique Dans, en el que expone la idea de un navegador diferente, una nueva plataforma web para soportar aplicaciones, el primer paso para restar la dependencia de algunos pesados sistemas operativos actuales. Para ello google chrome incluirá google gears y contará con una maquina virtual de javascript al que llaman “V8″, que si cabe viene a reforzar todavía mas ajax, que google utiliza en todos sus productos, y GWT como kit de desarrollo, del que espero contaros mis experiencias dentro de poco. También contará con un sistema multihilo para que la vida del navegador no dependa de la web a visualizar.

Captura google chrome

Esperemos a tener siquiera una beta para tener las cosas mas claras, por cierto, no me gusta nada el nombre.

1 Comment

Varios botones sobre un mismo formulario de forma accesible

Como soy así de vicioso esta mañana estaba dedicando algo de mi tiempo a maquetar un formulario sobre el que pueden actuar 3 botones con acciones diferentes (pongamos guardar en session, guardar en BD y eliminar de session). Este formulario debe cumplir estándares xtml+css2 y debe ser accesible lo cual me obliga a prescindir de javascript para su funcionamiento básico, se acabó el document.location.href=’xxx’.

Gloogleando un poco me encontré con este buen artículo de Olga Carreras.

La idea es muy simple. A cada uno de los botones le asignamos un name un id y un value, y en el servidor nos encargaremos de comprobar que botón se ha pulsado y de ejecutar la acción correspondiente.

Leave a comment

Gestión de proyectos con Trac

Logo Trac

Después de unos días muy movidos resolviendo marrones varios, desde el análisis y corrección de complejos y absurdos algoritmos hasta ayudas varias a clientes en .net (hace mas de 4 años que no toco este lenguaje!) que mejor para volver a sentirse “vivo” que probar una de las tantas cosas que tengo en mis “tareas pendientes”, el Trac.

Hacía bastante tiempo que le tenía ganas pero la puntilla está siendo uno de los proyectos en los que estoy trabajando y la relación a distancia con los integrantes del mismo. En mi opinión necesitamos mas que subversion y correo, necesitamos por lo menos un wiki y un gestor de tareas en los que poder colaborar todo el equipo, y esto es lo que nos ofrece trac. Además de la interfaz web de subversion que aunque está bien, es perfectamente prescindible en este caso.

La instalación básica en debian/ubuntu es bastante sencilla. La configuración con apache y mod_python también aunque hay que tener en cuenta la necesidad genshi (un motor de plantillas escrito en python). Luego la integración con svn para poder añadir comentarios o cerrar tickets desde commits de svn resulta un poco mas liante, ya que debes instalar el plugin SVNPolicies y configurar un par de scripts, pero cuando finalmente logras hacerla funcionar, ¡es una maravilla!. Además esta ultima tarea me ha permitido eliminar otra de mis “tareas pendientes” los ganchos (hooks) de svn, ahora ya se como funcionan :-) .

He dejado unas notas sobre los pasos que he seguido en el wiki. Ahora en cuanto lo tenga un poco mas probado sugeriré su instalación para el proyecto en el que estamos trabajando y a ver que sale.

Otra nota positiva es que casi sin buscarlo ya estoy empezando a ver cosillas en python, aunque espero que la próxima el tiempo me deje y sea mas a fondo, ya os contaré.

Instalación / Configuración Trac

PD: Los macbook van ganando enteros pero todavía no se si macbook a secas (blanquito) o macbook pro.

Leave a comment

Contabilidad casera con HomeBank

HomeBank

Pues si, para eso que mi abuela hacía solo con su cabeza, administrar sus dineros, yo voy a intentar hacerlo con HomeBank.

¿Porque utilizar HomeBank si mi abuela era capaz de hacerlo de memoria?, puff pues principalmente porque la abuela todavía tiene un coco tremendo y yo no le llego ni a la suela de los zapatos. Después, porque cuando uno comienza a tener varias entradas/salidas (y eso que no tengo hipoteca) puede resultar fácil perderse si no administra bien sus cuentas.

HomeBank tiene una interfaz muy intuitiva y amigable, también probé GNUCash pero este me parece demasiado complejo/liante y yo necesitaba algo muy sencillo, que no tenga que estructurar demasiado mis cuentas y no deba dedicarle demasiado tiempo, de lo contrario a la primera de cambio lo dejaría de lado. Simplemente quiero registrar gastos/ingresos mas importantes, operaciones automáticas (sueldo, letras, etc.) y una previsión futura del saldo de mi cuenta. Ahora ya sé cuando podré comprarme mi nuevo portatil por ejemplo ;-) , creo que falta poco, lo siguiente será decidirse mac vs pc (ubuntu jugará un papel decisivo en la lucha).

Leave a comment

De vuelta y a la carga

Aunque todavía estoy apurando mis últimos días de vacaciones, ya hemos vuelto del viaje a Cantabria y a estas horas intento cerrar algunos proyectos personales que tengo pendientes.

El viaje fue de lo mas agradable y de lo mas agotador: 2 rutas de senderismo (la ruta del cares y fuente dé-aliva espinama), un día por Santander ciudad y Santillana, un día por las maravillosas playas de oyambre, visita a la cueva del soplao, visitas varias a Comillas y San Vicente, y un poco de vagancia que para eso estábamos de vacaciones ;-) . Para vuestro deleite ahí quedan esas fotos, creo que queda alguna mas en mi flickr por si a alguno le interesa.

Ruta del caresRuta del caresRuta del caresRuta del caresRuta del caresRuta del caresFuente déFuente deFuente dé EspinamaFuente dé Espinama

Leave a comment

Curso J2EE – Fin

Hemos terminado el curso.

El temario prometía y entre otras razones era el principal motivo por el que me animé a asistir, pero a estas alturas ya sabemos que el temario nunca es garantía de nada. El nivel de cualquier curso siempre lo acaba marcando en primera instancia los docentes y a continuación el grupo de alumnos.

Y bien, este curso ha sido de los pocos que ha cumplido con creces las expectativas iniciales. Ha sido uno de los cursos mas provechosos a los que he asistido. Y creo que principalmente porque quien enseñaba no solo era profesor, trabajaba diariamente como programador, como nosotros. Por esto nos entendía, entendía nuestras necesidades, nuestros problemas, entendía como funcionan las empresas, entendía que no siempre podemos trabajar con la última VM o el último framework y aportaba su punto de vista al respecto. Mostrando siempre una base teórica de cada uno de los puntos lo provechoso principalmente ha sido una importante base práctica y marcando bien los puntos conflictivos en base a sus experiencias. Y es que como bien se expone en la fábula que contiene este buen artículo que os animo a leer, no se puede enseñar a cazar dragones sin haber cazado ningún dragón, evidente no?.

Y ahora toca descansar :-) , 1 semanita por Santander playa-sol-montaña y otra por mi querida tierra gallega.

Un saludo y hasta la vuelta.

2 Comments

Curso J2EE (15ª,16ª semana) JSF

Después de varias semanas con spring cambiamos de tercio y nos adentramos en otro framework java, jsf (java server faces). Mi experiencia con jsf se había reducido ya hace tiempo al trabajo con jbpm pero había profundizado muy poco.

Jsf es el estándar propuesto por sun para el desarrollo de aplicaciones web en j2ee, sus especificaciones se definen en los siguientes jsr JSR 127, JSR 252, JSR 276.
Como toda especificación definida por sun encontraremos diversos proyectos que la implementan: MyFaces, backbase, ice-faces, adf-faces , richfaces, jsf-extensions, etc…

La mayor novedad en jsf respecto a otros frameworks es el concepto de componente/evento, así emulando al desarrollo bajo swing por ejemplo tendremos componentes para crear menús, listas, arboles, componentes que nos aportan funcionalidades bajo ajax y tendremos la posibilidad de crear nuestros propios componentes en caso de ser necesario.

Para comenzar a utilizar jsf necesitaremos modificar nuestro web.xml indicando el servlet que gestionará todas nuestras peticiones jsf:
[xml]

Faces Servlet
javax.faces.webapp.FacesServlet
1


Faces Servlet
*.jsf

[/xml]

Por supuesto no nos libraremos de los ficheros de configuración xml, en jsf este fichero será faces-config.xml, en el declaramos por ejemplo todas las reglas de navegación, y los beans de nuestro modelo.

[xml]


facturaBean
net.jsanroman.beans.FacturaBean
request

/factura.jsp

error
/WEB-INF/factura.jsp
success
/WEB-INF/facturas.jsp
[/xml]

En jsf los controles de la vista lanzarán eventos listener y estos serán implementados por los métodos de los respectivos beans:
[xml]

valueChangeListener="#{facturaBean.aplicaDescuento}"
onclick="submit()"
immediate="true"/>

value="Guardar"
actionListener="#{facturaBean.save}"
immediate="true"/>

[/xml]

Crear nuestros propios componentes jsf puede resultar al principio un poco complejo pero una vez sabemos la mecánica será siempre igual, la complejidad entonces vendrá dada por el componente que necesitemos crear:
- Crear la clase que represente a nuestro componente, que extenderá de UIComponentBase.
- Crear la clase que represente a los tags necesarios para incluir nuestro componente en la vista y que extenderá de UIComponentTag.
- Creamos el tld que defina nuestro componente.
- Y lo incluimos en faces-config.xml de la forma:
[xml]

net.jsanroman.JsfHolaMundo
net.jsanroman.component.HolaMundoUIComp

[/xml]

Para finalizar estas 2 semanas hemos probado varios componentes de myfaces que integran funcionalidades ajax, y como no!, hemos integrado spring con jsf.

Una buena comparativa entre struts y jsf.

Leave a comment

Curso J2EE (13ª semana) spring:webflow

Semana 13ª continuamos con spring, esta vez probamos spring webflow, el modulo de spring para definir e implementar flujos de trabajo (workflow).

Atrás quedan aquellos días con jbpm, en mi opinión creo que lo habíamos comenzado a utilizar demasiado pronto (recién salida del horno la primera stable) y la documentación era muy escasa por lo que los comienzos fueron muy pero que muy difíciles. A esto (y otra vez en mi opinión) le sumamos un equipo de trabajo falto de muchos conocimientos y conceptos en los que se basa jbpm y como tantas otras veces el poco tiempo disponible para asimilarlos. Por todo esto mi anterior experiencia con jbpm no fué del todo satisfactoria, pero quien sabe, quizás un día de estos tontos lo retome y me lleve una grata sorpresa, ganas no me faltan pero tiempo todo el del mundo como a la mayoría.

En general spring webflow no me resultó complejo, lo principal es tener claro como trabaja spring.

Puedes declarar tu flujo tanto en un fichero xml como en una clase java y como en todo workflow tendrás diferentes estados y tipos de estado por los que pasará el proceso. Así por ejemplo tendremos: view-state (estados que renderizan una vista), action-state (estados de lógica de negocio), start-state (estado de comienzo), end-state (estado de fin). Podrán tener n transiciones que especificaremos por ejemplo en el fichero xml de la forma:
[xml]


[/xml]

En este caso hemos declarado un action state que por ejemplo comprobaría los datos insertados por un usuario y le mostraría un listado de facturas si son correctos o lo devolvería a la página de login.

Podríamos definir subflujos con la etiqueta subflow-state.

Debemos declarar los beans utilizados en el flujo indicado anteriormente:
[xml]

[/xml]

A los enlaces html que inicien el flujo debemos pasarle el parámetro _flowId=id_del_start_state.

Una de las diferencias significativas que en un primer momento he encontrado respecto a jbpm es que spring webflow no guarda la información entre los diferentes estados de forma automática, cosa que si hace jbpm, pero bueno dependiendo de lo que necesitemos siempre podemos hacerlo a mano.

Leave a comment