jueves, 31 de diciembre de 2020

Configurar un Servidor DNS en Ubuntu Server 18

 Blabla




martes, 29 de diciembre de 2020

El perfil de un ingeniero de software en demanda

 Si eres un recién egresado y estás buscando un trabajo, seguramente te preguntarás que conocimientos, habilidades y actitud requieren las empresas. Te dejo un listado de lo más común en el mundo Java.

1.- Control de versiones

GIT y SVN, son las herramientas de control de versiones más demandado. ¿Quieres una guía rápida de GIT? Aquí tienes una entrada Guía rápida de Github

2.- Entorno de desarrollo integrado IDE

Eclipse o NetBeans, en este blog puedes buscar artículos sobre NetBeans, búscalos en las etiquetas.

viernes, 11 de diciembre de 2020

Como publicar mi proyecto Java EE en internet




Este 2021 inicio con un proyecto personal, para ello he desarrollado mi aplicación Java EE tomando como base Shopizer, y llegado la hora de publicarlo a internet me he encontrado con desafíos, le he dedicado muchas horas a investigar, por ello en esta entrada documento todo.

Conceptos que aprendí

Sitio Web, Aplicación Web, Hosting, Servidor en la nube (cloud), Servidor VPS, 

Esta entrada trata sobre

Preparar un servidor virtual para desplegar aplicaciones Java EE y hacerlo accesible a Internet con un presupuesto de 50USD anual.

Lo primero que hice fue comprar el dominio, este lo compré en GoDaddy, no tuve mayores problemas. Luego voy por el Hosting, y aquí me encontré con muchas confusiones, probé con Wordpress para luego enterarme que Wordpress es un Hosting + CMS, algo que definitivamente no me sirve, yo solo tenía acceso a la aplicación CMS, olvídate de tener un MySQL, Wildfly y Apache.

Investigando descubrí que generalmente un Hosting es un ambiente preconfigurado para subir un sitio web y no una aplicación web. La mayoría de los Hosting vienen con un conjunto de software pre instalado y configurado para sitios web PHP.

Seguí investigando y encontré que lo que yo buscaba era un servidor web en la nube, en realidad podría tener mi propio servidor web en el departamento pero al hacer cálculos de costes no es muy conveniente que digamos. 

Siguiendo con la historia, encontré un servidor en la nube muy bueno, viene pre configurado para la tecnología Java, Red Hat Openshift, ya viene instalado MySQL, Java, Tomcat o Wildfly. El problema es el costo, 50 USD mensual, estamos hablando de 600 USD anual. y pues se sale de mi presupuesto, mi presupuesto es de 50 USD anual. Jajajaja.

Seguí investigando y encontré que hay un servidor en la nube virtual, sin nada pre instalado mas que solo el SO, y el costo es de un poco menos de 50 USD anual. Estos son los conocidos Servidor VPS. Por ahora me encuentro en Chile así que elegí a mi proveedor https://www.hosty.cl/cloud-vps/

Una segunda buena opción erá https://www.digitalocean.com/products/droplets/ pero ligeramente más caro, 20 USD aprox más que hosty. Por el precio lo descarté, quizás en el futuro.

Una tercera opción que no me convence del todo es https://www.hostignition.com/index.php?page=jsp-servlets, no me terminar de convencer ya que viene pre configurado con Tomcat y sospecho no se puede instalar Wildfly, pero igual debería darle una revisada.

Conectarte al Servidor VPS

Un servidor VPS es como cualquier servidor, solo que está en la nube, en internet, tiene su SO, en mi caso elegí Ubuntu Server 18, y para acceder a el lo haces mediante un cliente SSH Putty. El proveedor te da la dirección IP, el puerto, y la contraseña del usuario root  la cual puedes cambiar  mas adelante. De entrada Putty no me pareció muy amigable, cuando llegué al login en ingresaba el password de mi usuario Linux, en la consola, el promt no dibuja los caracteres ingresados, por fortuna puedes copiar y pegar el password haciendo click derecho sobre la consola.

Instalando MySQL

Para instalar MySQL ejecutar el siguiente comando Ubuntu

sudo apt install mysql-server

Para verificar si el servicio de MySQL esta ejecutándose correctamente ejecutar el siguiente comando

sudo netstat -tap | grep mysql

Y deberías ver la siguiente salida

tcp        0      0 localhost:mysql         0.0.0.0:*               LISTEN                              6874/mysqld

En caso de que el servicio no esté corriendo puedes iniciarlo ejecutando el siguiente comando

sudo systemctl restart mysql.service

Instalando Java

He decidido instalar OpenJDK ya que es la opción mas sencilla, para instalar, ejecutar los siguientes comandos.

sudo apt update

sudo apt install default-jdk

Instalando Apache Tomcat

Decidí instalar Apache Tomcat en lugar de Wildfly, la razón principal es porque no voy a usar EJB, aquí puedes leer una entrada exclusiva para saber como instalar Tomcat. ¿Cómo instalar Apache Tomcat en un servidor VPS Linux? 

Configurando el nombre del dominio web en Apache Tomcat

Para mostrar tu aplicación web cuando el usuario ingrese en su navegador el nombre de tu dominio deberás configurar el dominio en Apache Tomcat, aquí puedes leer una entrada exclusiva para saber como configurarlo. ¿Cómo configurar el nombre del dominio web en Apache Tomcat?

Configurando nuestro dominio

Pronto...

Seguridad

Pronto...

Y bueno... aun me queda mucho trabajo por hacer, instalar MySQL, Java, Wildfly, Apache Web, y configurar Wildfly con Apache Web.

Seguiré documentando...




lunes, 14 de septiembre de 2020

Ejercicios de Programación

Si te apasiona la programación, los desafíos, pues aquí te voy a dejar una lista de ejercicios, son ejercicios reales que se me han presentado en el trabajo.

