Lenguajes JVM

Otros lenguajes para la JVM (Groovy, Scala, Clojure, etc)

Observer pattern

Uno de los mas importantes patterns de diseno es Observer, este patron lo podemos ver en librerias como Reactive Extensions, React, Redux, Angular y varias librerias relacionadas con streaming, pero a veces no queremos toda una libreria porque nuestro requerimiento no es tan complejo, y escribir un simple Observer no es tan complicado, al menos no en Kotlin.

El modo de funcionar es bastante simple, tenemos un distribuidor de eventos y varios listeners cada vez que hay un evento, el distribuidor se encarga de enviar el evento a todos los que esten suscritos, es como crear un mini service bus.

https://en.wikipedia.org/wiki/Observer_pattern aqui hay una explicacion mucho mas detallada

Basicamente necesitamos 3 cosas, los suscriptores, una lista de suscritos y una forma de recibir y propagar eventos, vamos a implementar esto en kotlin;

El codigo

Kotlin test

En la comunidad de typescript una de las razones por las que comentan que se debe usar es por que usa types y que eso reduce la introducción de errores en el codigo, y para ciertos errores muy muy simples puede que sea verdad. Pero si he notado que la mayoría de los errores vienen cuando modificamos algo y ese algo se usa en otro lado que no sabemos; e introducimos bugs al código, esto ni con lenguajes typados lo solventas. Pero si hay una herramienta que puede al menos decirte que estas provocando side effects en partes del código que ni esperabas. Y esas son las pruebas unitarias.

Todos deberíamos saber los beneficios que estas conllevan y aunque muchos los sabemos la verdad como desarrolladores no nos gusta escribirlas (al menos a mi no) las vemos como tiempo extra, ademas casi siempre los project managers tambien y piden las pruebas unitarias aunque no den tiempo para poder escribirlas.

Pero esa es otra historia y no importa si sigues una metodología BDD o TDD o simplemente escribes pruebas cuando se te antoja, es importante crearlas.

A continuation veremos un ejemplo de como crear pruebas unitarias para Kotlin:

El codigo a probar

Agregando estado

Estado en React

React es por asi decirlo, una maquina de estados, reacciona a cambios de estado y define todo un ciclo de eventos que suceden cada vez que cambia el estado, el proceso simple es que vuelve a renderizar el componente, es decir, crea el DOM virtual del componente hace la comparacion de diferencias y actualiza el DOM, esto lo hace a una velocidad mas que decente.

Hooks

Hablar de React despues del 06 Febrero del 2019 es hablar de Hooks, no podemos ser mas afortunados de por fin librarnos de ese mal concepto de Clases en javascript, que ni son clases reales porque son instancias y confunden mucho tanto a desarrolladores js como a los que no lo son.
Vamos a realizar un pequeno contador que muestre cuantos segundos han pasado desde que cargamos una pagina. Hooks nos ayudara a escribir el codigo en React.

Dependencias

- La unica dependencia es haber realizado el ejercicio del post anterior.

Actualizando el componente

Solo vamos a actualizar el archivo index.tsx, debera quedar asi:

import React, { useState } from 'react';
import ReactDOM from 'react-dom';

