Saludos
Es para mí un placer anunciar el lanzamiento de "Liferay 6 Preview Released", el mismo evidentemente todavía no es tecnología para llevar a producción (Bleeding Edge Technology), pero si nos da un abreboca de lo que nos espera a corto plazo, así como también entiendo que Liferay Inc. esperara un feedback de los usuarios que empiecen a probar dicha tecnología.
Entre los anuncios hechos por la empresa las nuevas caracteristicas de esta versión:
Pueden descargar Liferay 6 Preview Released del siguiente enlace
Y su documentación desde este enlace.
Esperando que se termine de descargar para contarles mis experiencias con lo nuevo que nos trae Liferay 6, me despido, sin mas que contarles.
El dia de hoy vamos a continuar con el tema de mejoramiento y optimización de nuestra implementación de Liferay, en el cual vamos a realizar un esquema de base de datos doble, uno exclusivamente para lectura y otro para escritura, paralelamente estas se están sincronizando, esto nos permite mejorar el rendimiento a nivel de respuesta I/O.
La gran mayoria de base de datos, propietarias como libres nos permiten tener este esquema y Liferay al manejar una capa de abstracción de datos tal como JBoss Hibernate realmente no se preocupa por quien esta guardando los datos, simplemente espera que Hibernate se encargue de comunicarse a traves del dialecto adecuado.
En este documento no hablare acerca de como realizar la sincronización de base de datos, eso es parte de otro articulo, simplemente voy a dar los tips básicos de como decirle a Liferay que use una base de datos para lectura y otra para escritura.
Estos cambios se realizan a nivel del archivo portal-ext.properties el cual lo podemos encontrar en el caso del bundle de tomcat dentro de la siguiente directorio si lo instalamos en /opt/liferay
/opt/liferay/tomcat-6.0.18/webapps/ROOT/WEB-INF/classes
Para configurar la base de datos de lectura (Usando como ejemplo MySQL):
jdbc.read.driverClassName=com.mysql.jdbc.Driver
jdbc.read.url=jdbc:mysql://dbread.com/lportal?useUnicode=true&characterEncoding=UTF-8&useFastDateParsing=false
jdbc.read.url=jdbc:mysql://dbread.com/lportal
?useUnicode=true&characterEncoding=UTF-8&useFastDateParsing=false
jdbc.read.username=
jdbc.read.password=
Y la de escritura:
jdbc.write.driverClassName=com.mysql.jdbc.Driver
jdbc.write.url=jdbc:mysql://dbwrite.com/lportal?useUnicode=true&characterEncoding=UTF-8&useFastDateParsing=false
jdbc.write.username=
jdbc.write.password=
En este caso es idoneo que tengamos 2 bases de datos totalmente separadas en distintos equipos, este esquema puede envenenarse mas para tener alta disponibilidad y redundancia, me despido por el dia de hoy, esperando que tengan un buen dia.
El dia de hoy, el tip es la integración de OpenOffice.org dentro de nuestro Liferay, ahora muchos se preguntaran, ¿ Por que debo integrar OpenOffice.org dentro de Liferay ?
En ocasiones los usuarios se preguntan como habilitar las opciones de exportar que aparecen en el portlet de Visor de contenido web (Web Content Display)
Exacto nos sirve como motor para exportar nuestros contenidos en diferentes formatos varios tales como:
Lo primero que debemos descargar es la versión de OpenOffice.org el cual lo podemos conseguir en diferentes formatos en la siguiente dirección http://www.openoffice.org
Procedemos a su instalación e imaginemos que la misma fue realizada en /opt, posterior a esto debemos ejecutar OpenOffice como un servicio que va a escuchar por el puerto 8100
/opt/openoffice.org3/program/soffice -headless \
-accept="socket,host=127.0.0.1,port=8100;urp;" \
-nologo -nofirststartwizard &
Por ultimo debemos activar la opción de usar OpenOffice, eso lo hacemos dentro del Panel de Control -> Administración del Servidor -> OpenOffice
Con estos simples pasos ya tenemos activado nuestra integración de OpenOffice con Liferay, lo que nos permitira exportar nuestro contenido web de manera simple, facil y sencilla.
Hasta una nueva oportunidad.
Versión 5.2.3
Versión de Liferay 5.2.3
En pro de mejorar el rendimiento de nuestra implementación de Liferay, podemos realizar algunos cambios dentro de la configuración de nuestro server.
El dia de hoy, vamos a conversar con respecto a los "servlet filters", estos fueron introducidos en la versión 2.3 de la implementación de servlet, su función es de interceptar dinamicamente peticiones y transformarla de alguna manera..
Liferay por defecto habilita 17 filtros de servlet y en muchas ocasiones realmente no necesitamos mantenerlos activos.
Algunos de los filtros disponibles por defecto son:
Como podemos ver en la anterior lista, si usted no usa ni la autenticación por un CAS Server, NTLM (NT Lan Manager), OpenSSO Single Sign On puede facilmente deshabilitar estos filtros, asi como tambien si no requiere mapear dominios a alguna comunidad, tampoco requiere el filtro de Virtual Host, los anteriores son ejemplos de algunos filtros que podemos deshabilitar.
La interrogante que nos planteamos es ¿ Y como podemos hacer este cambio ? La respuesta es simple.
Imaginemos que nuestra instalación se encuentra dentro de /opt/liferay y es el bundle de tomcat que se descarga por defecto dentro del portal de Liferay, buscamos el archivo web.xml dentro de /opt/liferay/tomcat-6.0.18/webapps/ROOT/WEB-INF, es ese el fichero que vamos a modificar.
Por ejemplo si deseo deshabilitar el servlet filter de SSO NTLM
Procedo a comentar con <!-- -->
<!-- -->
<!--
<filter>
<filter-name>SSO Ntlm Filter</filter-name>
<filter-class>com.liferay.portal.servlet.filters.sso.ntlm.NtlmFilter</filter-class>
</filter>
-->
<filter-mapping>
<url-pattern>/c/portal/login</url-pattern>
</filter-mapping>
Buen dia a todos
Muchas personas tienen dudas acerca de como funciona el entorno de desarrollo de plugins SDK dentro de Liferay, en algunos casos la documentación es confusa o al momento de realizar todos los pasos necesarios quedamos mirando al monitor y nos autopreguntamos ¿ Y ahora que ?
Lo primero que debemos hacer es configurar nuestro entorno de desarrollo SDK, existen información como realizar este paso dentro de la sección de comunidad de Liferay, pero voy a realizar un pequeño resumen asi como aclarar algunas cositas.
1) Procedemos a descargar el SDK de Liferay en la siguiente dirección - http://www.liferay.com/downloads/liferay-portal/additional-files, en la sección de archivos para desarrolladores (Files for Developers)
2) Descomprima el zip en la carpeta de su preferencia a partir de ahora me referire a el como $HOME_SDK
3) Proceda a crear un fichero llamado "build.$USUARIO.properties" donde $USUARIO es el nombre de su usuario en el sistema.
Ejemplo
touch build.eidast.properties
Dentro de este fichero, configure las siguientes variables: (Según la ubicación propia de tus directorios, el siguiente es un ejemplo)
app.server.dir=/opt/liferay/tomcat-6.0.18 auto.deploy.dir=/opt/liferay/deployapp.server.lib.portal.dir=/opt/liferay/tomcat-6.0.18/webapps/ROOT/WEB-INF/lib app.server.portal.dir=/opt/liferay/tomcat-6.0.18/webapps/ROOT/ javac.compiler=modern
4) Instale Apache Ant http://ant.apache.org/
Despues de estos pasos su entorno de configuración deberia estar listo para empezar a funcionar.
Para probar que su entorno funciona podemos ejecutar el siguiente comando dentro de $HOME_SDK/themes
create nombredeltema "Descripcion del tema"
Si se ejecuta sin errores su entorno ya esta listo para empezar a jugar con el.
Nota: No olvide que si esta en entornos Linux o Mac es necesario darle permisos de ejecucion a create.sh
chmod +x create.sh
El dia de hoy vamos a conversar un poco con respecto a la optimización de memoria a nivel de la JVM (Java Virtual Machine) al momento de ejecutar Liferay, existen algunas recomendaciones Standart que podemos ir encontrando a lo largo de toda la Internet, mas sin embargo vamos a especificar algunas propias de Liferay.
Para las personas que dispongan de tiempo, paciencia y suficientes ganas de aprender les dejo el siguiente enlace:
http://java.sun.com/j2se/reference/whitepapers/memorymanagement_whitepaper.pdf - Manejo de memoria de la JVM
1) Lo primero que debemos evaluar es nuestro Hardware en mi caso particular en el proyecto que estoy desarrollando dispongo de 8 Nucleos y 16 Gb de RAM.
En este caso por el manejo de 8 nucleos, se recomienda el uso de Concurrent Mark-Sweep (CMS) Collector, el parametro necesario al momento de ejecutar la JVM:
-XX:+UseConcMarkSweepGC
2) Define el valor de tu Xms y Xmx igual. Xms es el valor minimo del heap que ha de reservar la JVM y el Xmx Indica el tamaño maximo del heap.
En un entorno de desarrollo o producción podemos presumir que los recursos que dispone nuestro equipo son exclusivos para el portal, por lo que no tiene ningún sentido que el heap se este reorganizando, se recomienda definir el tamaño minimo y maximo del heap igual tamaño.
-Xms2048m -Xmx2048m
3) Configura el tamaño de tu "young generation", al igual que el punto anterior, también se recomienda establecer un valor minimo y maximo, en este caso estamos usando 1/3 del tamaño del heap.
-XX:NewSize=700m -XX:MaxNewSize=700m
4) Defina el PermSize, este espacio es usado para guardar los Object Class, este espacio dependera de que tantas clases dispongas, en mi caso 256 Mb es suficiente, si obtienes un error OutOfMemory trata de aumentar el tamaño para descartar que sea falta de memoria para los objetos.
-XX:MaxPermSize=256m
Todos estos valores los guardaremos dentro de setenv.sh que se encuentra en el directorio bin ejemplo:
/opt/liferay/tomcat-6.0.18/bin/setenv.sh
El Web Forms portlet es una herramienta que permite a los administradores web definir formas a ser publicadas dentro de nuestro portal. Los usuarios que visitan el sitio pueden llenar estos formularios y estos pueden ser enviados por correo electronico o guardados dentro de nuestra base de datos.
Recientemente descubri que al usar este portlet dentro de una instancia de Liferay, el mismo no se puede visualizar, solo se ve en la instancia principal, si se revisa la configuración dentro del administrador de plugins, efectivamente los permisos estan correctos.
En el caso del bundle de tomcat, simplemente la carpeta web-form-portlet que se encuentra dentro de:
web-form-portlet
/opt/liferay/tomcat-6.0.18/webapps/
Espera unos 30 segundos y vuelve a copiar a su ubicación original, esto realizara un deploy de este portlet.
Hace algunos años atras, viendo una materia llamada "Multimedia" en la universidad conoci una herramienta llamada Mind Manager, la misma era software propietario y como en muchas anteriores ocasiones no disponiamos de la licencia para trabajar con ella, mas sin embargo como era parte importante de la nota final entregar el documento en el formato que lo solicitaban, se opto por culminar el "Mapa Mental" en dicho programa. Un mapa mental según wikipedia es:
"Un diagrama usado para representar las palabras, ideas, tareas, u otros conceptos ligados y dispuestos radialmente alrededor de una palabra clave o de una idea central. Se utiliza para la generación, visualización, estructura, y clasificación taxonómica de las ideas, y como ayuda interna para el estudio, organización, solución de problemas, toma de decisiones y escritura."
En realidad a partir de dicho instante he usado con mucha frecuencia los mapas mentales en mi dia a dia, al momento de una reunión, tormentas de ideas, seguimientos de tareas, diagramación de contenido y muchas otras formas mas, dado que no promuevo la piratería, decidí buscar una opción libre a mi herramienta, la misma lleva el nombre de FreeMind. FreeMind es una herramienta libre escrita en Java, las ultimas modificaciones realizadas han permitido que pueda competir directamente con su versión propietaria, es multiplataforma gracias a que esta escrito en Java, por lo que podemos fácilmente ejecutarlo en estaciones Linux, Mac OS X y Windows sin ningún tipo de inconveniente. Permite la exportación de nuestros documentos a una cantidad considerable de formatos finales: SVG, PDF, JPG, HTML, XHTML (Versión JavaScript), XHTML (Mapa Selecionable), XSLT y Open Office, así como tambien podemos importar mapas de MindManager X5. En muchos casos (Al usarla en proyectos de trabajo), la información contenida en estos mapas mentales es muy importante y algunas veces clasificada, pues la seguridad es importante para FreeMind y nos permite generar un archivo cifrado en casos de que caiga en manos de la competencia. Puedo dar fe, con mas de 4 años de uso de la herramienta que es una opción completa, libre y estable para manejar todo lo referente a mapas mentales, y para aquellos que no los conocen, les recomiendo que lo descarguen, el mantener las ideas ordenadas de manera visual, permite aumentar la productividad enormemente.
Revisando el portlet disponible en el repositorio de liferay para tweeter, realmente no me gusto el hecho que anexara los tweets dentro del portlet de actividades, ya que iba a mezclar chicha con limonada y dado que no tengo intenciones de gastar mucho tiempo en esto, encontre un par de widgets que me llamaron la atención ofrecidos por la gente de Tweeter.com
Podemos obtener mayor información en la siguiente dirección web: http://twitter.com/goodies/widgets
Hoy voy a hablar de 2 de los widgets diseñados para mis sitios web.
El primero es el Profile Widget
Este Widget, nos permite facilmente agregar una pequeña caja con nuestros ultimos tweets, de manera cronologica, permitiendo a nuestros visitantes mostrarles nuestros ultimos pensamientos, relatos, links y demas yerbas aromaticas.
Podemos facilmente personalizar nuestro widget, cambiar los colores de cada una de las secciones de nuestra cajita, asi como cambiar los titulos de la caja, su tamaño.
El segundo que me intereso es el Search Widget
La diferencia principal del primero es que los tweets mostrados en la caja pueden ser una busqueda cualquiera en todos los tweeteros del mundo, al igual que el anterior es totalmente personalizable.
Algunos ejemplos de busquedas: