21 junio 2009

Empuja tu vaquita


Hace un tiempo atrás había publicado esta historia que guarda un gran mensaje... tomense unos minutos para leerla, les aseguro que aprnederán mucho...
Empuja tu vaquita
Un maestro de la sabiduría paseaba por un bosque con su fiel discípulo, cuando vio a lo lejos un sitio de apariencia muy pobre, y decidió hacer una breve visita al lugar. Durante la caminata le comentó al aprendiz sobre la importancia de las visitas y el hecho también de conocer personas y las oportunidades de aprendizaje que se obtienen de estas experiencias.
Llegando al lugar constató la pobreza del sitio, los habitantes, una pareja y sus tres menores hijos, la casa de madera, vestidos con ropas sucias y rasgadas, sin calzado. Entonces se aproximó al señor, aparentemente el padre de familia y le preguntó: “En este lugar no existen posibilidades de trabajo ni puntos de comercio tampoco, ¿cómo hacen usted y su familia para sobrevivir aqui?.”
El hombre muy pausadamente le respondió: “Amigo mío, pasto no nos falta nunca y tenemos una vaquita que nos da varios litros de leche todos los días. Una parte del producto la vendemos o lo cambiamos por otros alimentos en la ciudad vecina y con la otra parte producimos queso, cuajada, etc., para nuestro propio consumo y es asi como hemos venido sobreviviendo”.
El sabio agradeció la información, contempló el lugar por un momento, luego se despidió y se fue. En el medio del camino, volteó hacia su fiel discípulo y le ordenó: “Busca la vaquita, llévala al precipicio que se encuentra allí en frente y empújala al barranco”.
El joven espantado vio al maestro y le cuestionó sobre el hecho de que la vaquita era el medio de subsistencia de aquella familia. Mas como percibió el silencio absoluto del maestro, fue a cumplir la orden. Así que empujó la vaquita por el precipicio y la vio morir. Aquella escena quedó grabada en la memoria de aquel joven durante algunos años.
Un día el joven resolvió abandonar todo lo que había aprendido y regresar a aquel lugar y contarle todo a la familia, pedir perdón y ayudarlos. Así lo hizo, y a medida que se aproximaba al lugar veía todo diferente, con árboles floridos, todo habitado, con un auto en el garaje de tremenda casa y dos niños jugando en el jardín.
El joven se sintió triste y desesperado imaginando que aquella humilde familia tuviese que vender el terreno para sobrevivir, aceleró el paso y llegando allá, fue recibido por un señor muy simpático, el joven preguntó por la familia que vivía ahí cinco años atrás, el señor respondió que seguían viviendo ahí.
Espantado el joven entró corriendo a la casa y confirmó que era la misma familia que visitó hace algunos años con el maestro. Elogió el lugar y le preguntó al señor: ¿Cómo hizo para mejorar este lugar y cambiar de vida?.
El señor entusiasmado le respondió: ” Nosotros teníamos una vaquita que cayó por el precipicio y murió, de ahí en adelante nos vimos en la necesidad de hacer otras cosas y desarrollar otras habilidades que no sabíamos que teníamos, así alcanzamos el éxito que sus ojos vislumbran ahora”.
Todos nosotros tenemos una vaquita que nos proporciona alguna cosa básica para nuestra sobrevivencia la cual es una convivencia con la rutina, nos hace dependientes, el mundo casi se reduce a lo que la vaquita nos produce. Atrévete a descubrir cual es tu vaquita para empujarla por el precipicio…

13 junio 2009

Sobre la masacre en Bagua... (El Perú es multicultural presidente!!)



Para empezar el objetivo de este blog no es hablar sobre temas políticos. Sin embargo, tras lo ocurrido en Bagua deseo hacer un paréntesis a la temática habitual de este blog para dejar plasmadas algunas ideas que tengo sobre este tema.

