Obteniendo otro contexto en java
Octubre 21, 2009
Un proyecto del trabajo me hizo investigar mucho sobre como compartir recursos entre aplicaciones que se encuentran en un contenedor (tomcat en mi caso). Encontré que la forma más sencilla es acceder al contexto ajeno y leer información desde ahi (desde un atributo del contexto por ejemplo). Desgraciadamente esto no funciona tal cual. Tenemos que permitirle a nuestra aplicación meter las narices donde no lo han invitado. La parte buena es que es fácil, solo hay que poner un archivo context.xml dentro del directorio META-INF con algo como esto:
<?xml version=‘1.0′ encoding=‘utf-8′?><Context crossContext=“true”>
Al desplegar la aplicación ya podremos hacer cosas locas como :
ServletContext ctx=this.getServletContext().getContext(“/alla”);
RequestDispatcher rd=ctx.getRequestDispatcher(“/aculla/el/recurso.jsp”);
rd.include(request, response);
ORM en PHP con POG
Octubre 3, 2009
Wow, demasiados acrónimos en el título…
Estos últimos años básicamente me he dedicado a desarrollar todo lo que hago en java. El problema es que he dejado de lado muchas alternativas, incluso aquellas sumamente usadas como PHP.
Para solucionar esta situación decidí hacer unos cuantos experimentos en PHP. Nada muy elegante, solo algunas cosas útiles y pequeñas como validaciones, conexiones a bases de datos, etc. Este fin de semana me dió por investigar sobre soluciones ORM para php.
Sin duda hay bastantes. Sin embargo no he encontrado ninguna que ofresca algo tan completo como hibernate o el JPA. La mayoría requiere de correr procesos que autogeneran tus clases en base a un schema o algun otro tipo de configuración.
Lo mejorcito que he probado (que no ha sido demasiado debo decir) fue POG (PHP Object Generator) que es un sistema que te permite crear tus clases con sus metodos CRUD (eso es ‘create’,'retrieve’,'update’ y ‘delete’) para manejarlas.
Pueden probar el sistema en su página. La verdad fue facilísimo hecharlo a andar. En mi caso cree una clase Usuario con unos cuantos atributos, después solo hay que configurar un archivo con los datos de tu base de datos y entrar al directorio setup desde el navegador.
Una vez que se instaló la base cree un pequeño script para ver que funcionara. Nada del otro mundo, pero sufiente como prueba de concepto:
<?php
include “objects/class.usuario.php”;
include “objects/class.database.php”;
include “configuration.php”;
$us= new Usuario();
$us->usuario=”santiagozky”;
$us->password=”secreto”;
$us->nombre=”’santiago”;
if($us->Save()){
echo “genial “;
} else{ “owww “;}
$us2= new Usuario();
$us2->Get($us->usuarioId);
echo “$us2->nombre”;
?>
Como ven, nada complicado.
Pueden ver más documentación aquí.
Comenzando con Spring
Marzo 5, 2009
Para cierto proyecto en mi trabajo he tenido que comenzar a usar Spring. Todavía no lo comienzo a usar formalmente, pero he leido mucho y ha sido muy interesante.
Debo admitir que había leido mucho sobre IoC (inversión de control o inyección de dependencias) pero no lo había entendido bien hasta que probé un demo de Spring.
La documentación que mas me fue útil es un manual de MyEclipse y la documentación de Spring
Primeros pasos con LaTeX
Junio 7, 2008
LaTeX es un lenguaje para edición de textos científicos. Yo conocía de su existencia desde hace mucho pero nunca había intentado usarlo, sin embargo decidí probarlo para un documento para mi clase de métodos formales en ingeniería de software y quedé bastante satisfecho.
Los primeros pasos fueron un suplicio. Empezé editando a mano todo, buscando cada vez la etiqueta que necesitaba (era una tarea sobre teoría de conjuntos) pero después de un rato mi profesor me recomendó TeXmacs que es un editor WYSISYG (lo que ves es lo que obtienes) y me gustó bastante.
Para que se den una idea de como es un documento LaTeX vean mi tarea (solo es un fragmento)
\item Ejercicio 6
$n \in \mathbbm{N}, 4| (5^n – 1)$
$m = nk$ donde $m = 5^5 – 1$ y $n = 4$ \
Entonces $5^n – 1 = 4 k$, $k \in \mathbbm{N}$
…….
\item Ejercicio 7
$\sum_{i = 0}^n i^3 = \frac{n^2 (n + 1)^2}{4}$
Para n=0: 0=0.
Nuestra H.I: $\sum_{i = 0}^n i^3 = \frac{n^2 (n + 1)^2}{4}$
Por demostrar: $\sum_{i = 0}^{n + 1} i^3 = \frac{(n + 1)^2 (n + 2)^2}{4}$
$\frac{n^2 (n + 1)^2}{4} + (n + 1)^3 = \frac{(n + 1)^2 (n + 2)^2}{4}$
…
$A \cup (B \cap C) = (A \cup B) \cap (A \cup C)$
Si $x \subseteq A$ entonces $x \subseteq (A \cup B)$ y $x \subseteq (A \cup
C)$.Como esta en ambos entonces $x \subseteq (A \cup B) \cap (A \cup C)$.
Si $x \subseteq (B \cap C)$ entonces $x \subseteq (A \cup B)$ y $x \subseteq
(A \cup C)$, asi que $x \subseteq (A \cup B) \cap (A \cup C)$.Por estas dos afirmaciones demostramos que $A \cup (B \cap C) \subseteq (A
\cup B) \cap (A \cup C)$.Si $x \subseteq A$ entonces $x \subseteq A \cup (B \cap C)$.
Si $x \subseteq B$ entonces $x \subseteq C$, por lo que x$\subseteq (B \cap
C)$.Por lo tanto $A \cup (B \cap C) \supseteq (A \cup B) \cap (A \cup C)$.
As\’{\i} que $A \cup (B \cap C) = (A \cup B) \cap (A \cup C)$.
Parece complicado, y al principio lo es, pero después de un rato empieza a ser intuitivo y es mucho mas rápido que usar algun otro editor al estilo word.
Tentaciones
Abril 27, 2008
Ver en el update manager el mensaje “New distribution realease ‘8.04 LTS’ is available” supone una gran tentación para mi, pero estoy seguro de que sucumbir antes de que terminen clases será desastroso. Tengo una configuración bastante peculiar como para ponerme a experimentar a días de entregar proyectos finales.
Actualización
Perfecto… No había notado que la función de obtener la carátula de los discos desde amazon dejó de funcionar, al parecer ya funciona en la versión 1.4.9 pero solo está en hardy. Mas tentaciones.
Comentar código
Abril 21, 2008
“Comentar el código es como limpiar el cuarto de baño; nadie quiere hacerlo, pero el resultado es siempre una experiencia más agradable para uno mismo y sus invitados”
— Ryan Campbell
Y hoy me queda clarísimo…
Sun y sus compras
Febrero 12, 2008
Muchos ya sabrán que Sun Microsystems compró MySQL hace poco en una movida que llamó bastante la atención. Bien, pues hoy me entero en Entre Tuxes y Pepinos que Sun acaba de comprar también la compañía Innotek, los creadores de VirtualBox (Virtualización).
Dos grandes compras en menos de un mes es sin duda algo importante. Algo me dice que Sun busca posicionarse bien en el mercado de servidores en los próximos años. Ya cuenta con la tecnología Java que ha tenido bastante éxito y si le sumas un excelente manejador de base de datos y un sistema de virtualización la cosa se pone interesante. Ahora Sun cuenta con todo lo necesario para ofrecer una exelente plataforma para servidores: Solaris, Virtualización (que tan de moda está), un excelente gestor de DB y java encima del pastel. Sin duda una excelente propuesta.
Estaré al tanto de próximos movimientos para avisarles que pasa
B43 funcionando
Diciembre 12, 2007
No sabía que el driver bcm43xx para las tarjetas inalámbricas broadcom estuviera depreciado hasta hace poco. Estuve ayer intentando hacer funcionar el nuevo driver, b43, que aparentemente funciona mejor. Hoy logré echarlo a andar (tuve que recompilar el kernel 2.6.22).
Solo seguí la guía en la página del driver
Netbeans 6.0
Noviembre 29, 2007
Una de las cosas que estuve probando a lo largo de este semestre es la próxima versión del popular IDE para java. Netbeans 6.0. Estuve probando desde el beta 1 hasta el RC2 y la verdad me sentí muy cómodo con él.
Una de las cosas que mas me gustaron es que el Java Persistence Api, que yo encuentro muy cómodo, está muy bien integrado. Además el plugin para obtener diagramas UML por ingeniería inversa funciona bastante bien (probé diagramas de clases y de secuencia).
Otra cosita que aprecié (no recuerdo si estaba en la versión 5.5) es la de ‘refactoring’ (no se traducir eso) que básicamente permite seleccionar un código para meterlo en algún bloque (método, ciclo, condicional, etc). Perfecto si tienes malo hábitos de programación como su servidor.
El problema fue que si lo encontré algo lento, aunque puede que tenga que ver que mi computadora no es especialmente potente (sempron 3500+, 512 de ram con ubuntu 7.10 y java 6). A veces el proceso completo llegaba a usar mas de 500 megas (300 cargados en memoria el resto en swap) dejando mi computadora con miseros 4mb libres de memoria. Pero esto solo sucedó con muchas pestañas abiertas o manejando diagramas UML.
Creo que seguiré usando la versión 6, especialmente ahora que la versión final está cerca. Si les gusta netbeans no se lo pueden perder.
lo encuentran en netbeans.org
Concurso de programación regional ACM 2007
Noviembre 4, 2007
No se si muchos de mis fans los lectores de este blog sepan lo que es la ACM o su concurso de programación universitario, así que comenzaré por ahi.
ACM signifíca Association for Computing Machiner, o lo que es lo mismo, Asociasión para la maquinaria de cómputo. Estos cuates son una asociación (eso ya quedó claro, no?) que tiene el propósito de ser útil para los profesionales de la computación. Ofrece una gran biblioteca digital, publicaciones y conferencias a gente en todo el mundo. Pueden visitar su sitio web si desean saber mas.
El concurso de programación de la ACM, como su nombre lo dice, es un concurso de programación. Este se lleva a cabo una vez al año con los mejores equipos de todo el mundo que son elegidos a través de los concursos regionales unos meses antes.
Pues bien, hoy Domingo fue el concurso de México y como mi universidad (ITESM Campus Puebla) tiene el honor de ser una de las sedes nacionales (el concurso de lleva a cabo en varias ciudades de forma simultanea), decidí apoyar para que fuera un completo éxito.
Como desgraciadamente no hay muchos usuarios avanzados de linux en mi universidad mi compañero Adrián y yo fuimos los encargados de configurar los equipos usados para competir (fedora) con el software oficial del concurso (PC2).
La cosa estuvo genial durante los días previos al concurso, hicimos varias pruebas de conexión con todas las sedes (5 si no me falla la memoria) y todos pudimos hacer concursos de prueba. Sin embargo el demonio no estaba contento con esto y nos hecho la sal. Una hora antes de comenzar el servidor central (que estaba en Queretaro) no arrancaba. Para no hacerles el cuento largo solo les diré que a fin de cuentas cada sede tuvo que arrancar por separado (hora y media tarde) mientras nosotros actualizabamos un scoreboard en internet para que todos pudieran verlo.
5 horas mas tarde (eso dura el concurso) el martirio terminó con 2 equipos con sede en Guadalajara como campeones (el mejor equipo de nuestra sede quedó en 5). Ellos irán a Canada para el mundial donde estoy seguro que representarán a México con orgullo y regresarán con la cabeza en alto. No digo trofeo porque los polacos, rusos y chinos casi siempre se lo llevan, pero aun así les deseo lo mejor.
PD-En cuanto pueda les pongo el scoreboard final.
Actualización: Como bien dice Adrián (el otro encargado de pc2 en la sede) el scoreboard provisional (que no creo que tenga cambios) puede encontrarse en la página de la sociedad de alumnos