No dejaré la solución pero puedes enviarme tu programa y lo revisaré cuando este libre.

Ejercicio 1.- Unificar rectángulos que se encuentran en una misma fila.

Ejercicio 2.- Buscar una sub lista dentro de una lista

miércoles, 2 de septiembre de 2020

Persistencia de Datos con JPA

Gestionando Objetos Persistentes

Siempre me gusta tomar como referencia la documentación oficial, en el caso de JPA tenemos la especificación la cual lo puedes consultar en 

JPA 2.2 https://jcp.org/en/jsr/detail?id=338

viernes, 5 de junio de 2020

Guía del inversionista Mexicano


En el 2015 mis ingresos recién superaron a mis gastos indispensables, por gastos indispensables me refiero al arriendo de un departamento, gastos en supermercado, gastos en almuerzos, cenas esporádicas, salidas a bares, etc,. En realidad siempre he procurado vivir una vida justa, austera y minimalista. El punto es que en el 2015 empecé a tener un excedente de mis ingresos. Cuando tienes un excedente de tus ingresos lo natural es querer invertirlo para que este crezca con el tiempo, porque eso de tenerlo guardado en una caja fuerte en tu departamento pues no más no va. Cómo alterno mi residencia en Chile y México, he buscado y probado opciones de inversión, después escribiré una entrada exclusiva a invertir en Chile, en esta entrada me enfocaré en invertir en México y te daré los pasos que debe seguir un buen inversionista.

1.- Tener un excedente
El primer paso, el primer escalón para ser un inversionista es tener un excedente mensual, es decir, que a fin de mes, después de haber pagado toooodas tus cuentas (arriendo, supermercado, agua, luz, gas, etc,.) y obligaciones te sobre dinero. Si no te sobra dinero tienes dos opciones: recortar gastos o aumentar tus ingresos, decídete por uno antes de continuar. 

2.- Contrata un seguro de vida y salud.
El segundo paso, el segundo escalón como inversionista es contar con un seguro de vida y salud. Te recomiendo los seguros de MetLife. Entonces con el excedente mensual que tienes debes contratar un seguro de vida y salud, si no te alcanza entonces debes buscar como incrementar tus ingresos.

3.- Tener un fondo de Emergencia para 3 meses
El tercer paso, es contar con un fondo de emergencia que te permita cubrir 3 meses de tus gastos. Así que si después de pagar tu seguro de vida y salud aun te quedan excedentes entonces debes empezar a ahorrar para tu fondo de emergencia. ¿En donde vas a ahorrar tu fondo de emergencia? Hay varias opciones, pero yo te recomiendo hacerlo en Cetes Directos Es un instrumento de ahorro e inversión con muy bajo riesgo y rentabilidad ligeramente por arriba de la inflación. Alta liquidez, cero comisiones, y puedes retirar después de 24 horas.

4.- Define tus objetivos y plazo
En este punto ya podemos pagar el seguro de vida/salud, ya contamos con un fondo de emergencia, entonces ahora si debemos definir objetivos, es decir, deseo invertir el excedente que tengo para lograr un objetivo. Y aquí los objetivos son muy personales, muy subjetivos, a modo de ejemplo yo deseo tener una moto chopper, una casa container, tener participaciones en las 32 mejores empresas del IPC en México e invertir en start ups, o en fondos de capital riesgo. Si tus objetivos se prestan para ponerle un plazo debes hacerlo. Por ejemplo yo quiero mi moto para el 2021, quiero mi casa container para el 2023, mientras que a la inversión en empresas y capital riesgo no es posible definirse un plazo. Incluso un objetivo puede ser juntar el capital para emprender un negocio o empresa.

5.- Buscando los vehículos de Inversión que se ajusten a mis objetivos y plazos
Una vez que he definido mis objetivos y plazos es momento de buscar los vehículos de inversión que me permitan alcanzar los objetivos en el plazo definido.
Este punto es más complejo y requiere un mayor desarrollo, por ahora, el instrumento que he evaluado son las FIBRAS, te dejo mi conclusión.
VEHÍCULO DE INVERSIÓN FIBRAS
¿Cómo invertir en FIBRAS? Atentos que pronto escribiré una entrada.

CREAR UNA START UP
Tengo muy poca experiencia en Start Up... continuará


Seguiré actualizando este punto, si tienes dudas o inquietudes deja un comentario y lo responderé en base a mi experiencia y conocimiento.

¿Como invertir en México?

En el 2015 mis ingresos recién superaron a mis gastos indispensables, por gastos indispensables me refiero al arriendo de un departamento, gastos en supermercado, gastos en almuerzos, cenas esporádicas, salidas a bares, etc,. En realidad siempre he procurado vivir una vida justa, austera y minimalista. El punto es que en el 2015 empecé a tener un excedente de mis ingresos. Cuando tienes un excedente de tus ingresos lo natural es querer invertirlo para que este crezca con el tiempo, porque eso de tenerlo guardado en una caja fuerte en tu departamento pues no más no va.

Cómo alterno mi residencia en Chile y México, he buscado y probado opciones de inversión, después escribiré una entrada exclusiva a invertir en Chile, en esta entrada me enfocaré en invertir en México y te daré los pasos que debe seguir un buen inversionista.

1.- Tener un excedente
El primer paso, el primer escalón para ser un inversionista es tener un excedente mensual, es decir, que a fin de mes, después de haber pagado toooodas tus cuentas (arriendo, supermercado, agua, luz, gas, etc,.) y obligaciones te sobre dinero. Si no te sobra dinero tienes dos opciones: recortar gastos o aumentar tus ingresos, decídete por uno antes de continuar. 