const Hello: React.SFC<{
  text: string

Hello Typescript React

Introduccion

Ya pregunte si se puede escribir sobre React, asi que vamos a empezar con ello, el primer ejemplo sera el clasico hello world pero con Typescript. Tampoco me agrada demasiado la idea de usar Typescript, de hecho sigo pensando que es mejor usar javascript normal, pero tampoco quiero caer en una postura de no usar typescript solo por puro gusto de javascript. Entonces haremos una serie de pequenas no tan pequenas aplicaciones en React con Typescript o al reves en Typescript con React.

Tambien incluiremos servicios Rest basicos sin seguridad ni monitoreo hechos en Kotlin, por ultimo, si nos da tiempo metemos algo de Kafka.

Ambiente de desarrollo

Para poder realizar los ejemplos vamos a necesitar Nodejs instalado, de preferencia una version lts mayor o igual a 6.

Dependencias

  • Parcel: Esta herramienta es un bundler que nos permite transpilar jsx, es6, ts y otros lenguajes a ES5, es un competidor de Webpack, lo usaremos porque no vamos a realizar configuraciones muy complicadas, nos queremos enfocar al desarrollo

Hello World x4

Hace poco estuve en un curso relativo a Kafka, la verdad la capacidad que tiene esa herramienta es muy fuerte, sobre todo cuando aplicamos programación funcional en medio. Aunque este post no es relativo a Kafka, si lo es relativo a la programación funcional y será bastante sencillo.

Haremos un ejemplo de curry f(x)(y) = f(x, y) en tres lenguajes Kotlin, Typescript y Javascript.

Kotlin

fun main() {
    val sendAll = { content: String ->
        { content2: String ->
            content + content2
        }
    }

    val a = sendAll("Hello")

    println(a(" World"))
}

Typescript

const sendAll = (content: string) =>
  (content2: string) => content + content2;

const a = sendAll("Hello”);

console.log(a(" World”));

Javascript

const sendAll = content => content2 => content + content2;

const a = sendAll("Hello”);

console.log(a(" World”));

Conclusiones

@Transactional spring framework

Hola soy nuevo en Spring y tengo una duda acerca de @Transactional, tengo un método que llama a dos métodos anotados con @Transactional cada uno de ellos hace un insert en una base de dados diferente pero cuando ocurre un error no hace rollback en ambas bases de datos.

Este es el método:

@Transactional(readOnly=false)
public ResponseEntity<ResultVo<String>> modificaFechasVacaciones(@RequestBody RequestVacacionesVO request,HttpServletRequest http) throws ParseException{

                       // base de datos 1
                        this.vacacionesBO.modificaSolicitudes(request, usuarioFormat,diasSolicitados, diasExcedentes);
                       
                       // base de datos 2
                        this.vacacionesBO.updateDiasSolicitados(request, diasSolicitados);

                        // base de datos 3
                        this.vacacionesBO.updateDiasDisponiblesRechazo(request, diasDisponibles);

               
        }

Esta es la configuración de los txManager para las dos bases de datos:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
                xmlns:context="http://www.springframework.org/schema/context"
                xmlns:tx="http://www.springframework.org/schema/tx"

Play Framework vs Spring Framework

Buenas noches compañeros,

Les comento que en el trabajo, nuestro dia a dia es trabajar con Spring, practicamente todo el equipo de trabajo se siente bien con este framework.

El tema es que estan propopiendo un equipo externo empezar a trabajar con Play Framework, y ahi van mis preguntas: ¿Alguien tiene experiencia con Play Framework?, ¿ventajas y desventajas con respecto a Spring? ¿curva de aprendizaje? ¿Me conviene quedarme en Spring?.

Cualquier comentario es bienvenido.

Gracias de antemano.

JAVA DEV DAY 2018

Hola, uno de los eventos mas grande de programacion esta de regreso en Guadalajara, tendra speakers internacionales y nacionales, el evento es todo el dia da link en el link para tener mas informacion

http://bit.ly/javadevday18

Importar Certificados en Java

Cuando desarrollamos una aplicación en Java que va ha hacer uso de un recurso seguro (mediante un certificado), debemos asegurarnos que este certificado podrá ser validado por una entidad certificadora que reconozca Java.

Por defecto, la máquina virtual de Java dispone de las Entidades Certificadoras (CA) más comunes, Sin embargo, suele darse el caso, sobretodo en entornos de desarrollo, que necesitemos utilizar una Entidad Certificadora "de prueba". En este caso, debemos importar esta CA en el almacén de claves de la máquina virtual que estemos utilizando.

* Por ejemplo:

A mi me paso que cuando estaba tratando de llamar un servicio web, no me dejaba consultar la información ya que se había cambiado la infraestructura por lo tanto el certificado se había cambiado y por lo tanto no tenia los permisos necesarios para poder consumir el servicio para ello se me paso el archivo .cer que se importa de la siguiente manera.

Grails ... un ejemplo

ec564-shomecode4

En este post crearemos un mini sistema para la gestión de tickets de soporte técnico.

¿Qué necesitamos?

  1. Tener instalado el JDK 8
  2. Tener instalado Grails
  3. Tener una BD (usaremos PostgreSQL en este ejemplo)

Tenemos los departamentos o áreas ).

areas

Se levantan los tickets

tickets

El encargado de dar soporte técnico responderá a las peticiones.

respuesta

Distribuir contenido