Ir al contenido principal

Entradas

Tomcat Cluster en Debian 7 (Wheezy)

Pues nos hemos animado a crear un cluster de tomcat. La verdad es muy sencillo hacerlo, simplemente habilitas unas opciones que ya vienen en tomcat y configuras mod_jk en apache para que administre el cluster y haga el balanceo de cargas. Muy, muy fácil, el detalle está en que no tienes alta disponibilidad, razón por la que puse el cluster en primer lugar. ¿Y entonces? Pues me puse a investigar, ya probé LiveRebel, y funciona de maravilla, pero igual te cobran... Así que busqué un poco más y di con mod_cluster de RedHat. Esta herramienta te permite lo mismo que mod_jk, pero le agrega alta disponibilidad, ¿a qué me refiero con alta disponibilidad? Al hecho de que cuando hay que hacer un redeploy de la aplicación si estas con mod_jk, apache no va a darse cuenta y te va a seguir enviando al tomcat que está haciendo el redeploy, y el cliente recibe el error de que no hay nada ahí, lo que sí hace mod_jk es notar que una instancia de tomcat ha sido dada de baja, entonces para lograr alta d...

Escuela Sabática Universitaria

Había olvidado mencionarles que el sitio de la escuela sabática la tuve que migrar de Liferay a una aplicación en Grails debido a que la implementación en Liferay estaba basada en el uso de etiquetas, y la búsqueda de Liferay basada en etiquetas no es muy óptima, por lo que cada vez que teníamos más artículos se hacía exponencialmente más lento, llegó a tal lentitud que tuve que implementarle un cache a la aplicación, así sólo un cliente al día le tocaba esperar los más de 30 segundos que tardaba en cargar la página, en fin no era lo mejor, por lo que durante el invierno estuvimos trabajando en una versión basada en Grails con un diseño que hiciera que la búsqueda basada en las etiquetas que necesitamos para catalogar cada lección y tema que se publica, lo cual ha hecho que el sitio vuele :). En fin ya tenemos desde el segundo trimestre volando en esta nueva plataforma, a la cual le añadimos búsqueda textual entre otras cosas, pero ahora puedes buscar un texto tanto en título como en c...

JQuery Image Upload en Spring MVC

Utilizar el jQuery File Upload de blueimp  en Grails es una delicia. Pero necesito hacer una aplicación grande y no sé lo suficiente como para mantenerla óptima dentro de Grails, así que decidí portarla a Spring MVC, pero no encontré una implementación de esta herramienta en Java que hiciera lo que hace el plugin, que simplemente implementa lo que la herramienta ya hace en otras plataformas. Así que me puse a implementarla y ya quedó. La pueden encontrar en github ... Sólo necesitan clonarla, y ejecutarla con maven: mvn tomcat7:run

Aplicación básica Spring MVC 3.2

Aplicación basada en: Spring 3.2.1 Hibernate 4.1.9 Utilizaré Maven para administrar la aplicación por lo que pueden utilizar NetBeans, IntelliJ, Eclipse o un editor de textos si así lo desean :) Para los que ya tienen experiencia y sólo necesitan ver los archivos, estos se encuentran en mi proyecto demo en github . Primero necesitas crear el proyecto base con mvn archetype:generate Y buscar la opción de aplicación web JEE ó crear una aplicación web con maven con cualquier IDE que lo soporte. Luego necesitamos asegurarnos de tener estas dependencias (el orden es importante): Puedes encontrar el pom.xml aquí El web.xml ya no es necesario en una aplicación web JEE 6, pero dado que estoy utilizando los perfiles de Spring (aunque esos creo que se pueden configurar sin el XML) y unas páginas de errores, estas necesitan estar en el web.xml , como lo muestro aquí , claro que puedes poner más cosas pero son las que necesitamos para nuestro proyecto. Ahora los archivos que conf...

Un bootstrap como en Grails para una aplicación Spring

Siempre que me encuentro haciendo una nueva aplicación en Spring en algún momento en el tiempo empiezo a requerir de un estado inicial para que esta funcione. En Grails es bien fácil manejar esto, solo lo metes en el Bootstrap.groovy y listo. ¿Pero en una aplicación con Spring cómo lo hago? Aquí está una posible solución.

Conexiones colgadas en cada redeploy

¿Tienes conexiones que se quedan colgadas después de cada redeploy en tu aplicación Spring? Resulta que seguramente estas utilizando el DBCP de Apache para conectarte a tus bases de datos y este no cierra las conexiones cuando la aplicación le dice que es hora de cerrar todo. Aquí les voy a poner el código y configuración necesaria para que no tengan que estar reiniciando tanto su servidor de aplicaciones (Tomcat, JBoss, Glassfish, etc).

Mostrar imagen en reporte html

Si estas usando JasperReports para armar tu reporte HTML, habrás notado que no es tan sencillo mostrar las imágenes. Existe una webapp demo con un ejemplo de cómo lo puedes lograr si bajas el proyecto completo de JasperReports (que es la recomendada). Pero si solo quieres que funcione en HTML, además de configurar el ImageServlet (que eso no lo puedes evitar, porque lo necesita para el posicionamiento de los elementos dentro de la página), solo le habilitas la opción Is Lazy a tu imagen. Y le pasas la ruta a la imagen. De esta forma JasperReports no intentará cambiarla.