Es dificil para mí comprender el porqué la clase política, en general y el Apra en particular, busca que nosotros nos a
daptemos al gobierno en curso; siendo que somos un país multicultural, no es descabellado pensar que es el gobierno el que debe adecuar su política a las diversas culturas y costumbres existentes en el territorio peruano.

También, no es dificil saber que las naciones indigenas son naciones guerreras por costumbre y que consideran a su territorio su casa; solo que a diferencia de nosotros su casa es en realidad las bastas extensiones de la selva peruana, lugar en el que viven, superviven y mueren sin pedir apoyo de ningun

gobierno.

De alli que no sea dificil entender que los pueblos amazónicos tengan que luchar por sacar de su casa a los que los invaden, exactamente igual, a como cuando un ladrón intenta entrar en nuestro domicilio.

Algunas cosas que quiero declarar...

... soy descendiente de los antiguos pobladores de la capitanía general de Maynas, territorios que fueron colonizados por europeos que subieron por el amazonas.

... manifiesto mi rechazo rotundo a las acciones tomadas por este gobierno y, por supuesto, a su ineptitud e incapacidad moral para dirigirnos.

... yo no elegí a Alan, y ni él ni su partido me representan.

... el mal menor... creo que no era tan menor como muchos pensabamos.

... es todo.

30 mayo 2009

Multitouch Barcelona... HI

Gracias al amigo @gonmipaa pude ver este simpático video...


Hi from Multitouch Barcelona on Vimeo.

Página falsa del Scotiabank...

El día de ayer me di con una ingrata sorpresa. Mi PC se encontraba con una especie de Xploit que simulaba la página del Scotiabank. A continuación les presento algunas imágenes de esta web falsa.


Presten atención al campo adicional... nuestros amigos de Scotiabank NUNCA nos pedirán ingresar la 2da clave desde el inicio.

Ingresé un número de tarjeta cualquiera...Este fue el mensaje que recibí.


Revisé mi archivo host ubicado en C:\WINDOWS\system32\drivers\etc. Encontré que había sido alterado con los siguientes datos:


216.246.79.163 www.viabcp.com
216.246.79.163 viabcp.com
216.246.79.163 http://viabcp.com
216.246.79.163 www.viabcp.com/zona_publica/01_persona/index.html
216.246.79.163 http://www.viabcp.com/viabcp.com/zona_publica/01_persona/index.html
216.246.79.163 http://viabcp.com
216.246.79.163 www.scotiabank.com.pe
216.246.79.163 scotiabank.com.pe
216.246.79.163 http://www.scotiabank.com.pe/index2.shtml
216.246.79.163 www.banreservas.com.do
216.246.79.163 banreservas.com.do
216.246.79.163 http://www.banreservas.com.do

Tengan cuidado con los archivos adjunts que puedan recibir. Pueden ser troyanos, virus o xplots.

27 abril 2009

Anchored... hermoso y emotivo video

Gracias a Arturo Goga pude ver este hermoso e emotivo video... sobre el mismo cito lo mencionado por Arturo:

Otro corto animado? Así es. Este tenía que ponerlo sí o sí. Se trata del trabajo final de Lindsay Olivares, su tesis para graduarse del Ringling College of Art + Design.

Es una pequeña historia que nos cuenta la historia de un náufrago, y el de su chica, que lo espera en la orilla. Al empezar a escuchar la música, mi sonrisa, que apareció luego de ver la manera impecable que hacía uso del cel-shading y la genial animación de sus personajes, empezó a curvarse hacia abajo, pues no soy muy fan de Mika. Sin embargo, segundos después, la música por fin halló su camino y se pudo notar, finalmente, que es el corto el que gira en torno a ella, y funciona muy bien.

Pero mejor denle un vistazo, son 3 escasos minutos que, les aseguro, disfrutarán:




Armando > Excelente video!!!

25 abril 2009

Trysumerism... pruebas algo y luego lo cambias

