domingo, 1 de septiembre de 2013

Retomando Jarhalla.


Si bien ya me lo habían comentado, hace un par de semanas comprobé en carne propia que a Jarhalla-local, le hace falta una feature importante.


Y es que, si bien ahora ya puedo encontrar rápidamente en que jar se encuentra tal o cual clase, no existe manera de saber qué métodos y que constructores tiene la clase que he encontrado.

Y, si, la primera pregunta que te haces es : ¿Para que sería útil esto? ¿En que escenario esto puede ayudar?, seguramente has estado lejos del enterprise .... ¡¡¡suertudote!!!


Cuando se realizan despliegues de aplicaciones empresariales, es común que, por definición, los servidores de aplicaciones traigan ya sus propias versiones de ciertos jars; y, también es común que, mientras tu desarrollas, uses los propios; si bien, maven, gradle y demás herramientas de gestión de ciclo de construcción, intentan evitar conflictos (JA!), a veces... y sólo a veces: las cosas no salen de una manera tan sencilla.

Un escenario común es que, una clase este repetida en varios jars, y, que al menos uno de esos jars sea de un versión inferior a la que tu usas, y en consecuencia, si ese jar se ha cargado primero, el método o constructor que tu usas no se va a poder encontrar y en consecuencia.... alcanzas una bonita excepción.
^.^

Lo que suele hacerse en estos casos es , buscar todos los jars que pueden tener esa clase afortunadamente ya tienes a Jarhalla-local para que te ayude ;)- , y localizando los jars, te quedan dos opciones:

  • Revisas el META-INF, localizas la versión del jar, buscas el javadoc y validas que esa versión tenga el método/constructor que requieres.
  • Dices que lo anterior genera poca testosterona, y prefieres usar un decompilador, recuperas el código de esa clase y ... validas exactamente lo mismo: que esa versión tenga método/constructor que requieres.

Y aquí es donde entra el sentido de este Post, el porqué de estas líneas :)

La idea es que, próximamente puedas hacer esta comparación desde Jarhalla-local :)

Pero, como sé que, algunos de ustedes son impacientes, voy colocando aquí la manera en que pueden realizarlo:

Requerimos.

  • Un bean para almacenar la información.
  • Una clase para extraer la información.
  • Una clase para probar que funcione.


Bean para almacenar la información:
Clase Para extraer la información:
Test:

Esto debe generarnos una salida como la siguiente:
Lograr esto requiere únicamente hacer uso del api de reflexión, qué, como pueden ver, no es tan complicada como solemos creer ^.^

Buen inicio de semana a todos.
---
RuGI

Para saber más de Jarhalla-local:




martes, 16 de abril de 2013

El efecto campechano



"Aprende algo de todo y, todo de algo"
Leído en algún blog.

Tacos.

Cualquiera que conozca la ciudad de México, sabe bien que, de las primeras unidades de conocimiento que debe conocer es la de la comida (no hacerlo pone en riesgo su integridad sanitaria)

México, y por ende, la ciudad de México tiene una gastronomía muy diversa, dicha gastronomía tiene entre todos sus protagonistas, un item que sin lugar a dudas es símbolo en varios sentidos de lo que significa comer en este país.

Y me refiero por supuesto a los tacos.

El integrante principal de la vitamina T de los mexicanos (tacos, tostadas, tlacoyos, tamales, tlayudas), es tan importante en la vida diaria de este país que, hasta oda, y poema tiene ^.^

Existen muchos tipos de tacos, según Silva Ibarra <<Los tacos se agrupan según su modo de confección, el tipo de elementos que lo componen o la tradición con que se denominan en su lugar de origen.>>

Por su parte Eugenio V.Z en su post Tacos Mexicanos y sus recetas, nos introduce al tipo de taco que me interesa comentar:

<<Tacos campechanos.  Se suele usar el termino Campechano (de alegre surtido o variedad), para indicar que el taco lleva varios tipos de corte de carne.>> [1]


Surtida o Campechano.


Si bien de origen la palabra campechano viene de la población del Estado de Campeche y, según "muy interesante" lo define como "afable",  en cuanto la palabra pasa al dominio de los tacos, ésta se convierte en "combinar", "unir", "mezclar", y, justamente de ahí, da brincos subsecuentes a otros dominios.

De hecho, la 10a acepción de campechano, por la real academia menciona:

10. f. Méx. Otra mezcla, sobre todo en comidas.

Traspaso de dominio.

Antes de continuar, quisiera desarrollar un concepto que creo importante para avanzar con estas divagaciones campechanas.

Pensemos en un momento en el concepto de honesto, y sin ánimo de llegar a divagaciones morales, quedémonos con la 1a acepción: 


"La honestidad es una cualidad humana que consiste en actuar de acuerdo a como se piensa y se siente"