2.- Contrata un seguro de vida y salud.
El segundo paso, el segundo escalón como inversionista es contar con un seguro de vida y salud. Te recomiendo los seguros de MetLife. Entonces con el excedente mensual que tienes debes contratar un seguro de vida y salud, si no te alcanza entonces debes buscar como incrementar tus ingresos.

3.- Tener un fondo de Emergencia para 3 meses
El tercer paso, es contar con un fondo de emergencia que te permita cubrir 3 meses de tus gastos. Así que si después de pagar tu seguro de vida y salud aun te quedan excedentes entonces debes empezar a ahorrar para tu fondo de emergencia. ¿En donde vas a ahorrar tu fondo de emergencia? Hay varias opciones, pero yo te recomiendo hacerlo en Cetes Directos Es un instrumento de ahorro e inversión con muy bajo riesgo y rentabilidad ligeramente por arriba de la inflación. Alta liquidez, cero comisiones, y puedes retirar después de 24 horas.

4.- Define tus objetivos y plazo
En este punto ya podemos pagar el seguro de vida/salud, ya contamos con un fondo de emergencia, entonces ahora si debemos definir objetivos, es decir, deseo invertir el excedente que tengo para lograr un objetivo. Y aquí los objetivos son muy personales, muy subjetivos, a modo de ejemplo yo deseo tener una moto chopper, una casa container, tener participaciones en las 32 mejores empresas del IPC en México e invertir en start ups, o en fondos de capital riesgo. Si tus objetivos se prestan para ponerle un plazo debes hacerlo. Por ejemplo yo quiero mi moto para el 2021, quiero mi casa container para el 2023, mientras que a la inversión en empresas y capital riesgo no es posible definirse un plazo. Incluso un objetivo puede ser juntar el capital para emprender un negocio o empresa.
5.- Buscando los vehículos de Inversión que se ajusten a mis objetivos y plazos
Una vez que he definido mis objetivos y plazos es momento de buscar los vehículos de inversión que me permitan alcanzar los objetivos en el plazo definido.
Este punto es más complejo y requiere un mayor desarrollo, por ahora, el instrumento que he evaluado son las FIBRAS, te dejo mi conclusión.
VEHÍCULO DE INVERSIÓN FIBRAS


Seguiré actualizando este punto, si tienes dudas o inquietudes deja un comentario y lo responderé en base a mi experiencia y conocimiento.




domingo, 24 de mayo de 2020

Desarrollo de Aplicaciones con Java EE 8

Java Enterprise Edition 8 (Java EE8), es la ultima versión de la especificación de Java EE, agrega varias características nuevas a la especificación anterior. Varias APIs que ya existían han sido mejoradas en esta versión, y otras APIs nuevas han sido agregadas. Este curso cubre la ultima versión de la especificación de Java EE, el cual es la más popular, incluye JavaServer Faces (JSF), Java Persistence API (JPA), Enterprise JavaBeans (EJB), Contexts and Dependency Injection (CDI), JSON Processing JSON-P, JSON Binding (JSON-B), WebSocket, Java Messaging Service JMS, JAX-WS, JAX-RS. También cubre aspectos de seguridad en las aplicaciones Java EE con la nueva de seguridad para Java EE.
Si deseas conocer la lista completa de los cambios y APIs agregadas puedes consultar la entrada Qué hay de nuevo en Java EE 8

Tabla de Contenidos

Capitulo 1: Introducción a Java EE
Capitulo 2: JavaServer Faces
Capitulo 3: Persistencia de datos con JPA
Capitulo 4: Enterprise Java Beans
Capitulo 5: Contexto e Inyección de Dependencias
Capitulo 6: 

domingo, 3 de mayo de 2020

Como usar c3p0 en JPA Hibernate

Cuando damos nuestros primeros pasos en JPA/Hibernate no nos preocupan los detalles, solo queremos ver lo fácil y rápido que es poder persistir objetos en nuestra base de datos. Realizar consultas y otros temas relacionados con la persistencia de datos.

Cierto día mi servidor de Base de datos MySQL estaba apagado, mi aplicación se demoró unos 5 minutos en intentar establecer conexión. Dejando la aplicación congelada durante ese tiempo. Este fue el motivo que me llevó a investigar como tener mayor control con la conexión a la base datos, me llevó a preguntarme como establecer un time-out.
El otro motivo fue el log que me llamó la atención, el mensaje decía "using hibernate built-in connection pool (not for production use )". Esto significa que Hibernate viene con un pool de conexiones integrado, un pool de conexiones que no está recomendado para ser usado en producción, solo para desarrollo.

C3P0 es un pool de conexiones de base de datos, tu puedes establecer un rango de conexiones permitidos, estás conexiones se van instanciando a demanda. Por ejemplo, al iniciar tu aplicación es posible que se instancie una primera conexión, si tu sistema es multi-hilo posiblemente estás cargando los datos de configuración mientras el usuario necesita hacer login, el pool de conexiones se da cuenta de que necesitas una conexión más, primero buscará una conexión ya instanciada pero que este sin usar, de existir te entregará esa conexión, si no existe entonces va a crear una nueva instancia.

C3P0 no solo es un pool de conexiones, tiene muchas otras características, una de ellas es poder establecer un timeOut de conexión, un timeOut de consulta entre otras características.

Voy a explicar como integrar y usar C3P0 en proyecto Maven y en un proyecto Java estándar.

Integrar C3P0 en un proyecto Maven

Lo que debemos hacer es agregar la dependencia en nuestro archivo pom.xml

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-c3p0</artifactId>
    <version>5.3.6.Final</version>
</dependency>

La versión debe ser similar o lo más cercano a la versión de hibernate-entitymanager, la ventaja de usar Maven es que automáticamente va identificar si hibernate-c3p0 requiere de otras dependencias y así recursivamente, por eso, si vas a la lista de dependencias de tu proyecto, vas a notar que ahora tienes las siguientes dependencias.