Grails 2.0 y los campos con decimales

Si tienes tu navegador configurado para que muestre el contenido en español, es posible que puede estar mostrando las cantidades separando miles por punto (.) y decimales con coma (,). Si este es el caso, no va a mostrar el contenido de tu campo. Para que lo muestre hay que hacer un cambio en el campo generado por grails: por y por ultimo en tu controller después de que cargues el objeto tienes que pasarle la propiedad

Fábricas de Software

Pues estamos a un mes de haber iniciado, y aunque ha funcionado lo del scrum dentro de las fábricas de software, la motivación sigue siendo un problema debo de encontrar la forma en que pueda estar ahí motivando a los muchachos pero a la vez sacando el trabajo que me toca... Si para mantenerse uno motivado se complica ahora para todo un equipo de muchachos que no saben qué es lo que quieren de su vida... Pero en fin, sólo me estoy quejando... Son muchachos muy buenos, y me ha tocado un grupo que se mueve muy bien... Pero definitivamente necesito ayuda... ya veremos cómo le hacemos.

Mejoras a Escuela Sabática Universitaria

Hemos estado trabajando duro en mejorar el sitio Escuela Sabática Universitaria ... La última novedad es que, si cuentas con un navegador reciente, buscará las ligas que sean de versículos en la página de estudia y en lugar de tener que hacer una recarga completa de la página utilizamos AJAX con JQuery para que estas sólo actualicen la sección de lectura del versículo, así también como la navegación dentro de la sección de la Biblia. Esto es muy interesante debido a que si se conecta con un navegador que no soporte esto (javascript), debe de seguir funcionando de manera normal. Para resolverlo utilizé lo recomendado en este sitio .

Seguimiento a Fábrica de Software 2010

Pues ha funcionado +/-. El detalle está en el tiempo que podemos dedicarle a los muchachos para orientarlos. Hasta ahora sólo yo estoy apoyando a los muchachos, no he recibido apoyo de los maestros para revisar qué es lo que están haciendo y guiarles... en fin, son cosas con las que tenemos que trabajar. Gracias a Dios, hemos tenido un número estable de estudiantes asistiendo a trabajar... ahora estamos aplicando SCRUM más formalmente, por lo que ellos están viendo si avanzan o están estancados por su cuenta y no necesitan que yo se los muestre... Precisamente hoy tuvimos reunión de iteración y pues ellos mismos dieron con sus respectivos problemas para esta iteración y pues, esperemos, posibles soluciones. Veremos cómo nos va en la siguiente iteración.

Culpa

La lección de esta semana nos explico el sentimiento de culpa... Un sentimiento que se sintió por primera vez cuando Adan y Eva pecaron... Es un sentimiento que Dios programo en el ser humano para que este pueda darse cuenta que ha obrado mal y pueda buscar pasar al siguiente sentimiento que es el arrepentimiento e intentar buscar el perdón.

Búsqueda de Artículos por Etiqueta en Liferay

Pues no me había encontrado con nada interesante para escribir, por lo que había dejado a un lado el blog ya por un tiempo, en fin... ahora me encontré queriendo hacer una búsqueda por tag de contenido en liferay debido a una aplicación que estoy realizando, y me topé con que no hay mucha información al respecto por lo que hago este post para que le sirva a alguien y para acordarme cómo hacerlo después... :) Donde curso es una variable de entorno que cuando le pides su código, te regresa un string... Si quisieras hacer la búsqueda por varias etiquetas solo le pasas "TAG1,TAG2,TAG3" al StringUtil y te va a hacer el arreglo que necesitas para hacer la búsqueda por los tags, la primera opción que está puesta en false significa que si buscas por varios tags lo hagas con un AND si es true o con un OR si es false, esto es, que si le pones true, lo que busques debe tener todos los tags asignados, con false, solo hace falta que tenga uno. Si necesitas solo articulos, busca el id de ...

Alfresco 3.3 & GMail (Google Apps)

Alfresco  es una excelente herramienta para administrar documentos de una manera más amigable que GIT . Esta es la herramienta perfecta para el almacenamiento de documentos en una empresa y el trabajo en equipo, ya en esta versión está integrada con Google Docs para la edición de documentos, y viene más fuerte su implementación del protocolo SPP (este es el que permite que puedas editar documentos entre varias personas desde Word, Excel y PowerPoint). En fin, se los recomiendo... Hay una documentación en el sitio de alfresco acerca de cómo configurar la herramienta para mandar correos por GMail, pero no me funcionó así que tuve que ir a otro sitio para obtener lo que faltaba, en fin, voy a ponerlo aquí para recordarme yo cómo lo hice y para ayudarle a alguien que lo esté buscando. Es fácil sólo hay que editar un archivo y crear otro, primero por el que hay que editar, se llama alfresco-global.properties y se encuentra en  [INSTALACIÓN DE ALFRESCO]/tomcat/shared/classes/alfresc...

