style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Blogs

Payara Hello-World

Ya sabia que no iban a dejar morir así como así a JEE, ahora que ya es mas independiente de Oracle seguramente evolucionara mas rápido de lo que lo había hecho, uno de los primeros servidores que me llamo mucho la atención fue Glassfish, cuando fue lanzado era el mas avanzado en JEE en su momento, creo que lo sigue siendo ya que todas las especificaciones de JEE se crean primero ahi, aunque ya no tiene soporte por parte de una empresa como lo era entonces SUN, desde luego Oracle no iba a hacerlo competir con Websphere, tan caro que les salió comprarselo a BEA.

Pero bueno pasado es pasado y los servidores JEE parecería que solo seguirían vivos en los ambientes viejos y que pocas veces cambian como bancos o empresas de seguros (donde todavía se puede encontrar AS400 y muchas cajeros corriendo Windows XP). A quien le suena el requerimiento: queremos que la aplicación funcione con las tecnologías mas modernas pero en IE6 o IE7 ?

Middleware en Redux-mx

La parte que yo creo es mas interesante en la librería Redux es la creación de Middlewares y de ese modo extender Redux mas allá de lo que el equipo de Redux nos pueden ofrecer en la librería.

Esta funcionalidad se la agregue a mi pequeño clon, ahora se puede definir Middlewares que reciban el store (estado) y las acciones que se han lanzado, el ejemplo mas común es hacer un logger de las acciones. Este el ejemplo de este Middleware:

package examples.simple.middlewares;

import mx.com.betotto.redux.Middleware;

public class LoggerMiddleware extends Middleware {

    public LoggerMiddleware() {
        this.middleware = store -> next -> action -> {
            System.out.println("Action dispatched:  " + action.toString());

            //System.out.println("State from Middleware:  " + store.getState());
            return next.apply(action);
        };
    }
}

Como se puede ver tiene una firma muy parecida a el logger que viene en la documentación de Redux

const logger = store => next => action => {
  console.log('dispatching', action)
  let result = next(action)
  console.log('next state', store.getState())
  return result
}

Redux-mx

React es una herramienta que ha cambiado el desarrollo web y nos ayuda a recordar lo difícil que es controlar el estado de una aplicación, sobre todo si manejas hilos, llamadas asíncronas y muchos clientes simultáneos, a pesar de que una aplicación web no maneja hilos normalmente, tiene muchas interacciones entre el servidor, la acciones del usuario y en muchos casos timers que monitorean alguna actividad.

Debido a esta complejidad es que nació como arquitectura Flux y después Redux como librería que implementa la arquitectura Flux, Redux es tan bueno que casi casi se volvio la utileria por defecto para control de estado con React, su creador actualmente trabaja para Facebook mejorando React. Redux ha permitido que las aplicaciones sean predecibles y mas sencillas de desarrollar. No todas las aplicaciones lo necesitan pero a mi en lo personal me ha tocado el caso en el que lo necesitaba y no lo tenia (todavía no existía).

Odio las excepciones verificadas

De verdad que deberían haber eliminado por completo las excepciones verificadas para Java 8. Estorban. No es una coincidencia que casi todos los demás lenguajes de la JVM las eliminaron.

BEGIN RANT

Tengo una clase donde implemento un método abstracto más o menos así:

@Override
protected Runnable crearTarea(Request req) {
  Response resp = new Respuesta(Errores.CANT_CONNECT);
  if (req.getTipo() == Request.UnaCosa) {
    return () -> {
      try {
        unaCosa(req, resp);
      } catch (IOException ex) {
        log.error("Haciendo una cosa con {}", req, ex);
      } finally {
        procesaRespuesta(resp);
      }
    };
  } else if (req.getTipo() == Request.OtraCosa) {
    return () -> {
      try {
        otraCosa(req, resp);
      } catch (IOException ex) {
        log.error("Haciendo otra cosa con {}", req, ex);
      } finally {
        procesaRespuesta(resp);
      }
    };
  } else if (req.getTipo() == Request.OoootraCosa) {
    return () -> {
      try {
        oootraCosa(req, resp);
      } catch (IOException ex) {
        log.error("Haciendo todavía otra cosa con {}", req, ex);
      } finally {

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

¿Como ser un mejor Líder Técnico

Ser Líder Técnico es el siguiente escalón que todo desarrollador Senior tiene que subir, he aprendido mucho en este rol, como siempre, quiero contribuir con mi experiencia para todos aquellos que vienen atrás de mi.

Que les sea útil el articulo.

https://marcosrobertos.blogspot.com/2018/07/como-ser-un-mejor-lider.html

Guia para solucionar incidencias de Software

Estimados,

He estado escribiendo una guía de apoyo para solucionar incidencias de Software, es lo que he aprendido, la experiencia que he adquirido, les va a ayudar mucho a los novatos.

Disfrútenla.

https://marcosrobertos.blogspot.com/2018/07/como-resolver-una-incidencia...

rest api: spring boot vs node

rest api: spring boot vs node

en la practica es realmente spring boot mejor que node para rest api,

estoy por iniciar un nuevo proyecto y quiero hacerlo en spring boot + vue.js

que pueden opinar al respecto, saludos

Vavr Try.of

En el post anterior revisamos de forma rapida como hacer tipos que combinen monads para hacer cosas interesantes, como el evitar errores por posibles nulos, en los comentarios de @ezamudio nos podemos dar cuenta que Java ya implementa eso del fromNullable con Optional, pero deja de lado las excepciones y pues intente extender los tipos Right y Left para manejar y encadenar Excepciones.

Pero me encontré una librería, la cual es mejor estudiar en lugar de tratar de crear nuestros tipos una y otra vez, esta librería es vavr, tiene cosas muy interesantes entre ellas, manejo de excepciones de una forma funcional, precisamente lo que estaba tratando de hacer.

Vamos a ver como “esquivar” las excepciones con ayuda de programación funcional.

Supongamos que tenemos un archivo /opt/config.json que contiene la configuración del puerto tcp de nuestra app:

{
  "port": 8080
}

Heredar transacción de Java EE a Spring

Hola después de mucho tiempo, hace tiempo me topé con un problema, espero puedan ayudarme con un panorama más amplio y ver de que otras formas podría resolver este problema.

Teniendo una clase Java EE y un método donde se realizan dichas acciones, tengo la anotación @Transactional, que se utiliza para poder abrir y manejar una transacción en la cual se realiza una afectación a BD, pero en este proceso se requiere una dependencia que se realizó con Spring y que de igual manera utiliza transacción si ocurriera algún fallo, mi pregunta es, cómo puedo heredar las transacciones desde Java EE a Spring y viceversa para no perder el control en ninguna de las 2 partes?

Ya que si del lado de la dependencia Spring no falla, pero si falla del lado de Java EE, no podría avisarle a Spring que hubo un fallo y debe también aplicar RollBack, bueno espero puedan aportar con alguna idea.

Saludos!

Distribuir contenido

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">