sábado, 24 de octubre de 2015

Mi Viaje



No logro recordar cual fue mi primer viaje, debió ser muy bueno pienso hoy, por estas ganas de viajar, conocer, descubrir y entender el planeta en que vivimos. Recuerdo que desde pequeño mi único sueño siempre fue ser futbolista, poder jugar en muchos países y ganarle a muchas personas de diferentes lugares. Viajar y poder compartir con personas diferentes a mi cultura ha sido un deseo presente desde muy pequeño, pero, ha que se debe? Porque me gusta salir y ver que hay detrás del horizonte, si todo es tan bueno y cómodo donde me encuentro?

He conocido muchas personas durante mis anos de vida, ciertamente he podido visitar muchos lugares y me he descubierto en muchas situaciones que jamas pensé podrían sucederme. He ahi lo bonito, la SORPRESA, la AVENTURA y el no poder controlar que puede pasar cuando te bajas de un avión, cuando decides salir y ver de que esta hecho el mundo, cuando decides que nada es suficiente y te llenas de esta energía que pareciera puede hacerte encontrar con los deseos y pensamientos mas profundos de tu ser.

Así fue como me encontré un día en un viaje de negocios, muy emocionado por tener la posibilidad de visitar aquella ciudad llena de tecnología, personas importantes (por lo menos para mi) y grandes ideas moviendo cantidades de dinero que jamas voy a poder contar. Que descubrí algo en mi había cambiado, no se si fue por la diferencia horaria, por el descontrol de las comidas o por que ya no me sentía igual, algo había cambiado y ya no podría volver a ser el mismo. Ya nada era igual, todo parecía tener otra importancia, yo lo defino como encontrar esa energía que al parecer dejamos en otro viaje, esa energía que había estado esperando por nosotros para hacernos mejores o simplemente para recordarnos que somos tan pequeños que debemos esforzarnos porque aun nos queda mucha energía mas por recoger.

Sin importar el motivo o la razón, porque simplemente no las hay, en ese viaje encontré la energía que cambio mi forma de ver el mundo, me hizo mas centrado, me hizo mas humano, mas frágil, mas vulnerable y bueno me hizo mas cálido. Es difícil explicar con palabras cosas que no entendemos, pero que percibimos cuando una mirada al cielo ya no significa lo mismo, cuando los sentimientos ya no se pueden controlar o cuando tus emociones son tan fuertes que no tiene sentido tratar de ocultarlas.

Creo fuertemente que el único motivo por el que estamos en este planeta es para tratar de recolectar la mayor cantidad de energía posible, ser mejores personas, disfrutar al máximo de cada una de las personas con las que nos topamos y de recordar que no somos lo suficientemente fuertes como para vivir todas las experiencias que este mundo tiene para nosotros, pero ciertamente somos lo suficientemente curiosos para tratar de que las experiencias que podamos vivir sean las mejores.

Siento tristeza por esas personas que trabajan para comprar cosas y decirle al mundo que tienen el ultimo celular, el ultimo carro o la casa mas grande del vecindario. Porque no hay dinero, casa o bien que puedas cambiar comparado con el recuerdo de un atardecer sobre una tabla de surf, nadando junto a un pelicano, simplemente disfrutando de lo magnifico que es parar y observar el hermoso planeta donde nos encontramos. Pero al final, respeto cada una de sus decisiones, todos encontramos diferentes tipos de motivaciones, en diferentes tipos de situaciones. YO por el momento continuare viajando y disfrutando de este hermoso planeta que me toco vivir.


Buen viaje y espero encontrármelos pronto en otra parada de esto que llamamos vida. Un abrazo!!

sábado, 6 de junio de 2015

Y que tal China?

Hace ya dos meses que estoy viviendo en China y mis amigos siempre me preguntan, Y que tal China? Ya te acostumbraste? Que has visto raro?. Bueno, no creo poder responder en este post todas esas preguntas, pero intentare contarles algunas cosas curiosas, concejos por si piensan venir a visitar este hermoso país y alguna otra cosa que se me venga a la cabeza mientras escribo este post.

Lo primero que deben saber es que China tiene dos estados especiales, Hong Kong y Macau, los cuales no piden visa para los colombianos, con el pasaporte pueden venir y visitar estas ciudades. Son llamados estados especiales porque hacen parte de China, pero su política, organización y leyes son independientes de China (Si quiere saber más puede ir a WikiPedia). Por tanto les permite a estas ciudades tener su propia moneda, legislación, reglas, etc.