Paseando por el amplio mundo de la red encontré el siguiente video en el que Antonella Broglia nos explica sobre el "Trysumerism", que en buen romance es la tendencia, que tienen algunas personas, de probar algo y luego cambiarlo por algo nuevo.

Balzac.tv: Trysumerism

Se colgó mi iPod... ¿qué hago?

Bueno... hoy en la mañana mientra iba a hacer unos trámites prendí el iPod, seleccioné la opción Suffle Songs, apareció la primera canción y allí quedó...

... era la primera vez que me pasaba y no tenia idea de qué hacer, estaba preocupado más aun porque la pantalla se quedó prendida por largo rato y pensé que podría quemarse o algo así...
... sin querer queriendo, y después de probar con varias combinaciones, mantuve presionados tanto el botón central como el botón de Menu por un rato y waláh! Apareció la manzanita... y listo! volvió a la normalidad.

Filtro de objetos con un atributo repetido

Escenario
Se retorna una colección de objetos proveniente de los WebServices y se requiere filtrar, la colección, de forma tal que solo la primera ocurrencia de cada valor atributo repetido quede dentro de la colección. Eliminar los demás duplicados.

Solución 1 - No muy buena
Al principio yo planteé controlar la duplicidad de objetos a través de un flag y una segunda colección de objetos a la cual enviar los objetos. A continuación les pongo mi solución:
List tempCommActions = dataAccessService.getCommercialActions(userLoginId, cic);
List commercialActions = null;
        if (tempCommActions != null)
        {
            commercialActions = new ArrayList();
            boolean flag = true;
            for (int i = 0; i < tempCommActions.size(); i++)
            {
                CommercialAction bean1 = (CommercialAction) tempCommActions.get(i);
                for (int j = 0; j < commercialActions.size(); j++)
                {
                    CommercialAction bean2 = (CommercialAction) commercialActions.get(j);
                    if (bean1.getCampaignCode().equals(bean2.getCampaignCode()))
                    {
                        flag = false;
                        break;
                    }
                }
                if (flag)
                {
                    commercialActions.add(bean1);
                }
            }
        }

Esta solución no termina siendo muy eficiente por la cantidad de objetos que se manejan, además de las reiteradas iteraciones a las listas.

Solución 2 - Mejor
Pero, consultando con uno de mis compañeros... encontramos una mejor manera de implementar esta solución. Para la cual empleamos un iterator para recorrer la lista y un objeto de tipo Set que nos serviría para ir guardando el atributo que comparamos.
        List commercialActions = dataAccessService.getCommercialActions(userLoginId, cic);

        Set visitedCampaignCodes = new HashSet();        
        for (Iterator iterator = commercialActions.iterator(); iterator.hasNext();)
        {
            CommercialAction commercialAction = (CommercialAction) iterator.next();
            if (visitedCampaignCodes.contains(commercialAction.getCampaignCode()))
            {
                iterator.remove();
            }
            else
            {
                visitedCampaignCodes.add(commercialAction.getCampaignCode());
            }
        } 

Genial no? Y eso que mi compañero agregó... "es posible que haya una mejor solución aun". :P

24 abril 2009

Openfire... Mensajería y chat rooms!

Curioseando el día de hoy en busca de cómo implementar un servidor para proveer servicios de mensajería y chat rooms, encontré dos cosas interesantes... la primera, es Openfire. Openfire es un sistema de mensajeria instantánea GPL, hecho en java y que utiliza el protocolo jabber. Es bastante simple de instalar y es fácilmente integrable con clientes de mensajería abiertos, como el caso del Pidgin.

La segunda cosa interesante que encontré como parte del episodio #508 de Hak5, es la instalación del Openfire en 10 minutos que aunque está en Linux nos da una pauta de por dónde va este asunto. Por mi parte, yo probé la instalación en Windows y les aseguro que es fácil y rápida. :D