Si bien, es una palabra usada para calificar algo en el dominio de lo humano, poco a poco a sido entrando a otros dominios.

"Es un vino honesto", "Esa pintura es honesta", "la construcción de esta pequeña cabaña es honesta".
A este tipo de "intercambios de contexto" algunos libros lo denominan "traspaso de dominio".

Si bien cuando algún sommelier  dice "es un vino honesto", puede que no tengamos una idea concreta de a qué se refiere, pero, dado nuestro concepto en el dominio de lo humano, hace que "entendamos" a que se refiere, o al menos, tengamos una idea de a qué se refiere.

Algo así ha ocurrido con "lo campechano", si bien su dominio más conocido (al menos para mí), son los tacos, poco a poco a invadido otros dominios, uno de ellos: las habilidades y las acciones de una persona.

Ejemplos:
- ¿Yo? aquí campechaneando el tiempo entre la oficina y sus clases de cocina.
- ¿Lenguaje principal? java; pero, en los últimos 2 coderetreat me la pase campechaneando con ruby y python.

El efecto campechano..

Y, justo en este punto, podemos ya hablar, de lo que llamo: "El efecto campechano." o, en términos más entendibles: el efecto de combinar dominios, o en otras palabras "evocar lo híbrido".

En "El futuro es híbrido" (Alfons Cornella, Infonomía. 2008), ya se hablaba del  futuro de lo híbrido  incluso, me atrevo a decir que, el artículo se adelantaba a su tiempo, previendo el tema de las tablets.

Con ejemplos concretos se comentaba las virtudes de unir disciplinas distintas y, hacer surgir nuevas a partir de lo que el autor llama: "maridaje fértil"

Reproduzco una parte del artículo: 
<<Pero inventar nuevos espacios no es tarea fácil, porque los investigadores tienen hoy más incentivos en “quedarse” (yo diría “estacionarse”) en campos ya maduros, estables, conocidos, que en aventurarse en nuevas áreas, incógnitas. La ciencia fracasará, traicionará uno de sus principios básicos, “ir más allá”, si no consigue sacar a sus miembros del acomodo. Hoy, la señal que reciben muchos científicos jóvenes en nuestro país (que no en otros) es que para progresar en su carrera es mejor que se dediquen a un área bien establecida, y no se aventuren a inventar “nuevas ciencias”.>>

Y continúa:
<< Para conseguir la hibridación, hay una clave crítica: personas que se interesen por diversos campos simultáneamente. Personas que tengan un pie en cada disciplina, que conozcan ambas, que sean respetados por los dos lados, y que mariden ideas de una forma que sólo el que bebe de ambas puede intuir. Porque de nuestra voluntad y capacidad de conectar comunidades de científicos generalmente aisladas en sus ideas y desarrollos (en la “cómoda” endogamia del conocimiento reduccionista) puede depender el futuro de nuestra economía, nuestra capacidad de generar riqueza.>>

Y, en nuestra área, las TI.... ¿Que está ocurriendo ahora mismo?

Lo que hay.


Si has llegado hasta acá, seguramente ya estarás barajeando equivalentes híbridos en nuestras mentes de TI;.


  • Programadores que diseñan.
  • Diseñadores que programan.
  • Teorizar sobre la psicología de las computadoras.
  • Y, por supuesto, algo que ya conocemos bien: los DevOp's[2]




http://en.wikipedia.org/wiki/File:Devops.svg

DevOps según la wikipedia.

Lo que viene.

Cerramos este post con un texto que, en lo particular, siempre me ha gustado.
Sigo pensando que, si bien comulgo con la frase que abre este post, también me siento identificado con la naturaleza de diversificación de este texto de R.A. Heinlein.

Un ser humano debería ser capaz de cambiar un pañal, planear una invasión, despiezar un cerdo, dirigir un barco, diseñar un edificio, escribir un soneto, cuadrar cuentas, levantar una pared, encajar un hueso, confortar a un moribundo, obedecer órdenes, dar órdenes, cooperar, actuar en solitario, resolver ecuaciones, analizar un problema nuevo, amontonar estiércol, programar un ordenador, cocinar una buena comida, pelear eficientemente, morir con galantería. 
La especialización es para los insectos. 
Del autor de Starship Troopers, Robert Anson Heinlein.

¿Cual es el secreto de Hulk? Estar siempre enojado.
¿Cuál es el secreto de los scouts? Estar siempre listos.
¿Cuál será el secreto para mantenerse vigente en TI? Campechanear  ;)

¡¡ Buena semana a todos !!

----
RuGI

[1]Puedes conocer aún más tipos de tacos en un artículo de la revista Algarabía. 10 tipos de tacos.
[2]InfoQ tiene toda una sección sobre este tema.
Update 25/04/2013
Justo ahora se publica una tacografía del país ^.^