Lo segundo que debe saber es que China es inmensa y en este post solo están incluidas las reflexiones de un ingeniero viviendo en Shenzhen, una ciudad costera, cercana a Hong Kong y de la que todos dicen es la nueva ciudad Tecnológica de China. Por tanto, puede que lo que me pase a mí acá, sea diferente en el norte, en el centro o en la capital. Pero de lo que si podemos estar seguros, es que nunca están de más algunos concejos.

Consejos


Voy a tratar de enumerar todas las cosas que yo haría en estos momentos si tuviera que venir a vivir a China (Puede ser vacaciones también):

  • Aproveche el aeropuerto y compré la simcard para el celular donde hablen inglés, si es en uno de los estados especiales mucho mejor. Así no tiene restricciones de red.
  •   Descargue con anterioridad el diccionario de Chino Tradicional de Google, te puede salvar la vida en muchas ocasiones.
  • Si tiene la posibilidad, pida que le escriban todas las direcciones en Mandarín, si usted está llegando no le interesa saber para donde va, igual, va más perdido que Pachito Santos buscando la alcaldía de Bogotá.
  • Google y nada relacionado con Google funcionará en China (En los estados especiales si funciona) por lo que debe prepararse, guarde los mapas, nombres, direcciones, TODO!
  • Cosas que deberían empacar si van a vivir acá un tiempo: Medicina general, productos de aseo personal y bloqueador solar. Muchos de estos son más baratos en Colombia y siempre es mejor tomar medicina conocida.
  • Tómele foto a todo lo que vaya a buscar, siempre es más fácil pedir ayuda con una foto que a punta de señas. CREANME!
  • Al igual que en todo el mundo, siempre hay gente que quiere aprovecharse de los turistas, no tome el primer taxi que le ofrezcan, no compre el primer producto que vea, no importa lo barato que le parezca. Conozca, camine y compare precios.


Espero estos 7 concejos les sirvan de ayuda en algún momento, pero no solo quiero contarles que hacer para hacer más fácil su estadía, quiero hacer un resumen de las cosas que me gustan y de las que no, por si está pensando que tan difícil es la adaptación.

Me Gusta


  • La organización de todo, acá todo es por cantidades grandes, no se miden a la hora de hacer algo, si hay que hacerlo grande, así se hará.
  • El transporte es muy bueno y tiene muchas opciones, el metro, buses, motocicletas eléctricas, bicicleta. Todos conviven por lo menos en esta ciudad.
  • La comida es deliciosa, personalmente me gusta mucho la combinación de sabores, esencias, raíces, hongos. Estoy muy a gusto con la variedad que se encuentra en China.
  • TODO es muy barato para los extranjeros,  la comida es increíblemente barata, el transporte, los electrodomésticos, cosas de fábrica, etc. Si eres extranjero y te vas a ganar más de 15.000 rmb al mes, puedes vivir tranquilo, tengan en cuenta que el salario promedio para alguien local es de 5.000 rmb
  • Los 100MB que tengo de conexión a Internet, que aunque no es constante en esa velocidad, sigue siendo mucho más de lo que tenía en Colombia.

No Me Gusta


  • Si usted ha estado en Cartagena, estos taxistas que se la pasan pitando cada 3 segundos por todo, pues acá son las motocicletas eléctricas, que hacen la vez de transporte público informal. Juro, que he estado a punto de bajar un chino de esos y meterle sus buenas puñaladas. (Upps se me salió el ñero interno)
  • Hay una costumbre entre los Chinos (la leí por ahí) sobre no dejar malas energías en el cuerpo, por lo que ellos pueden ir caminando, comiendo, haciendo fila, en el bus, donde sea y sacan terrible gargajo y al piso. No tengo más comentarios para esto!
  • El olor a cigarrillo, China puede ser el país que más cigarrillos consume en el mundo, es horrible ver todos los días como te contaminan el espacio con este desagradable olor.
  • Los padres y abuelos tienen demasiado poder sobre la vida de sus hijos, es simplemente injusto que ellos decidan por la vida de otros, y esto hace que la vida acá se base mucho en que me vas a ofrecer ($$$$) y que me puedes dar ($$$$)