Nuevo Proyecto de Fábrica de Software (Intento 2010)

Henos aquí después de una semana algo llena, "lamentablemente" no pude trabajar todo el tiempo en el desarrollo de software (mi pasión), me tomé el tiempo para dedicarle a los muchachos que están trabajando para el departamento de sistemas. Estos muchachos son estudiantes y tienen una beca-trabajo u horas de servicio. Este año estamos intentando algo nuevo, en vez de que ellos tengan que asistir a las oficinas de sistemas, estamos proveyéndoles de un lugar de trabajo en la facultad, dentro de su laboratorio de computación, de tal forma que más muchachos se puedan unir sin sentirse fuera de lugar o menos, dado que son sus instalaciones... realmente tanto el personal administrativo de la facultad, sus maestros y nosotros (personal de sistemas) esperamos que funcione y que dé varios resultados (mejorar el nivel de los alumnos egresados de nuestra facultad, una mayor participación maestro-estudiante, involucrar a los estudiantes con un ambiente laboral y demás), la verdad es que ...

Pablo y la ley

Pablo no disminuye en nada la necesidad o la importancia de la ley moral; por el contrario, su evangelio en realidad sirve para ensalzar la ley. Una de sus principales preocupaciones es que los hombres comprendan la relación correcta que existe entre la ley y el Evangelio, y su gran mensaje es que los pecadores no deben depender de ley, ni siquiera de la ley de Dios , para que haga por ellos lo que sólo puede alcanzarse mediante la gracia de Dios que justifica y santifica por medio de Jesucristo. La comprensión de esta verdad fundamental para la salvación no disminuye el respeto por la ley de Dios; por el contrario, produce un efecto precisamente opuesto en los que tienen fe.

Grails, Imágenes y Postgresql

Pues he estado probando postgresql desde que salió la versión 9.0 beta1, y el no saber qué pasará con MySQL, en fin, eso es otra historia. El chiste es que hoy, bueno desde ayer, me topé con algo que me hacia considerar regresar a MySQL, aunque sé que en MySQL no es cualquier cosa hacerlo. Estoy guardando en la base de datos unas imágenes, y aquí van a empezar a polemizar en cuanto a si es mejor o no guardar datos binarios en la BD, pero una rápida respuesta a sus interrogantes es que pienso poner mi aplicación en clúster, por lo que me es más fácil si esos recursos se encuentran en la BD, no me importa tanto el rendimiento. En fin, intenté hacer eso, porque no funcionó, llegué al punto de intentarlo en una aplicación vacía con HSQLDB, y que funciona... charros, entonces es Postgresql, seguí debugueando y encontré el problema, resulta que en Postgresql 9.0 (ya estoy en el beta2, por bajar el beta3), cambiaron una opción que en versiones anteriores estaba de otra forma, la regresé a com...

Migración de Webspace a Liferay

Deseas cambiar de webspace de sun a liferay? Tengo una instalación de webspace basado en liferay 5.2.2 y decidimos actualizar a la versión 5.2.3, ya que liferay acaba de liberar su versión 6.0.0. SGCampus es uno de los sitios administrados en esa instancia, visítalo. Para la migración fue necesario montarlo en una máquina virtual, en la cual estuvimos probando hasta que le dimos... una vez encontrados los pasos apropiados para la migración es bastante sencillo (CUIDADO: Siga este procedimiento bajo su responsabilidad). Las especificaciones del servidor son: Web Space Server 10.1 Community Build 2, esto está instalado sobre un glassfish v2 y conectado a una base de datos MySQL 5. Descomprimir liferay en donde lo vas a usar en el servidor (yo lo pongo en /opt/portal/liferay-portal-5.2.3) Respaldar directorio donde webspace sube los archivos del portlet de documentos, en mi caso se encuentra en [instalación de webspace]/var/webspace/data y ponerla en [instalación de liferay]/data, qu...

Configuración Inicial de Liferay 5.2.3

Una vez instalado Java 6, mysql 5 en tu servidor, imagino que ya bajaste liferay 5.2.3 con tomcat 6 desde liferay.com. Bueno lo desempacamos y lo corremos y que pasa, pues resulta que correo bien y todo pero con Hypersonic DB y esta base de datos no es suficiente para un ambiente productivo, por lo que tenemos que configurar liferay para que se conecte a MySQL. Para esto creamos un archivo de texto con el nombre de portal-ext.properties en el home del usuario que va a levantar el tomcat, en mi caso el usuario que estoy utilizando es jdmr y el servidor es ubuntu así es que mi archivo queda en /home/jdmr/portal-ext.properties y le ponemos lo siguiente adentro # # MySQL # jdbc.default.driverClassName=com.mysql.jdbc.Driver jdbc.default.url=jdbc:mysql:///lportal?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=UTF-8&useFastDateParsing=false jdbc.default.username=lportal jdbc.default.password=lportal Por supuesto puedes cambiar el usuario, pas...