sábado, 29 de abril de 2017

Tomando nota de una lectura recomendada sobre Warren Buffett

Hace algunos días, a comienzos de Abril "me llegó" una lectura recomendada a través de twitter sobre Warren Buffett (inversor y empresario estadounidense) que es breve pero sin desperdicio y desde ya la recomiendo leer Warren Buffett y su ley de 2 pasos para decir ‘no’ a casi todo. Lo interesante del artículo es que menciona algunos aspectos importantes en lo que respecta a la toma de decisiones de nuestro día a día, tanto en lo personal como en lo laboral. El artículo me llegó a través de un retweet de @njodal  (Nicolás Jodal, GeneXus CEO, al cual sigo en twitter desde hace un buen tiempo y también recomiendo seguirlo, pues siempre postea cosas interesantes) y de un post originario de @fernandomontans (Fernando Montans, Genexus España).

El artículo comienza con la frase de Warren Buffett “No puedes mantener el control de tu tiempo sin decir que no. No debes dejar que la gente anteponga su orden del día a tu vida”. Bien podría ser una frase a tener impresa y puesta a la vista en una cartelera de cualquier proyecto de software, ya que permanentemente se debe gestionar la lista de requisitos con los clientes. Naturalmente los clientes pretenden ir actualizando su lista de requisitos casi en tiempo real durante proyectos que generalmente distan varios meses entre su inicio y fin, por lo que siempre se tienen que estar negociando los SI y los NO para cumplir con los objetivos del proyecto. Desde un extremo, ya sea que se esté gestionando un proyecto con la metodología propuesta por PMI se preven procesos como el Control del Alcance (que es un proceso que forma parte de los Procesos de Gestión del Alcance) y el sistema de Control de Cambios para que el proyecto no se desvíe demasiado. En el otro extremo, si se está gestionando un proyecto con una metodología ágil como Scrum (una de las metodologías ágiles más utilizadas) también se tiene en cuenta la gestión de los requisitos a través de la priorización del Product backlog y la gestión permanente del mismo con el Cliente.

sábado, 4 de marzo de 2017

Cifrado Triple DES (3DES) en Java desde Genexus

¡Hola a todos!

Hace ya un tiempo tuve la nececidad de implementar la comunicación con una pasarela de pagos para un cliente que quería realizar ventas desde su sitio web. Una de las exigencias en cuanto a seguridad al momento de consumir los servicios web era el encriptado de los datos con el alogoritmo de cifrados Triple DES.
En ese momento, los desarrollos para ese cliente estaban hechos en GX9 (Dev. U7 - Java U6, actualmente está en Evolution) y por lo tanto no había una solución nativa para resolver el tema de la encriptación con ese algoritmo.
La solución entonces fuer desarrollar la encriptación y desencriptación directamente en java y luego utilizar esa clase desde genexus como una clase externa.

La opción que se utilizó del algoritmo de cifrado triple DES consiste basicamente en tener un mensaje a encriptar/desencriptar, una clave compartida y un vector de inicialización compartido. A partir de la combinación de estos tres datos se obtiene el texto encriptado/desencriptado que se necesita.

lunes, 6 de febrero de 2017

Consumir Web Service Seguro NO Genexus

¡Hola a todos!

En estos últimos años he participado (y lo sigo haciendo) en varios proyectos que consisten en adaptar sistemas de facturación ya operativos a las exigencias de e-factura que impulsó DGI (Dirección General Impositiva) en nuestro país.
DGI expone Web Services a través de los cuales se debe enviar on line cierta información referente a la facturación de la empresa. En cuanto a la comunicación con estos Web Services, hemos trabajado con un socio de negocios que se encarga de resolver esa problemática. Lo positivo de esto es que este sistema (middleware para nosotros) nos brinda distintas alternativas de comunicación con ellos, lo que nos ha permitido optar entre ellas según las necesidades de nuestros clientes.

Entonces, yendo a la problemática que quisiera compartir, en uno de nuestros clientes hemos tenido que encontrar una solución al consumo de WS Seguro desde Genexus 9, generando Java Web, desplegando la aplicación en un Tomcat 6 y utilizando BD Postgres (tener en cuenta que queremos consumir un WS Seguro NO GENEXUS).

Las alternativas que tenemos son servicios web SOAP o REST, en ambos casos utilizando Certificado + Usuario y Contraseña.

lunes, 23 de enero de 2017

Problemas con Reorganizaciones

¡Hola a todos!