Espero haya sido de tu agrado este post, que te sirva para algo en algún momento de tú vida, y si no es así que por lo menos lo encuentres divertido. Ya saben, si les gusta el ajo, el jengibre, la salsa de soya, el arroz, no tienes problema con los malos olores, piensas que cuando toca…toca y estás listo para saber el significado de “Muéstrame lo que tienes en el banco y te diré quién eres”  por acá los espero. Saludos a todos y no olviden dejar sus comentarios, sigan la página de YouTube e Instagram.

sábado, 9 de mayo de 2015

Maitang!! Que en mandarín significa "La Cuenta"

Recuerdan cual fue la primera incógnita que tuve sobre China?. Pues, no paso mucho tiempo antes de que pudiera descubrirlo con mis propios ojos. Aquí está la prueba fehaciente de que si comen perro, pero no es como me lo contaron en Colombia, no. Son perros de criadero, alimentados adecuadamente y tratados con la mayor limpieza posible, o por lo menos eso me dijeron mis amigos. Si lo vemos sin morbo, es lo mismo que hacen en Pasto para comer Cuy.



A decir verdad es bien fuerte cuando lo ves con tus propios ojos, pero seguramente debe saber delicioso, porque a diferencia de todo lo que me dijeron sobre la comida China. Estoy impresionado con su cocina, sus sabores, sus olo…bueno no, con esos no. Pero la comida es una de las cosas que más adoro de este viaje, he comido como rey durante cada uno de los días de mi estancia. Para los que no saben, hace más de 6 meses decidí no volver a comer carnes rojas, mi alimentación es a base de verduras, arroces, pastas (noodles), granos, etc.

Por eso cuando decidí venir a China pensé que iba a pasar muchos trabajos para poder alimentarme adecuadamente, para mi sorpresa es supremamente fácil, delicioso y barato. No he podido saber cuántas clases de Champiñones me he comido, pero les aseguro que todo lo que me he comido ha sido EXQUISITO. Y si eres de las personas que disfruta el picante, te vas a enamorar de la comida China.

Por todas estas razones el día de hoy quiero compartir con ustedes algunos de los platos que he podido disfrutar en este hermoso país y algunos de los platos que he aprendido a hacer. Sí, cuando se vive solo y te gusta comer bien, se aprende a disfrutar de la cocina y de las sorpresas que te puedes llevar cuando tienes tiempo para aprender cosas nuevas. Aquí vamos

Noodles Picantes

Esta delicia de plato contiene Noodles (pasta), lechuga, Champiñones y una salsa poco picante para ellos, pero es una locura para mí. NO SABE lo delicioso que es comer esto y finalizar con una paleta de Chocolate. INSAME!!!

Noodles Vegetarianos

Este plato contiene Noodles, 2 clases de Champiñones, lechuga y se acostumbra a colocarle algo de salsa de Soya.

Carta del restaurante

No todos tiene la foto de todos los platos, en estos casos toca como pedir lo que tiene foto, porque que miedo.

Chao Fan Vegetariano

Este fue el primer plato que aprendí a hacer. Es realmente fácil de hacer, pero aún no logro que me quede como el que ellos hacen, eso no significa que no me quede delicioso.

Cerveza

Esta cerveza me la encontré en un restaurante, acompañar la comida con una cerveza es una delicia cuando la ciudad vive a unos 30º centigrados constantes.

Banquete

Es muy común que se pidan varios platos y se comparta entre todos, en algunos restaurantes el centro es de vidrio y gira para poder tener acceso a todos los platos. Les debo el nombre de todos esos platos.


Pero toda historia tiene su parte mala, ha sido muy complicado tratar de comer o aventurarse a sitios desconocidos por el inconveniente del lenguaje. El otro día pase 20 minutos tratando de explicarle a la señorita cajera que solo quería un Chao Fan y un Té verde con limón, lo que yo no entendía es que ella estaba tratando incansablemente de explicarme que está bien, que me lo iba a dar, pero debía pagarle 25rmb por la comida. Fue bastante estúpido cuando ella finalmente escribió el 25 en un papel, después de 20 minutos solo me reí. Pero situaciones como estas son muy normales cuando de pedir comida se trata.

Pero a favor de los restaurantes, la mayoría tiene imágenes en la carta de cada plato que sirven. Con lo que puedes ver más o menos que te van a servir, para mi desgracia, la carne y los vegetales son preparados y presentados casi que de la misma manera. Por lo que es complicado saber si lo que me van a servir tiene o no carne; pero ya me aprendí el símbolo de la carne, con esto me aseguraré que no voy a comer carne de res por ahora.

