Entradas

Create a docker image from a spring boot project

In order to create a docker image from a spring boot project, First, your pom.xml has to be configured. <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <!-- Cofiguration for creating a docker image --> <image> <name>chamow01/${project.artifactId}</name> </image> </configuration> </plugin> </plugins> </build> Then, the next maven command needs to be applied, so spring boot uses paketo-buildpacks in order to create a docker image based on you Java code mvn spring-boot:build-image ... [INFO] > Running creator [INFO] [creator] ===> DETECTING [INFO] [creator] 6 of 24 buildpacks participating [INFO] [creator] paketo-buildpacks/ca-certificates 3.2.0 [INFO] [creator] paketo-buildpacks/bellsoft-liberica 9.3.2 [INFO] ...

Configuración de Swagger

Swagger permite documentar las APIS de un proyecto de forma automática. Para usar swagger en un proyecto maven, se debe seguir los siguientes pasos Configuración de dependencias en proyecto maven. <!--SWAGGER--> <dependency> <groupid>io.springfox</groupid> <artifactid>springfox-swagger2</artifactid> <version>2.9.2</version> </dependency> <dependency> <groupid>io.springfox</groupid> <artifactid>springfox-swagger-ui</artifactid> <version>2.9.2</version> </dependency> Crear una clase SwaggerConfig configurada con las anotaciones:  @Configuration @EnableSwagger2 y que retorne un objecto de tipo   Docket @Configuration @EnableSwagger2 public class SwaggerConfig { @Bean public Docket apiDocket() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(getApiInfo()) .select() .apis(RequestHandlerSelectors.any()) .paths(PathSelector...

Ejemplo de diseño de api REST

 Antes de empezar con el diseño de un api REST es necesario definir los recursos que se necesitan para lograr una funcionalidad específica; por ejemplo, a continuación se lista los recursos  necesarios para administrar un listado de actividades por usuario. Obtener el listado de actividades de un usuario específico  GET /users/{user_id}/activities Eliminar una actividad de un usuario específico  DELETE /users/{user_id}/activities/{act_id} Editar una actividad de un usuario específico   PUT /users/{user_id}/activities/{act_id} Crear una actividad de un usuario específico.  POST /users/{user_id}/activitie

Creación de Head Dump en java

Un head dump es una captura de todos los objetos en memoria alojados en la JVM en un determinado momento. Los head dump son una herramienta muy útil para la detección de memory-leaks y optimizar el uso de memoria en las aplicaciones Java. A continuación se muestra un ejemplo de como utilizar la herramienta jmap de la JDK  jmap -dump:[live],format=b,file=<file-path> <pid> Donde: live : Indica que se van a capturar solo los objectos que tienen referencias activas en la JVM y descartar los que están listos para ser recolectados por el garbage collector. format=b : Indica que el archivo dump va a ser generado en formado binario. file : Indica el path donde va a ser escrito el head dump pid : Indica el proceso java a ser capturado Ejemplo: jmap -dump:live,format=b,file=/home/wl/dump.bin 191907 Nota:  El pid se puede obtener con el siguiente comando: ps -fea | grep java | grep -i  'nombre_proceso' | grep -v grep | awk '{print $2}' Donde: nombre_proceso : Es un...

Configuración middleware proxy en React

Imagen
Con la finalidad de evitar bloqueos de tipo CORS-Origin al momento de consumir servicios REST en un ambiente de desarrollo con React Js; es posible, configurar un proxy middleware. 1. Configuración en archivo package.json Colocar la propiedad proxy en el archivo package.json, indicando la url y puerto por el cual se levanta el servidor de desarrollo react. 2. Configuración de archivo setupProxy.js En el directorio /src  un archivo llamado  setupProxy.js y colocar la siguiente información: 3. Verificar /ruta-api  El valor de /ruta-api debe ser el mismo que se utiliza en el llamado fetch para consumir un servicio REST Fuentes:   https://www.npmjs.com/package/http-proxy-middleware#http-proxy-middleware-options

Ejecutar clase Java en .jar con dependencia log4j

Para ejecutar una clase Java (JDK8) que está dentro de un archivo .jar y que además dependa de clases y configuración externa de  log4j , se debe usar el siguiente comando: java -cp wl-tools.jar;log4j-12.jar  -Dlog4j.configuration=file:"./log4j.properties" com.wl.tools.Encriptor.KeyGenerator 456 MD5 Fuentes:   https://stackoverflow.com/questions/8897528/should-log4-properties-be-on-the-classpath

Configuración en Apache para evitar bloqueos tipo CORS-Origin

Es posible evitar el bloqueo por tipo CORS-Origin, realizando la siguiente configuración: <Location /ws-api-login>       SetEnvIf Origin "http(s)?://(.+\.)?(localhost|host\.com)(:\d{1,5})?$" CORS=$0       Header always set Access-Control-Allow-Origin "%{CORS}e" env=CORS          Header merge  Vary "Origin"       Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT"       Header always set Access-Control-Max-Age "1000"       Header always set Access-Control-Allow-Headers "*"          RewriteEngine On       RewriteCond %{REQUEST_METHOD} OPTIONS       RewriteRule ^(.*)$ $1 [R=200,L] </Location> Nota: Se debe habilitar el módulo rewrite LoadModule rewrite_module modules/mod_rewrite.so Fuentes:   https://tecadmin.net/enable-cors-apache/ https://stackoverflow.com/quest...

Error librería de python con npm

Al utilizar npm, es posible que se obtenga un error debido a que no existe python instalado, esto se resuelve ejecutando las siguientes instrucciones. Error python: gyp verb check python checking for Python executable "python2" in the PATH gyp verb `which` failed Error: not found: python2 Solución: npm --add-python-to-path='true' --debug install --global windows-build-tools npm install --global node-gyp Fuentes: 1.  https://github.com/JeremyEnglert/JointsWP/issues/317