hibernate-c3p0-5.3.6.Final.jar
c3p0-0.9.5.2.jar
mchange-commons-java-0.2.11.jar

Si te preguntas como me he enterado de todos los jars necesarios, pues te diré que en el repositorio de maven está la lista de todas las dependencias. Tu buscas hibernate-c3p0-5.3.6.Final.jar y se te mostrará las dependencias necesarias para compilar y/o ejecutar.

Integrar C3P0 en un proyecto estándar

Para integrar c3p0 en un proyecto estándar debes descargar los jars por separados, los puedes descargar desde el repositorio de maven. Una vez descargados debes agregarlos al classpath de tu proyecto.

Propiedades C3P0
Las propiedades más relevantes para c3p0 son:

hibernate.c3p0.min_size: El numero minimo de conexiónes a mantener en el pool de conexiones. Conexiones que si no se usan estarán "dormidas"
hibernate.c3p0.max_size: El numero maximo de conexiones a mantener en el pool de conexiones. Si se llega al numero máximo de conexiones y la aplicación requiere más conexiones entonces la petición quedará bloqueada hasta que una conexion esté disponible.
hibernate.c3p0.checkoutTimeout= El timeout en mili segundos para establecer la conexion con la base de datos. Si no se estable a conexion en ese timeout se lanzará una excepción.

Estás propiedades se agregan en la unidad de persistencia, dentro del archivo persistence.xml o también se pueden agregar mediante código fuente.

viernes, 1 de mayo de 2020

Participemos en la transformación de nuestra sociedad

México es un país con claroscuros, hay lugares donde se vive con alta calidad de vida mientras que en otros apenas se sobrevive. El COVID 19 ha sacado lo mejor y lo peor de nuestra sociedad. Siendo objetivo hay muchas cosas que me gustaría cambiar de la sociedad en la que vivo. Deseo una mejor sociedad en donde mis sobrinos se puedan desarrollar. Y ¿como sería esta sociedad ideal? No pido mucho. Deseo una sociedad donde todo individuo tenga oportunidades para acceder de forma justa a una buena educación de calidad, acceso a la salud, acceso a la vivienda y finalmente que tengan las herramientas para desarrollarse, cumplir con sus sueños y metas.
No estoy pidiendo que las cosas sean gratis, estoy pidiendo que cada individuo tenga la oportunidad de acceder a recursos/servicios/información de forma justa EQUIDAD LE LLAMAN.

Para transformar nuestra sociedad debemos empezar desde abajo.

Valores... siempre los valores.
Debemos recuperar los valores, valores como el Respeto, la Honestidad, la Lealtad

Continuara...


sábado, 25 de abril de 2020

Crear servicios REST en Java en 10 minutos

Esta es una guía practica para crear un par de servicios RESTful, si deseas conocer los conceptos teóricos de este estilo de arquitectura te recomiendo leer los siguientes enlaces.




Por allá en el 2013 tuve un tímido acercamiento a la plataforma Java EE, todavía era una plataforma compleja. Para implementar unos servicios REST era necesario implementar interfaces, extender clases abstractas y configurar archivos XML. La plataforma ha evolucionado con el tiempo para bien, haciendo más facil el desarrollo de los servicios REST gracias a las anotaciones las cuales reemplazan las configuraciones de archivos XML. Gracias a estas mejoras podemos crear un par de servicios REST en 10 minutos o menos. Vamos a por ello!!

Requerimientos

Java 8
Wildfly 12
Netbeans 8.2 con Maven y soporte para Java EE


Presentación de los servicios a crear
Vamos a crear dos servicios, uno para persistir la información de una persona y otro para consultar la información de una persona. En ambos servicios usaremos JSon para representar los datos de una persona.

1.- Crear el proyecto web demo-rest
Nuevo Projecto → Maven → Web Application
En project name ingresar demo-rest
En package ingresar demo.rest


2.- Creamos la clase Persona para encapsular los datos de un objeto persona




  1. La clase Persona implementa a la interface Serializable
  2. La clase Persona tiene un constructor sin parametros


3.- Creamos la clase de los servicios POST y GET para el recurso Persona



Como podrás observar, esta es una clase común y corriente pero que tiene algunas anotaciones propias para el soporte de REST javax.ws.rs.*, las cuales serán reconocidas por el servidor de aplicaciones para finalmente exponer el servicio, analicemos para que esta cada una de ellas.

La anotación @Path indica la URL en la cual responderá este servicio, cabe mencionar que esta anotación se puede poner a nivel de clase y método, en este caso, al estar a nivel de clase, afecta a todos los servicios que definamos.

La anotación @Context permite inyectar un objeto de la clase UriInfo
Las anotaciones @Consumes y @Produces son para indicar que tipo de mensaje esperamos como entrada (consumes) y que tipo de mensaje vamos a responder (produces). En este caso, estamos indicando que esperamos JSON como entrada y que vamos a responder igualmente con JSON. La plataforma REST se encargar de parsear el mensaje JSon a objeto y viceversa.

La anotación @POST indica que nuestro método addPersona va a procesar las peticiones POST y la anotación @GET inicia que nuestro método getPersona va a procesar las peticiones GET.
El método getPersona devuelve la información de una persona en formato JSon
La anotación @Path("/{id}") y @PathParam("id") están relacionadas, nos permite obtener el id de la URL como un parámetro para nuestro método getPersona

4.- Extendemos la clase Abstracta ApplicationInfo