Esto fue todo por el momento, espero les guste lo poco que puedo compartirles, si tienen preguntas o desean saber algo que yo pueda sacarlos de la duda, solo déjenme un comentario y con gusto trataré de sacarlos de la duda. Gracias por leerme y como los Chinos no son todo lo que dicen de ellos, acá si hay mascotas, si hay perros y no a todos se los comen. Feliz fin de semana y sigan sonriendo.




lunes, 27 de abril de 2015

Welcome to China!

Comerán perro?! – Esa fue mi primera incógnita cuando decidí venir a vivir a China, son muchos los mitos que escuchamos o leemos, pero que muy pocos pueden ver con sus propios ojos. Y bien pues, aquí empieza la documentación de mis experiencias en La Republica de China, las cuales no son más que párrafos que contienen anécdotas, cosas graciosas y eventos que deseo compartir con mis amigos y obviamente con ustedes, los que están leyendo.

El viaje desde Colombia fue tormentoso en el preámbulo, pues me cancelaron el vuelo y tuve que esperar hasta el otro día para poder viajar, una hora de Cali a Bogotá, 6 horas y 30 minutos de Bogotá a New York y finalmente 16 horas de New York a Hong Kong. Sinceramente estaba aterrado de lo largo del viaje, ya había viajado de Medellín a San Francisco y fueron cerca de 12 horas en las cuales no me quedaron ganas de volver a subirme a un avión.

Era mi primer viaje a Asia y no tenía idea con quien viajaría, en la sala de espera me topé con musulmanes, ingleses, turcos, ucranianos y por supuesto chinos. Me tocaba la silla 78B en un avión que tiene tres localidades por fila, con 3 puestos a cada lado y 4 en el centro. Calculen la cantidad de gente tan espantosa que iba en ese avión. Y entre todas esas personas iba un colombiano, más lleno de nostalgias, recuerdos y necesidades, que de expectativas.

Me tocó compartir el puesto con un chino y una china, y adivinen quien iba en la mitad?. El viaje realmente fue mucho más cómodo de lo que esperaba, había recomendado que me dieran menú vegetariano, pero en el retraso de vuelo, se les olvido y no lo incluyeron. Por lo que entre las opciones del Menú me toco experimentar mi primer encuentro con la comida China. Llegando a Hong Kong nos dan el desayuno el cual incluía Pan, Queso, Mantequilla, Helado, Yogurt y una sopa con granos blancos y raíces verdes. Para no entrar en detalles, el Yogurt era delicioso y el pan me lleno lo suficiente como para no tener que repetir el sabor de la sopa. China 1 – Fabián 0.

Al bajarme del avión fue la primera vez que realmente sentí que lo que estaba haciendo era algo de lo que me iba acordar toda mi vida, sensación que me lleno de una alegría equivalente a cuando te dicen “Amor, me llegó”, esa sensación que te abre el mundo a una cantidad de oportunidades y planes por realizar. Y fue en el aeropuerto de Hong Kong que extrañe la primera cosa de Colombia. Saben que en Colombia suelen o ser muy amables o ser muy descorteces, pues en Hong Kong no pude sentir ninguna de las dos, era un estado desabrido de sentimientos donde la gente me ayudaba pero no expresaban ningún sentimiento, ni emoción, lo que realmente fue bastante extraño para mí.

Después estar viajando cerca de dos días, debía esperar en el aeropuerto de Hong Kong dos horas para abordar un Ferry que me llevaría a Shekou-Shenzhen mi destino final. Aquí fue donde me enteré que Hong Kong es una especie de Zona Franca con autonomía para hacer sus propias leyes, pero sigue siendo parte de China. Si lo llevamos a Colombia sería como una Medellín que logro su objetivo ( Los quiero parceros J ). Con esto claro, en Hong Kong tienen una moneda diferente a la de China, por lo que debí cambiar Dólares a Dólares Hong Kong y Dólares a Renminbi (rmb). Bastante información para solo unas horas después de terrible viaje.

Al final después de esperar y disfrutar de un Internet sin restricciones llego mi Ferry y parto camino a Shenzhen con más expectativas que recuerdos, el viaje en este barco me cambio la idea de porque estaba en China, estaba lleno de curiosidad, alegría y satisfacción de poder lograr uno de mis sueños y disfrutar de esta aventura que apenas comenzaba.