A continuación les dejo este episodio de Hak5 (en inglés).

Thanks Hak5 for this espisode!!! :D

23 abril 2009

Un nuevo nombre...

Empleé el título de "1x1 de Armando" en alusión a conversaciones que sosteníamos con algunos amigos y en los que señalábamos que, al irnos de casa para llevar una vida más independiente, a veces empezamos en cuartitos chicos... ¿te imaginas tener en casa una habitación de 1 m2? ¿Qué cosas pondrías allí? Bueno, si logras responder dicha pregunta... es más o menos lo que traté de plasmar en este blog.

Como verán ahora mi rincón en la basta red ha cambiado de nombre... quizá porque se ajusta un poco a algo que pasaba cuando era más chico... desarmar cosas (y nunca volverlas a armar)... jajaja...quizá noten un poco de cambios en cuanto a la temática de este blog... pero alli le andaremos.

Saludos a todos... y gracias a aquellos que de alguna forma u otra terminan llegando por acá :D

13 abril 2009

Fin de semana largo...


Y bueno, el fin de semana largo se terminó. Pero fue una buena oportunidad para divertirme, pasear, salir con los amigos y cambiar algunas cosas en mi pc.
Por sugerencia (o diría yo insistencia) de mis amigos Aldo y Andres cambié mi sistema operativo de Windows XP a Ubuntu (ocho punto algo). La experiencia de instalación fue interesante, el wizard me pidió algunos datos y al cabo de un rato ya tenía el Ubuntu instalado en mi PC. El funcionamiento, para alguien que anda Windowmizado, puede tener algunos inconvenientes por el lado de la configuración y más aun, los permisos cuando brindas acceso a otros usuarios. Debo reconocer que la velocidad para ejecutar algunas cosas ha aumentado, sin embargo, aun sigo pataleando con algunas aplicaciones 'substituto', porque no funcionan como yo deseo.

En fin, no me daré pro vencido... lo bueno es que mi familia está siendo paciente en aprender a usar Ubuntu :)

04 abril 2009

IBM Certified Solution Developer - Passed

Y a la segunda fue la vencida... hace poco menos de un mes rendí el Test 829 - IBM WebSphere Portal 6 Application Developer y lo había fallado; asi que lo he vuelto a tomar y lo aprobé :D.

De ahora en más buscaré rendir otris examenes.

11 marzo 2009

[IBM] Celda y Nodo

Dos conceptos que, en ocasiones, solían confundirme cuando configuraba un datasource en WAS eran la Celda (Cell) y el Nodo (Node).
 
Una Celda es un concepto de configuración, una forma en la que el administrador puede agrupar una serie de Nodos.
 
Un Nodo es una agrupación lógica de Servidores Administrados.
 
 
Celda:
Nodo:
 

10 marzo 2009

Generar XML para instalación de portlets y páginas en WPS

Lo primero que se debe hacer es instalar y configurar bien los portlets en nuestro portal de desarrollo. Esto incluye aplicar temas, establecer unique-names, crear etiquetas, páginas, etc.

Luego, ubicar la plantilla correspondiente segun el tipo de XML de instalación que querramos generar dentro de la carpeta <portalserver-dir>\doc del portal. Para este caso emplearemos ExportPortletAndPage para que nuestro instalador se genere incluyendo la estructura de etiquetas y páginas que ha de crear.

Reemplazar con los uniquename de las etiquetas o páginas, segun el caso, y el uid del webmodule, este último tal como el que se encuentra en el archivo portlet.xml del proyecto correspondiente y agregar el atributo export-descendants="true" a los tags que corresponden a las paginas o etiquetas a fin de que se incluyan a las páginas que desciendan de ellas.

<request
xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="PortalConfig_1.4.xsd"
type="export">

<!-- sample for exporting a page with portlet -->
<portal action="locate">
<web-app action="export" uid="pe.apiconz.portlet.SampleProject_pkg1.webmod"/>
<content-node action="export" uniquename="pe.apiconz.page.samplepage1" export-descendants="true"/>