Debemos extender la clase javax.ws.rs.core.Application para registrar nuestra clase que implementa nuestros servicios REST.
Observar que esta clase también tiene la anotación @javax.ws.rs.ApplicationPath("rest") donde rest formará parte de la URL http://localhost:8080/demo-rest-1.0-SNAPSHOT/rest/persona de nuestro servicio.
5.- Clean and Build
Hacemos un Clean Build y Ejecutamos. Netbeans se encarga de desplegar nuestra aplicación web e iniciar el servidor WildFly

6.- Probar los servicios
Para probar nuestros servicios yo utilizo RestClient https://github.com/wiztools/rest-client/releases la versión GUI, restclient-ui-fat-3.7.1.jar
Las URL de nuestro servicio es http://localhost:8080/demo-rest-1.0-SNAPSHOT/rest/persona/ el cual se construye a partir de http://localhost:8080/{nombre_aplicacion}/rest/persona/


Observar que he seleccionado String body como tipo de contenido y application/json como formato y UTF-8 como codificación.



Puedes descargar el código fuente desde mi repositorio en GitHub 

viernes, 10 de abril de 2020

¿Se nace inteligente o nos hacemos inteligentes?

Crecí en un ambiente complejo, en donde se te catalogaba sólo en dos grupos, o eras inteligente o eras tonto. En esos años se desconocía la existencia de múltiples tipos de inteligencia y desde pequeños se nos insertaba la creencia errónea de que quizás no eramos inteligentes y no había nada que hacer para cambiar nuestra realidad, los desafortunados de caer en el grupo de tontos estaban condenados. Cuanto daño ha hecho esta creencia errónea.
Desde luego, los niños afortunados que escucharon un !Que inteligente eres! se quedaron con esa idea, crecieron con la creencia de que son inteligentes, una creencia justificada o no justificada lo cual es irrelevante.
Soy un hombre de hechos, como ingeniero me gusta buscarle indicadores a todo, para así poder medirlo, la inteligencia puede ser subjetiva. De vez en cuando me encuentro con personas que me preguntan si me considero inteligente, mi respuesta siempre es: Mi coeficiente intelectual es de xxx IQ. Y dejo que sea la persona la que determine si me considera o no inteligente. Sin embargo, os confieso que admiro a aquellas personas que responden con total seguridad Si, soy muy inteligente, sin dudarlo, sin hacer un test de coeficiente intelectual.
Y...  me quedé pensando, me he preguntado ¿Acaso también en esto la vida es injusta? ¿Algunas personas fueron privilegiadas con una inteligencia superior? Y pasa que en la sociedad en la que vivimos, lo inteligente suele ser admirado, deseado, valorado y recompensado. Hoy dedique unas horas en reflexionar sobre la pregunta del titulo y les comparto mi reflexión.

¿Que es la inteligencia?
Definir el concepto de inteligencia puede ser complejo y no es la intención de esta entrada. Hoy sabemos que existen múltiples tipos de inteligencia, es importante conocernos y determinar  con cual tipo de inteligencia nos identificamos más. Pero una definición general que a mi me gusta mucho, define la inteligencia como "La capacidad mental o cognitiva para entender, recordar y emplear de un modo práctico y constructivo, los conocimientos en situaciones nuevas".
Los tipos de inteligencias son:

9 Tipos de Inteligencia según Gardner y Ejemplos - Infografía

Como escribí al inicio, en nuestra sociedad lo inteligente es deseado, es valorado, es admirado, de ahí la inquietud de conocer si uno nace o no con cierto grado de inteligencia y si es posible desarrollarla. Se ha hecho mucha investigación sobre el tema, algunos son partidarios de que la inteligencia es innata y se hereda mientras que otros opinan que la inteligencia se desarrolla según el ambiente donde el niño crece. Estudios han demostrado que efectivamente, nacemos con cierto grado de inteligencia, algunos en mayor medida que otros, sin embargo, pero este grado de inteligencia no es definitivo, el desarrollo de la inteligencia es continuo, somos capaces de aprender durante toda nuestra vida. El ambiente donde el niño crece tiene una influencia muy fuerte en el desarrollo de su inteligencia. Por ambiente me refiero a la cultura, al acceso de la información (libros, Internet, enciclopedias), la guía y motivación de los padres, la posibilidad de experimentar, la alimentación y el poder vivir correctamente cada etapa de la vida.

Mi respuesta personal en base a mi experiencia, es un rotundo Por supuesto que la inteligencia se puede desarrollar pero hay que cultivarla, todos los días destinar un tiempo para ser más inteligentes que ayer. Quizás no logremos superar a aquellos que tienen una super inteligencia innata, pero si llegaremos a sentirnos más realizados, llegaremos a sentir que aportamos más valor a la sociedad y eso nos ayudará a ser más felices.

El desarrollo de la inteligencia influye en la enorme desigualdad que hay en nuestro mundo, hay poblaciones en donde el niño tiene que trabajar, tiene mala alimentación, no tiene la guía y motivación de sus padres. ¿Que podemos esperar de estos niños? ¿Como se van a enfrentar a un mundo competitivo?

Como sociedad aun tenemos un reto enorme.

Tengo la dicha de ser Tío de dos sobrinos maravillosos y me siento responsable en su educación, voy a guiarlos en descubrir que tipo de inteligencia tienen, motivarlos y enseñarles como seguir desarrollando esa inteligencia. Creo es lo mínimo que puedo hacer para contribuir en crear una mejor sociedad.

Referencia

https://www.lavanguardia.com/vivo/psicologia/20161102/411487509406/nacemos-o-nos-hacemos-inteligentes.html

domingo, 29 de marzo de 2020

Habilitar Escritorio Remoto en Windows

En estos días de cuarentena he estado averiguando algunos temas que tenía pendientes, uno de ellos esta relacionado con las redes, mas especifico habilitar el escritorio remoto, he estado experimentando con diferentes opciones y aquí una guía para que puedan habilitar el escritorio remoto.