Llegando al puerto en Shenzhen me encuentro con un clima soleado y de brisa fría que me hace sentir muy cómodo, contento y agradecido de tan agradable día, sonriendo me dirijo a la aduana, entrego papeles, sello y oficialmente Welcome to China. Sensación que no duró más de 5 minutos hasta que tuve que enfrentarme con el señor Taxista, y aquí China toma ventaja, China 2 – Fabián 0.

Hasta este momento todos hablaban inglés, pero resulta ser que no todos lo hacen en la ciudad, el señor taxista no entiende mi desesperada comunicación corporal por decirle que no se preocupe que tengo la dirección escrita, me mira fijamente y me dice que no le haga perder más tiempo que me baje del Taxi; mientras angustiosamente intento encontrar el papel donde me habían apuntado la dirección del hotel; Finalmente la encontré, el señor taxista me mira de nuevo y me dice con un hermoso “ahhmmmm” que todo está bien y me va llevar.

Las primeras imágenes de la ciudad me dejaron increíblemente sorprendido, esperaba mucho menos de lo que realmente es la ciudad, edificios gigantes por todos lados, un centro comercial cada 3 o 4 cuadras, un sistema de transporte muy organizado, metro, calles impecables, muchas bicicletas, motos eléctricas y una cantidad inexplicable de autos de gama alta, Jaguar, Ferrari, Audi, Maserati, Porche, Mercedez y Tesla por todos lados, definitivamente esta ciudad me iba a gustar mucho.

Finalmente logró llegar al hotel, entrar a mi habitación y descansar mis maletas, el idioma corporal me fue de mayor ayuda que el inglés en estos momentos. Pero al ver la ciudad, los edificios, las oportunidades, experiencias y aventuras que me esperaban por la ventana de mi habitación de hotel, se me llena el corazón de calor, energía y adrenalina por descubrir esta hermosa cultura que por años me ha sido tan distante y llena de mitos. China 2 – Fabián 1.


Esta fue la primera parte de lo que espero sean muchas más historias por contar, no tengo acceso a Facebook normalmente, después hablaré más en detalle sobre ese tema, pero por el momento les puedo decir que WhatsApp si funciona, tengo el mismo número, la diferencia horaria es de 13 horas y si en algún momento piensan venir a China, estén atentos a mis posts que van a encontrar concejos que les van ayudar a que la adaptación no sea tan larga.

Good bye from China


miércoles, 7 de enero de 2015

El día que mi algoritmo dejo de sonreír

Se habrán dado cuenta que todos mis posts eran referentes a tecnología, como hacer algo con MarkLogic, NodeJS, Roxy, etc. Este post no va ser de nada tecnológico, este va ser mi primer post personal, el cual espero les agrade y les sirva tanto como los otros que he publicado. 

HE RENUNCIADO!, dos palabras que pensé nunca iba a tener que decir en la empresa a la cual estaba vinculado. Todo siempre fue tan cool, tan nuevo, tan emocionante que había pensado que sí algún día me retiraba, sería para dedicarme a proyectos personales. Pero, sin querer sonar pretensioso, han sido las dos palabras más emocionantes de mis últimos 6 meses. 

Todos siempre soñamos con ser/hacer algo, mi sueño era ser Arquitecto de Software de una empresa americana. Bueno, yo sé, pero que podemos hacer si nos educan para pensar que los americanos son los más inteligentes del mundo. Pasando por alto eso, cuando vi la oportunidad de lograr mi sueño, trabaje muy duro por conseguirlo y creo que después de todo disfrute el camino recorrido para lograrlo. 

El camino me llevo a conocer a personas increíbles, inteligentes, parranderas, vagas, descaradas, alegres, divertidas, pero sin duda alguna me hizo mejorar como persona y profesional, que al final es lo que la mayoría estamos buscando. Sin embargo este camino no solo me permitió mejorar, si les contará el día que ella entro por la puerta para presentar una entrevista y desde ese momento mi vida fue una locura, me dirán que tengo que hacer un libro, pero bueno esa es otra historia, con todo eso y más, hoy estoy muy contento de haber escogido este camino y de haberlo disfrutado con todas las personas con las que me cruce.