Recientemente he tenido que trabajar con una KB a la que debía adaptar su módulo de facturación para cumplir con los requisitos de factura electrónica (e-factura). Más allá de algunos problemas técnicos que tuvimos para consumir los Web Services Seguros, nos encontramos con que las Reorg no se podían hacer desde Genexus. Estabamos trabajando con Genexus 9 U7, generando Java con U5 (VM Sun 1.6) y con Postgres 9.
A continuación dejo un resumen de los problemas, las distintas alternativas que fueron probadas y la solución alcanzada. Este es uno de los casos en que por distintas razones no fue posible ser exaustivos en las pruebas, pero de todas maneras llegamos a una solución, así que igualmente puede resultar útil la experiencia.

jueves, 19 de enero de 2017

Incorporando Captcha a una aplicación con Genexus

¡Hola a todos!

Algo no despreciable que aporta a la seguridad en pantallas que están expuestas en internet es la incorporación de Captcha. Más allá de que no es la solución para evitar intrusos o spam, les dificulta un poco la tarea.

Por ejemplo, un uso común puede ser en formularios en los que se solicitan datos o páginas en las que se permite publicar comentarios.

En nuestro caso, necesitabamos que el usuario ingresara ciertos datos para luego mostrarle un pdf con determinada información. Para eso recurrimos al User Control Captcha, que puede descargarse del Marketplace de Genexus.




Por las dudas, aquí dejo el enlace con los pasos para instalar UCs:
http://wiki.genexus.com/commwiki/servlet/wiki?5920,HowTo%3A+Installing+User+Controls

Habiendo instalado el UC y yendo a la implementación... Al agregar el control al web panel, éste mostrará en pantalla tres elementos:
- una imagen
- un enlace para renovar la imagen
- y el campo input que permite escribir el texto
Cuando se confirman los datos, el control permite consultar en una propiedad si el texto ingresado fue el correcto.
Las imágenes que utiliza el UC están en una carpeta dentro del UC (en el servidor).

Particularmente, este UC utiliza 191 imágenes (numeradas 1..191) pero podrían agregarse más y luego modificar los archivos jcap.js (que tiene el MD5 del texto de la imágen) y CaptchaRender.js (que hace el Random de las imagenes) para que el random tenga en cuenta la nueva imagen.

En cuanto a interfaz de usuario, el único detalle es que el enlace de -Renovar imagen- queda a un costado de la imagen, pero nuevamente puede editarse el archivo CaptchaRender.js y agregarse un “<br/>” para que quede más prolijo.

Aquí nuestro caso de Consulta de Comprobante Fiscal Electrónico


Más abajo dejo el enlace al marketplace de genexus en el que es posible descargar el User Control así como acceder a documentación bien detallada y con ejemplos.

https://marketplace.genexus.com/product.aspx?captcha,es

Hay otros controles captcha para utilizar con Genexus, algunos son objetos externos y otros User Controls, pero estos no los probamos (es una deuda pendiente). De todas maneras aquí van los enlaces:

https://marketplace.genexus.com/product.aspx?k2btoolscaptcha,es

https://marketplace.genexus.com/product.aspx?pscaptcha,es

https://marketplace.genexus.com/product.aspx?recaptcha,es

¡Hasta la próxima!

Mi primer publicación... Comenzando una nueva etapa

¡Hola a todos!

Quisiera comenzar este blog contando antes que nada el porqué de su surgimiento...

Hace ya unos años (en mis primeros tiempos como estudiante universitario en Facultad de Ingeniería, UdelaR) comencé a trabajar en la industria del software. Desde esos días hasta ahora he venido participando en desarrollos de aplicaciones con Genexus en sus distintas versiones y generando distinto tipo de soluciones, ya sean win o web para clientes muy variados.

Desde hace un buen tiempo vengo registrando informalmente para uso personal y de la empresa para la cual trabajo algunas de las problemáticas a las cuales me voy enfrentando y también las distintas soluciones (o no) que voy encontrando. Algunos son desafíos personales y otros del equipo de trabajo en los que participo. Con este blog estoy comenzando una nueva etapa con el objetivo de compartir estas experiencias y las que surjan a futuro, las que espero que sean de utilidad para la comunidad del software+genexus y si lo es para alguien más, mejor aún!

La idea es contar en cada publicación sobre el contexto en que se da cierta problemática y sus posibles soluciones, acompañada de cuestiones técnicas tales como versiones de Genexus, del lenguaje en que se genera, del servidor de aplicaciones, del servidor de base de datos y otros componentes que vengan al caso.

En estos días comenzaré con algo "liviano" como para romper el hielo, pero con el tiempo iré agregando nuevos contenidos que espero sean de interés.

¡Hasta pronto!