Ambiente
Una Laptop Lenovo con Windows 10
Un PC all in one Lenovo con Windows 7

El objetivo es conectarme de la Laptop al equipo all in one

Habilitar el Escritorio Remoto
1.- En el equipo all in one
2.- Ir a Inicio, click derecho en Equipo
3.- En el Popup Menu seleccionar Propiedades
4.- Ir a Configuración de Acceso remoto
5.- En la pestaña Acceso Remoto, en la sección Escritorio Remoto, seleccionar la opción Permitir las conexiones desde equipo que ejecuten cualquier versión de Escritorio remoto
6.- Aplicar y Aceptar
* Recomiendo reiniciar el equipo, en mi caso fue necesario.

Seleccionar el tipo de red
1.- Ir al Panel de Control (Inicio -> Panel de control)
2.- Redes e Internet
3.- Centro de Redes y Recursos compartidos
4.- En la sección Ver redes activas, posiblemente el tipo de red esté como Publica, cambiarla a Red domestica o privada.

Configurar el Firewall
1.- Ir al Panel de control
2.- Sistema y Seguridad
3.- Firewall de Windows
4.- Permitir un programa o una característica a través de Firewall de Windows
5.- De la lista de programas y características. Seleccionar Escritorio Remoto, seleccionar también en la columna Domestica/trabajo
6.- Aceptar

Y ya, con esto no deberías tener problemas para conectarte.


Extra, si necesitas acceder a archivos compartidos
1.- En Centro de redes y recursos compartidos, en la sección Cambiar la configuración de red.
2.- Elegir grupo en el hogar y opciones de uso compartido.
Aquí podrás seleccionar todo lo que desees compartir.
3.- En la sección Otras acciones del grupo en el hogar.  Ir a Cambiar configuración de uso compartido avanzado.
4.- En la sección Casa o trabajo, Uso compartido con protección de contraseña
Seleccionar la opción Desactiva el uso compartido con protección por contraseña.
Estamos en una red Hogar por lo que no es relevante tanta seguridad, esto facilitará el acceso




domingo, 22 de marzo de 2020

Reseña de la crisis del Coronavirus 2020

He decidido escribir acerca de la crisis del Coronavirus, lo hago con la intención de dejar una experiencia en carne propia para mis sobrinos y así puedan tomar buenas decisiones porque esta pandemia seguro que se volverá a repetir.

Crisis económica, nací en 1986, así que fui parte de las crisis de 1994 conocido como la Crisis del Tequila, la crisis del 2000 conocido como la crisis de las Punto Com y la crisis del 2008 conocido como la crisis Subprime. Sin embargo, estas crisis fueron ajenas a mi, quizás porque era muy pequeño, quizás porque crecí en un ambiente de pobreza extrema y bien o mal al menos no me faltaba un techo ni comida. No es que viviera en una casa super cómoda, pero tenía un techo, bien o mal tenía un techo. En cuanto a la alimentación teníamos maíz y frijol y eso bastaba para sobrevivir.
Por estas razones no puedo contarles que se siente vivir en una crisis económica pero a medida que sigan leyendo les iré relatando como se fue dando este evento, las decisiones que tomé, algunas buenas y otras malas, siempre guiándome por el sentido común, la intuición y en ocasiones improvisando.

22 de Marzo del 2020
A esta fecha los primeros sectores en caer fueron las aerolíneas, los cruceros, el turismo, el cine, los pubs, las discotecas y los restaurantes cerraron.

La Aerolinea mexicana Volaris se desplomó un 60% y está próxima a declararse en quiebra. La operadora de restaurantes Alsea, que opera pizzas Domino, Startbucks, MacDonalds, y otros restaurantes, también perdió cerca del 60%, aun no se declara en quiebra pero ha iniciado un cierre progresivo, dando vacaciones sin goce de sueldo a sus empleados. Así que el Coronavirus ha terminado por iniciar una crisis económica, no se sabe aun la magnitud ni cuando va a durar.

Pensar en el peor escenario
No es que yo sea pesimista, pero siempre me gusta considerar el peor escenario, me ayuda a mentalizarme, me ayuda a planificar mis próximos movimientos. Así que hoy he pensado en lo siguiente:

1.- Me contagio de Coronavirus
Lo peor que me puede pasar es enfermarme, coger el Coronavirus, para ello voy a necesitar mucho dinero para tratarme, pagar los días en el hospital y los medicamentos. Si sobrevivo espero no recurrir a deuda para pagar todo mi tratamiento. Honestamente no se que tan fuerte sea mi sistema inmunologico.

2.- La empresa en la que trabajo se declara en quiebra
Un error que he cometido es no tener más de un ingreso, mis crecientes inversiones recién estaban generando utilidades pero no lo suficiente para costear mi calidad de vida. Un consejo queridos sobrinos, diversifiquen, tengan múltiples ingresos, adquieran múltiples habilidades, cocinar, bailar, plomeria, ya que si se quedan sin trabajo podrán conseguir otro rápidamente. Tengan liquidez para sobrevivir por lo menos 3 meses.

Es increíble pero el mundo puede cambiar en un par de meses, todos los planes a futuro se tienen que re evaluar, posponer o cancelar, porque en una crisis tu prioridad es sobrevivir. Pero algo muy importante que tienes que tener presente es mantener la calma, hay situaciones que no puedes controlar y no vale la pena desgastarse, ahorren energía para cuando llegue lo peor.