Hoy cuando me siento feliz de decir RENUNCIO, esto no es lo que quiero para mi, esto no es lo que quiero hacer cada uno de mis días. Sin duda alguna agradezco a cada uno de mis viajes por haberme abierto la mente y ayudarme a tomar esta decisión que muchos dicen es una locura. Dejar un trabajo con un muy buen salario, buen cargo, en una buena ciudad y con un buen clima laboral. Lo gracioso de todo es que aunque me dicen que es una locura, todos coinciden en que les encantaría poder hacer lo mismo.

Creo que en una corta conclusion podríamos decir que estoy feliz de poder hacer lo que siempre quise, seguir mis ideales e ir tras mis sueños sin sentir ese apego al dinero y a la famosa "Estabilidad" que muchos suelen perseguir.

Gracias a todos por leer mis posts, por comentar, no prometo que seguiré subiendo posts sobre tecnología, pero sin duda seguiré publicando de vez en cuando cualquier cosa que me encuentre en esta nueva aventura. 

Un abrazo y sean felices!

miércoles, 3 de diciembre de 2014

MarkLogic - Test Unitarios con Roxy


Test Unitarios con Roxy

La industria del software cada día necesita entregar más prototipos, en menos tiempo con mayor calidad. Pero si nos detenemos a pensar en esto, la primera impresión es que algo estamos haciendo mal o no estamos usando las herramientas correctas para hacerlo. Para no entrar en discusiones, YO voy a decir que siempre podemos encontrar y aprender la manera de hacer algo mucho mejor de lo que actualmente es. 

De acuerdo con lo anterior y en inspiración de mejorar los procesos de desarrollo de aplicaciones realizadas con MarkLogic, he decidido realizar este post sobre como realizar Test Unitarios con Roxy para ayudar a mejorar los procesos de integración, permitiendo encontrar problemas de sintaxis, casting o permisos de manera más rápida y controlada en los servidores de los clientes. Digo servidores de los clientes, porque en nuestros ambientes ya deberíamos estar haciendo esto. 

Ahora que ya estamos en contexto, para poder entender este post vas a necesitar saber sobre:

  1. MarkLogic
  2. Roxy - Más info aquí
  3. XQuery

Configurando Roxy


Lo primero que debemos hacer para iniciar es descargar el código de Roxy desde el repositorio. Esto lo pueden realizar con git o descargando el zip desde github. Una vez tengan el código, debemos crear una aplicación desde la linea de comandos usando el siguiente comando:
./ml init app-name --server-version=7 --app-type=rest
Para windows
ml.bat init app-name --server-version=7 --app-type=rest

Con este comando crearemos una aplicación que se llamará "app-name", que correrá en la version 7 de MarkLogic y que será de tipo "rest". Luego de ejecutar este comando debemos ir a modificar el archivo "build.properties" creado por el framework en la carpeta "deploy". Podemos cambiar las configuraciones que deseemos, pero para este ejemplo nos vamos a enfocar en los siguientes cambios:

  • test-content-db=${app-name}-content-test
  • test-modules-db=${app-name}-modules
  • test-port={ PUERTO DISPONIBLE}

con estos cambios ahora solo resta ejecutar el comando para crear los servidores, bases de datos y forests. Para esto ejecutamos los siguientes comandos:
./ml local bootstrap
./ml local restart
./ml local deploy modules
Para windows
ml.bat local bootstrap
ml.bat local restart
ml.bat local deploy modules
después de ejecutar estos comandos estarán creados los servidores y podrán ingresar a http://localhost:{puerto} para ver la aplicación corriendo.

Creando el primer test unitario


Para crear nuestro primer test unitario vamos a necesitar abrir la carpeta "src" que se encuentra en la raíz de Roxy. En esta carpeta encontraremos 4 carpetas más, a continuación una breve explicación de que es cada una:

  1. App: Es la carpeta donde debemos colocar todos nuestros archivos de XQuery que van a ser usados por el REST para tareas de servidor.
  2. Public: Es la carpeta que contiene todo el front-end de la aplicación, imágenes, javascripts, etc.
  3. Roxy: Es la carpeta que contiene todo el código del Framework
  4. Test: Es la carpeta donde están todos los test unitarios y es la que vamos a usar.
La carpeta de Test tiene una carpeta llamada "suites" la cual tiene una carpeta por cada uno de los tests que deseemos correr en la aplicación, por tanto vamos a crear una carpeta llamada "Mi Primer Test" dentro de la carpeta "suites" (/src/test/suites/). Dentro de esa carpeta vamos a crear un archivo llamado "primer-test.xqy", el cual tendrá el siguiente código:

xquery version "1.0-ml";
import module namespace p = "http://yuxipacific.com/models/project" at "/app/models/project.xqy";
p:create("/project/test.xml","Test 1", "fabian@hotmail.com", "document.docx",("test","unit"))
;
import module namespace test="http://marklogic.com/roxy/test-helper" at "/test/test-helper.xqy";
test:assert-exists(fn:doc("/project/test.xml")/name[.= 'Test 1']),
test:assert-exists(fn:doc("/project/test.xml")/users/user[.= 'fabian@hotmail.com']),
test:assert-exists(fn:doc("/project/test.xml")/files/file[.= 'document.docx']),
test:assert-exists(fn:doc("/project/test.xml")/tags/tag[.= 'test']),
test:assert-exists(fn:doc("/project/test.xml")/tags/tag[.= 'unit'])

Como pueden ver en el código anterior tenemos un script de XQuery que esta ejecutando dos transacciones. En MarkLogic cuando se encuentra un ";", hace referencia a separación de transacciones, por lo que el anterior código ejecutará la primera parte en una transacción y la siguiente en una transacción posterior a la primera. Lo que nos permite poder ver en la Base de Datos los cambios realizados en la primera transacción.

Ahora bien, el código de la primera transacción esta importando un modulo llamado project, el cual posteriormente es usado para llamar la función "create" a la cual se le pasan unos parámetros para su correcta ejecución. En la segunda transacción se importa el modulo de test de Roxy y se realizan unos asserts que verificarán sí lo que se le pase como parámetro existe o no. Para este ejemplo, la primera transacción ha creado un documento en la Base de Datos, que en la segunda transacción verificamos haya sido creado y contenta cada uno de los elementos que deben haber quedado guardados en el XML.

Con esto ya hemos creado nuestro primer Test Unitario que validará que nuestra función de crear proyectos funcione sin problemas.

Ejecutando las pruebas unitarias


Para poder visualizar la interfaz de Test Unitarios debemos dirigirnos a nuestro entorno con el puerto que definimos anteriormente para el test-port en la sección de Configurando Roxy, la dirección quedaría así "http://localhost:{puerto}/test".  Cuando vayamos a esta dirección debemos encontrar algo como esto.



En esta pantalla podemos seleccionar de la parte derecha los Tests que deseamos ejecutar, podemos seleccionar todos o solo nuestro Test. Luego en la parte inferior o en la parte derecha encontrarán un botón "Run Tests", si presionan ese botón el sistema ejecutará todos los test seleccionados y retornará un success sí todo se ejecutó correctamente, de lo contrarió informará cual fue el error. 

Con esto ya habrán realizado su primer Test Unitario con Roxy, ya pueden jugar con los diferentes tipos de assert que Roxy provee. Para más información sobre los diferentes tipos de Test Unitarios permitidos presionar Aquí 

Conclusión


No importa el tipo de metodología que estemos siguiendo para la creación de nuestras aplicaciones, siempre va ser útil tener procesos automáticos que nos ayuden a validar que cada integración que realicemos no esta dañando nada de nuestro código antiguo y mucho más prevenir que esos errores lleguen a nuestro proceso de QA. Esta simple tarea mejorará nuestros tiempos de entrega y hará que nuestros ciclos de desarrollo se demoren menos y tengamos menor cantidad de errores. 

Espero este post les ayude a que sus procesos sean mucho más ágiles, con mayor cantidad de funciones y mucho más cortos. Recuerden comentar en caso de que tengan preguntas y si no las tienen, igualmente comenten que es buenos saber sus opiniones. Hasta la próxima!.

miércoles, 19 de noviembre de 2014

AngularJS: Como aplicarla a mis proyectos?

AngularJS

Seguramente vas a encontrar mucha información en la Red sobre AngularJS y cómo hacer un blog en 5 minutos. Sí esto es lo que estas buscando, este no es el post que necesitas y siento mucho decepcionarte, busca en alguna otra entrada de mi blog algo que te ayude en lo que estas tratando de hacer, y de esa manera no te habré hecho perder el tiempo. Ahora, hablemos de lo que si vamos a tener en este post.

En el siguiente post voy a tratar de resumir que es AngularJS, que problemas podemos encontrar al tratar de implementarlo en uno de nuestros proyectos y un breve resumen de como se supone funciona todo este mundo de controladores, dependencias, directivas y servicios. Dicho esto, empecemos y espero les sea de ayuda.

Que es AngularJS?