</portal>
</request>


Guardamos la plantilla modificada.

A continuación, ingresamos a la carpeta <portalserver-dir>\bin y ejecutamos el siguiente comando (tomar en cuenta que la plantilla la guardamos en esta misma carpeta):

<portalserver-dir>\bin> xmlaccess -in ExportPortletAndPage.xml -out installPortlets.xml -user wpsadmin -password wpsadmin -url http://localhost:10038/wps/config

Donde xmlaccess es el nombre del utilitario que posee el portal para la generación y ejecución de estos archivos XML, ExportPortletAndPage.xml es el nombre de nuestra plantilla modificado, installPortlets.xml es el nombre que le estamos poniendo a nuestro archivo de instalación que se va a generar; wpsadmin representa, tanto al nombre del usuario administrador y su correspondiente contraseña y en el último parámetro colocamos la ruta de configuración del portal.

A continuación modificamos la ubicación de nuestro WAR a instalar.


<url>file://localhost/$server_root$/installableApps/SampleProject_pkg1.war</url>

En este caso lo estamos configurando para que el WAR lo encuentro dentro del directorio installableApps que se ubica dentro de la carpeta del portal.

Nota: Tomar en consideración que según el ambiente los valores en los campos owner y subjectid podrían variar.
Ejecutar la siguiente linea de comando.
<portalserver-dir>\bin>xmlaccess -in installPortlets.xml -user wpsadmin_desa -password wpsadmin_desa -url http://localhost:10038/wps/config

TIP
Si el portlet application que vamos a instalar no posee múltiples instancias de un mismo portlets en diferentes páginas podemos hacer la siguiente modificación para eliminar y volver a subir el módulo:

Abrir el archivo generado, para este caso installPortlets.xml y agregar la siguiente línea antes de las líneas que corresponden a la instalación:
<web-app action="delete" uid="pe.apiconz.portlet.SampleProject_pkg1.webmod"/>

Con esto nos aseguramos de eliminar la aplicación y así evitar que se quede pegado o que aparezca algun bug en la instalación.

Es importante considerar que para la configuración efectiva para los grupos de usuarios estos deben alinearse con la jerarquía mostrada en http://publib.boulder.ibm.com/infocenter/wpdoc/v6r0/topic/com.ibm.wp.ent.doc/wpf/sec_resources.html y que el archivo de instalación debe corresponder a la versión del portal que se tenga instalado.

23 febrero 2009

Cooperative Portlets (1) - Teoría



Una de las ventajas del portal es la posibilidad de crear nuevo flujos a través de la reutilización de portlets y la posibilidad de enviarse información entre sí. Esto último se hace posible mediante el concepto de Cooperative Portlets.

Cooperative Portlets (Portlets Cooperativos) se refiere a la capacidad que tienen los portlets dentro de una página (o diferentes páginas) para compartir datos entre sí. Los portlets cooperativos pueden reaccionar ante acciones provenientes desde un portlet fuente.

Los portlets cooperativos se suscriben a un modelo de declaración, publicación y compartir información empleando como intermediario al Websphere Portal Property Broker. Los portlets se suscriben al property broker y publican los datos o propiedades a compartir ya sea como proveedor o receptor.
  • El portlet que provee el dato se denomina source portlet.
  • Las propiedades que el source portlet publica se denominan output properties.
  • El portlet que recibe el dato se denomina target portlet.
  • Las propiedades que el target portlet recibe se denominan input properties.
Los portlets cooperativos pueden ser tanto de origen (source), destino (target) o ambos.

Esta caracterísitica es muy útil, por ejemplo podríamos tener el desarrollo inicial de un portlet que busque información de clientes y, posteriormente, podríamos desarrollar portlets que recibiendo el número de documento de identidad muestren resumenes de sus datos u otras operaciones.