27 de Marzo del 2020
597,072 infectados en todo el mundo, 27,333 muertos, 131,007 recuperados. En México 717 infectados y 12 muertos. En Chile 1,700 infectados y 6 muertos.
Yo creo que estoy bien, aun no estoy contagiado, o al menos no presento los síntomas, estoy tomando las precauciones necesarias sin caer en la paranoia.
Ayer se decretó cuarentena, todos a encerrarse en casa, evitar salir salvo en casos excepcionales y con un permiso temporal. He realizado inventario de víveres y he decidido racionalizar. Lo más practico ha sido almacenar granos (arroz, frijoles, garbanzos y maíz) y papas. Estos víveres son los que más perduran en el tiempo, se vienen días muy difíciles y por ello he decido racionalizar, afortunadamente cuento con todo lo necesario para cocinar.
Las bolsas de todo el mundo han caído al menos un 40%, para los que tienen mucha liquidez pronto será una excelente oportunidad para comprar a aquellas empresas que sobrevivan a esta crisis, claro, si no es que el Coronavirus se los lleva. El dolar se ha disparado al ser una moneda de refugio, mientras siga siendo una moneda de refugio conviene tener un porcentaje de activos en dolares.
Todos los gobiernos del mundo están diseñando medidas para contrarrestar la crisis económica que se avecina, buscan apoyar a las personas más vulnerables, ya sea entregando bonos o subsidios para el pago de gastos básicos.
La infraestructura afortunadamente está funcionando, por infraestructura me refiero a la red eléctrica, el agua, el gas, el Internet. Hoy más que nunca el Internet cobra relevancia ya que permite el tele trabajo o trabajo remoto.
En estos momentos debemos apelar a nuestra humanidad, dejar el individualismo y apoyar a medida que podamos, la única manera de salir adelante es estando unidos.
Que Dios bendiga a América.

11 de Abril del 2020
1,733,792 infectados en todo el mundo, 107,520 muertos. En México 3,844 infectados y 233 muertos. En Chile 6,927 infectados, 73 muertos. Yo la sigo librando, no estoy contagiado ni quiero estarlo. La cuarentena se ha extendido por otros 15 días, haber racionalizado mis víveres fue una excelente decisión, aun tengo comida para por lo menos 3 meses. El panorama es desolador, millones se han quedado sin empleo, Estados Unidos lidera en números de contagiados y muertos, China ya parece haber superado esta pandemia mientras que México y Chile recién están entrando a la etapa más critica. Desde mediados de Marzo he reducido mis gastos al mínimo, Netflix, Mens Health, mi plan de datos en México, la Tv, y todo lo que no sea necesario lo he cancelado. Fue una excelente decisión para optimizar mis recursos. También estamos buscando asegurar la sobre vivencia de la empresa vamos a tomar decisiones complejas, una de ellas es reducir los salarios, ante situaciones criticas se deben hacer sacrificios, sin sacrificios no podremos sobrevivir.
Las acciones que estoy tomando:
1.- Racionalización de mis víveres
2.- Consumo inteligente, granos, legumbres y cereales
3.- Mover mis reservas económicas a Bitcoin y diversificarme, una parte a México y otra en Chile.
4.- He actualizado mi seguro medico en caso de contagiarme
5.- Hacer ejercicio, principalmente cardio, ayuda a combatir el estress.
6.- Dormir mejor, ayuda a equilibrar el consumo de energía

Se promulga la ley de la protección al empleo

Llegan las vacunas

Las bolsas se recuperan

El primer, segundo y tercer retiro

La inflación se dispara y se ven los efectos reales del Covid 19

Dicen por ahí que el tiempo es el mejor y hoy podemos decir que el gobierno es pésimo tomando decisiones 

Que pueden aprender de esta crisis

Esta sección será muy importantes, para ustedes queridos sobrinos. Voy a documentar todo lo que estoy aprendiendo de esta crisis.

1.- Tengan un fondo para la salud, un buen seguro también, así no desembolsan o recurren a deuda para pagar sus gastos médicos.

2.- Tengan una vivienda propia, no importa donde, si es en la ciudad mejor, pero si no pueden en la ciudad entonces en el campo, es mejor una vivienda en el campo a no tener nada. Cuando me quede sin liquidez me iré de la ciudad

3.- Los primeros sectores en caer son las Aerolíneas, el Turismo, y los Restaurantes. Si tienen acciones de estás empresas deben venderlas, pues una pandemia obligará a una cuarentena. La gente ya no viajará, la gente ya no va a salir a comer afuera, la gente pensará en ahorrar y no gastar en lujos y comodidades.

sábado, 21 de marzo de 2020

Line Display Java POS

Java POS

Java POS es un estándar, un conjunto de clases e interfaces que nos permiten interactuar con los dispositivos de un punto de venta. Dispositivos como la impresora de recibos, el escaner de código de barras, el visor de 2x20, entre muchos otros dispositivos.
Java POS te facilita la interacción con estos dispositivos, tu aplicación se comunica con objetos que modelan los dispositivos físicos, tu aplicación envía mensajes a estos objetos quienes a su vez se comunican con una capa inferior que maneja los comandos y protocolos de comunicación de bajo nivel para interactuar con los dispositivos físicos.

En este curso te voy a entregar toda mi experiencia, tips, trucos y buenas practicas para que puedas integrar los dispositivos de venta a tu aplicación POS.

jueves, 9 de enero de 2020

Carta de un padre Azteca a su Hijo

CARTA DE UN PADRE AZTECA A SU HIJO
Hace años ordenando cosas antiguas en la casa de mis padres me encontré con una carta muy antigua, "Carta de una madre azteca a su hija", lo puedes leer aquí.

Sospechaba que debía de existir también una carta "De un padre azteca a su hijo", y la encontré, aquí la carta.

“Hijo mío, has salido de tu madre, como el pollo del huevo, y creciendo como él, te preparas para volar por el mundo, sin que nos sea dado saber por cuanto tiempo nos concederá el cielo el goce de la piedra preciosa que en ti poseemos; pero sea lo que fuere, procura tu vivir rectamente.