AngularJS es un framework MVW (Model View Whatever) como sus creadores lo han denominado. Que traduce cualquier cosa que quieras usar MVC, MVVC o lo que sea que te permita AngularJS hacer y funcione, está bien. Pero como algunas bases debe tener, podemos decir que AngularJS es un Framework MVC en el lado del cliente que esta compuesto de Controladores, Modelos y Vistas. A los cuales se le agregan las directivas, servicios, filtros, dependencias, etc. Si quieres más información puedes consultar la página oficial de AngularJS.

Que problemas podemos encontrar migrando un proyecto hacia AngularJS?

En la mayoría de proyectos que usan javascript sin ningún framework tiene a jQuery cómo base para la creación de sus funciones, eventos y demás actividades en el cliente. Pero la mayoría de estos coinciden en que tienen un javascript por página que es el encargado de inicializar todos los eventos y asignar valores por defecto a las librerías, constantes, etc. 

En este contexto, si la decision fuera pasar de estos complejos y largos archivos con código que posiblemente ya dejo de ser mantenible, hacia un entorno AngularJS, estos son algunos de los problemas que se van a encontrar:

  1. AngularJS necesita de un modulo ("Aplicación") para a partir de este crear los demás componentes. Se podría crear un modulo por página pero sería equivalente a tener el mismo esquema de un archivo js por página. 
  2. AngularJS esta pensado para ser aplicado en modo single page. Es decir, la página de index carga todos los recursos y se encarga de todas las vistas. Normalmente, en los proyectos MVC se tienen templates para cargar vistas, pero cada uno es un recurso diferente. Este cambio es largo y tedioso. 
  3. AngularJS tiene directivas que nos permiten reusar código y funcionalidades, no comiences migrando página por control. Comienza con las directivas y será más rápido.
  4. Es usual tomar los proyectos y comenzar a cambiar todo hacia AngularJS. Te va resultar mucho más fácil si comienzas un proyecto nuevo y reusas el código del proyecto que deseas migrar. Trata de comenzar por las rutas de la aplicación, luego la seguridad, directivas, servicios, controladores y finalmente los estilos. 
  5. AngularJS tiene mucha variedad de plugins/librerías para solucionar los diferentes inconvenientes que se presentan a la hora del desarrollo, es muy importante que no escojas lo primero que veas en internet, investiga cual se acopla mejor a tus necesidades y cuando tengas decidido las librerías que vas a usar, es momento de comenzar a codificar. 

Cómo funciona esto de AngularJS?

Ya sabemos que AngularJS es un Framework, que podemos usarlo como MVC, MVVC o como mejor nos parezca y que además si vamos a migrar una aplicación típica de MVC vamos a tener que cambiar el modo de trabajo de nuestro proyecto. Pero, y Porque? Cómo funciona esto?. A continuación intentaré responder estas preguntas.

AngularJS es una librería que esta pensada para ser cargada una sola vez y a partir de ese momento servir todas las funcionalidades de la aplicación de forma asincrona. De tal manera que todos los scripts que necesitemos para nuestra aplicación van a estar en esta página. De esta manera las vistas van a ser cargadas mediante llamados ajax y AngularJS se encargará de iniciar todos los eventos necesarios para mapear la vista con nuestros controladores.

De igual forma Angular requiere que importes los servicios, directivas y demás archivos en la página de inicio de manera que cuando Angular vaya a resolver las dependencias no genere error ninguna dependencia. Por tanto, la migración de aplicaciones ya existentes no es tan fácil y limpia como se podría pensar, en algunos casos ni siquiera aplica para el modelo del proyecto y no todos los proyectos se pueden trabajar con este esquema, no olvides que existe más frameworks en el mercado. 

Conclusión


AngularJS es un muy buen Framework para el lado del cliente que te ayuda a organizar, agilizar, gestionar, mantener y acelerar tus desarrollos. Pero no todos los proyectos que realices deben tener AngularJS, en algunos casos el model simplemente no se acomoda a las especificaciones del Framework y no puedes intentar cambiar el proyecto para que se acomode al Framework. No depender de las librerías debe ser una de tus reglas principales al momento de realizar un desarrollo. No dejes que tus herramientas se vuelvan tus debilidades. 

Espero les haya gustado y servido este post, para los que esperaban ejemplos, aquí los pueden encontrar, no tenía sentido reinventar la rueda. Saludos y espero sus comentarios.