Algunos enlaces:
Comunicación entre Portlets - Portlet Wiring
Desarrollo de Portlets de Cooperación
Inter Portlet Communications IPC JSR168

13 febrero 2009

Lima Twestival 2009


Bueno, ayer se llevó a cabo el Lima Twestival 2009, evento organizado por un grupo de 'twitters' de Lima con la finalidad de, además de reunir a la gente que emplea Twitter, juntar la suma de US$1000.00 para apoyar a la ONG Charity:water. Para leer un poco más sobre la organización del evento pueden revisar este post.

Mi experiencia con este evento fue la siguiente: a las 7.45 pm aproximadamente, me encontré haciendo un cola para ingresar al local. Mi sorpresa fue grande cuando encontré a mi pata @yog_sototh. Después de hacer la entrega de mi mini pase impreso en hojas usadas, me dieron un polo y un sticker del evento.

Luego, ingresé al ambiente en el que se encontraba la gente twittera en el que me recibieron dos simpáticas anfitrionas de Telefónica, una de las cuales me regaló un llavero. Buen inicio.

Al cabo de un rato de estar mirando a la gente me senté en una de las mesas y entablé conversación con @mxkro, estudiante de la carrera de Ing. Industrial de la UNI. Pasada media hora después, y tras haber tomado dos revistas DedoMedio que regalaban, llegó el amigo @LocoDiego, quien fue el que me pasó la voz sobre el evento. Él me prestó su laptop para ir twitteando desde el evento.

Se llevaron a cabo varios sorteos de los cuales gané un bolso de Tica (que obviamente regalé a mi hermana) y una caricaturización por parte de la gente de PeruCartoon.

En líneas generales el evento estuvo bastante bueno, fue ameno, la gente chongueó harto e incluso se llegó a transmitir en vivo. Lo únco malo fue que no se logró llegar a la meta de los US$ 1000.00, tan solo se recaudó US$ 616.00. Esperemos que la próxima ocasión si se llegue.

Bueno, por el momento esto es todo, en los proximos días estaré posteando las fotos y videos que se tomaron durante el evento.















Lima Twestival 2009

Lima Twestival 09 por The_Ghost
Lima Twestival 2009 por Arturo Puente



Enlaces relacionados:
12/02 Primer Festival Twitter: Twestival en Lima (RPP) - video
12/02 Primer Festival Twitter: Twestival en Lima (RPP) - fotos

23 enero 2009

Tuneando WebSphere Portal 6.1 para desarrollo

Mientras instalaba el WebSphere Portal Server 6.1 en mi PC, encontré una tarea que se puede ejecutar inmediatamente después de la instalación y que permite mejorar el rendimiento del portal. Esta tarea no se debe ejecutar en un ambiente de producción, sino exclusivamente para desarrollo.

06 enero 2009

Resolviendo el error "Unsupported major.minor version 49.0"

El día de hoy mientras intentaba correr una pequeña aplicación Java me salió el siguiente error:

Unsupported major.minor version 49.0

Al principio pensé que el error se debía a algun tema de lógica o del servidor, sin embargo, luego supe que este error se debía a que se intentó correr una clase compilada con JDK 1.5 en un ambiente JRE 1.4, el cuál fue el que dió el error. Esto se da por motivo de las nuevas características introducidas en la versión más reciente de Java y que no están presentes en la versión anterior.

Para resolver este error tuve que verificar que versión del compilador se está empleando y cambiarla por la más apropiada (en mi caso la tuve que bajar a 1.4).

Acá les dejo un enlace sobre este tema. Resolving the “Unsupported major.minor version 49.0″ Error

04 enero 2009

Feliz Año Nuevo 2009


Bueno, hace unos 3 días que empezamos este nuevo año y desde este rincón de la blogosfera deseo que todos los que leen este blog puedan alcanzar sus metas y objetivos trazados!! :D