Reverencia y saluda a tus mayores y nunca les des señales de desprecio. No estés mudo para con los pobres y atribulados; antes bien date prisa a consolarlos, con buenas palabras.

Honra a todos, especialmente a tus padres, a quienes debes obediencia, temor y servicio. Guárdate de imitar el ejemplo de esos malos hijos, que a guisa de brutos, privados de razón, no reverencian a los que les han dado el ser, ni quieren someterse a sus correcciones: porque quien sigue sus huellas tendrá fin desgraciado y morirá lleno de despecho, o lanzado en un precipicio, o entre las garras de las fieras”.

“No te burles de los enfermos o de los quien tienen alguna imperfección en su cuerpo. No te mofes del que veas cometer alguna culpa o flaqueza, ni se la eches en cara; confundete, al contrario, y teme que te suceda lo mismo que te ofende en los otros.

No vayas a donde no te llaman, ni te ingieras en lo que no te importa. En todas tus acciones demuestra tu buena crianza. Cuando converses con alguno, no lo molestes con tus manos, ni hables demasiado, ni interrumpas o perturbes a los otros con tus discursos.

Si oyes hablar a alguno desacertadamente, y no te toca corregirlo, calla; si te toca, considera antes lo que vas a decirle, y no le hables con arrogancia, a fin de que sea mas agradecida tu corrección”.

“Cuando alguien hable contigo, óyelo atentamente y en actitud comedida, o jugando con los pies, ni mordiendo la capa, ni escupiendo demasiado, ni alzándote a cada instante si estás sentado; pues estas acciones son indicios de ligereza y mala crianza”.

“Cuando te pongas a la mesa, no comas aprisa ni des señales de disgusto si algo no te agrada. Si a la hora de comer viene alguno, parte con él lo que tienes, y cuando alguno coma contigo, no fijes en el tus miradas”.

“Cuando andes, mira por donde vas para que no te tropieces con los que pasan. Si ves a alguno por el mismo camino, desvíate un poco para hacerle lugar. No pase nunca por delante de tus mayores, sino cuando sea absolutamente necesario, o cuando ellos te lo ordenen. Cuando comas en su compañía, no bebas antes que ellos, y sírveles lo que necesiten para granjearte su favor”.

“Cuando te den alguna cosa, acéptala con demostraciones de gratitud. Si es grande no te envanezcas; si es pequeño, no lo desprecies; no te indignes, ni ocasiones disgustos a quien te favorece. Si te enriqueces no te insolentes con los pobres ni con los humildes; que los dioses que negaron a otro las riquezas para dártelas a ti, pueden quitártelas para dárselas a otros. Vive del fruto de tu trabajo, porque así te será mas agradable el sustento”.

“No mientas jamás. Cuando refieres a alguno lo que otro te ha contado, di la verdad pura sin añadir nada. No hables mal de nadie. Calla lo malo que observes en otro si te toca corregirlo. No sea noticiero, ni amigo de crear discordias. Cuando lleves algún recado, si el sujeto a quien se lo llevas se enfada y habla mal de quien lo envía no vuelvas a él con esa respuesta, sino procura suavizarla y disimula cuando puedas lo que hayas oído, a fin de que no se susciten disgustos y escándalos de que tengas que arrepentirte”.

No te entretengas en el mercado mas del tiempo necesario, pues en esos sitios abundan las ocasiones de correr excesos”.

“No seas disoluto porque se indignarán de ti los dioses, y te cubrirán de infamia. Reprime tus apetitos, pues aún eres joven y aguarda que llegue a edad oportuna la doncella que los dioses te han destinado para mujer. Déjalo a su cuidado, pues ellos sabrán disponer lo que mas te convenga. Cuando llegue el momento de casarte no te atrevas a hacerlo sin el consentimiento de tus padres, porque tendrás un éxito infeliz”.

“No hurte ni te des al robo; pues serás el oprobio de tus padres, debiendo mas bien de servirles de honra en galardón de la educación que te han dado. Si eres bueno, tu ejemplo confundirá a los malos. No mas, hijo mio: esto basta para cumplir las obligaciones de hijo. Con estos consejos quiero fortificar tu corazón.

No los olvides ni desperdicies, pues de ellos depende tu vida y toda tu felicidad”.

miércoles, 1 de enero de 2020

Parseando un archivo XML con SAX Parser

Parseando un archivo XML usando SAX Parser

SAX, también conocido como una API simple para XML, es usado para parsear (del archivo xml a objetos) documentos XML.
En este tutorial, vamos a aprender lo que SAX es, por qué, cuando y como debería de usarlo.

SAX es un API usado para parsear documentos XML. Está basado en eventos generados mientras va leyendo el documento. Metodos Callback reciben estos eventos. Una clase manejadora contiene estos metodos Callbacks.
El API es eficiente porque los eventos son desechados después de que los metodos Callbacks los han recibido y procesado. Por lo tanto, SAX es eficiente con el manejo de memoria, a diferencia de DOM, por ejemplo.

SAX vs DOM
DOM mantiene un Modelo de Objetos para el Documento. El parser DOM no trabaja sobre eventos. En realidad, carga todo el documento XML en memoria. SAX es más eficiente en el manejo de la memoria que DOM.
DOM tiene la ventaja de facilitar el realizar operaciones en todo el documento una vez que el documento ha sido cargado en memoria.

En el ejemplo vamos a parsear un archivo xml que tiene una lista de Clientes, los clientes tienen los atributos nombre y teléfono, aquí el xml.
Nota: El archivo xml lo debes colocar en la raíz de tu proyecto

Y aquí tienes la clase




SAX Parser lee el archivo XML de arriba hacía abajo, de izquierda a derecha y dispara los siguientes eventos:

- Inicio del Documento
- Inicio de un Elemento
- Fin de un Elemento
- Fin del Documento