- Java
- Spring Boot
- Spring Boot AOP
- Spring Boot RESTful
- Spring Boot Handler Exception
- Spring Boot Internationalization
- Spring Boot JPA
- Spring Boot Externalization
- Spring Boot Bootstrap
- Spring Boot Testing
- Spring Boot Validation
- Spring Boot Testing Validation
- Spring Boot Security
- Spring Boot Security using Database
- Spring Boot Rest Client
- Spring Boot Actuator
- Spring Boot JDBC Template
- Spring Boot Flyway
- Spring Boot Liquibase
- Spring Boot Logback
- Spring Boot Thymeleaf Layouts
- Spring Boot Swagger
- Spring Boot Oauth2 with Google
- Spring Boot Ehcache
- Spring Boot Appium Cucumber
- Spring Boot Parameters
- Spring Boot Profiles
- Spring Boot Retrofit2 Cucumber & Junit5
- Spring Boot Testing Web Layer
- Spring Boot Publishing an Artifactory Library
- Spring Webflux Basics
- Spring Webflux Server
- Spring Webflux Client
- Spring Webflux Security
- Spring Webflux Security Database
- Spring Webflux with Thymeleaf
- Spring Boot JMS
- Spring Webflux Cucumber
- Spring Boot WebClient
- Spring Boot WebClient Cucumber and Junit5
- Spring Webflux Multi-Module
- Spring Weblux Internationalization
- Spring Weblux Testing Web Layer
- Spring Boot Hazelcast
- Spring Boot JsonNode
- Spring Boot Server-sent Event
- Spring Boot Server-sent Event Client
- Spring Boot H2
- Spring Webflux URI Validator
- Spring Webflux Webclient Headers
- Spring Boot XML Schema
- Spring Webflux JAXB
- Spring Webflux Constructor Injection
- Spring Webflux WebSockets
- Android
- UX Development
- Parsing JSON with ajax
- Inquirer & Callback
- Mongoose
- Templating with Swig & Express
- WebdriverIO Getting Started
- Applitools Getting Started
- WebdriverIO Geolocation
- WebdriverIO with Cucumber Getting Started
- WebdriverIO Lighthouse
- Selenium Cucumber And TestNG
- Cypress Getting Started
- Cypress Applitools Integration
- Playwright Getting Started
- Playwright Applitools Integration
- Playwright Reports Deployment
- Refactoring
- Algorithms
- Best Practices
- Continuous Integration & Delivery
- Sysadmin
- Python
Why do people use Python?
Software quality (readable, reusable and maintainable) Developer productivity (is typically one-third to one-fifth the size of equivalent C++ or Java code) Program portability (Most Python programs run unchanged on all major computer platforms) Support libraries (Python comes with a large collection of prebuilt and portable functionality) Component integration (Python scripts can easily communicate with other parts of an application) Enjoyment (Easy to built-in toolset) Is Python a “Scripting Language”
[Read More]
Spring Boot in Nginx server
In this technical post we will review how we can deploy a Spring Boot application using reverse proxy in a Nginx server. Please read this previous Spring Boot Setup post before continue this this information. I am using Nginx server 1.15.5 in Ubuntu 18.10. First, let’s create a new file description service in: /etc/systemd/system/spring-boot-setup.service with this information:
[Unit] Description=Spring Boot Setup After=syslog.target After=network.target[Service] User=josdem Type=simple [Service] ExecStart=/bin/java -jar /opt/springboot-setup-0.0.1-SNAPSHOT.jar Restart=always StandardOutput=syslog StandardError=syslog SyslogIdentifier=spring-boot-setup [Install] WantedBy=multi-user.
[Read More]
Github Actions Remote Trigger
GitHub actions is a popular option to automate all common software workflows such as test, build and deploy. Jenkins was the most popular option for doing the same tasks; with that said, a challenge to connect two platforms will be: How to invoke GitHub action workflows from a Jenkins pipeline. In this technical post, we will go over this approach and we will describe what we need to do. The first step is to create a fine-grained token to get access with some privileges to the target GitHub repository.
[Read More]
Sysadmin
The duties of a system administrator are wide-ranging, and vary widely from one organization to another. Sysadmins are usually charged with installing, supporting, and maintaining servers or other computer systems, and planning for and responding to service outages and other problems. Other duties may include scripting or light programming, project management for systems-related projects.
Jenkins Pipeline
In this technical post, we will review concepts we need to know in order to create and execute Jenkins Pipeline. A pipeline is an expression of our process to implement Continuous Integration, we write our process using a DSL, and this is the basic structure using Groovy
#!/usr/bin/env groovy pipeline { agent any stages { stage('build') { steps { echo 'Hello World!' } } } } where:
agent Instructs Jenkins to allocate an executor echo Writes simple string in the console output stage A phase in our continuous integration process steps All steps within our stage Now lets instruct to Jenkins to obtain your pipeline from Source Control Management (SCM) in this case Github
[Read More]
Jenkins Shell Execution
In this technical post we will cover required configuration we need to setup in our servers in order to execute shell commands or shell scripts using jenkins. you can execute shell in jenkins as a build step like this.
echo "Hello World!" Output
[jenkins-sandbox] $ /bin/sh -xe /tmp/jenkins8545009836235168037.sh + echo Hello World! Hello World! Finished: SUCCESS If you need to execute a shell command with root privileges
sudo systemctl start jugoterapia-webflux Then you have to add jenkins user to the sudoers group /etc/sudoers
[Read More]
Defining and Executing Tasks in Gradle
Gradle is an open-source build automation tool focused on flexibility and performance. Gradle build scripts are written using a Groovy or Kotlin DSL. Using DSL language you write your build script file as you write your development code. Some advantages in use Gradle are:
Acelerate development productivity Build by convention Automate everything Deliver faster persuing performance Multy-module projects Reusable pieces of build logic Intelligent tasks that can check if they need to be executed or not In this post I will show you how to build software using simply but useful Gradle functionality.
[Read More]
Git Basics
In this technical post we will cover the basic and essential commands in Git. Thank you Linus Torvalds for your creations and for making this developer world a best place to live.
The getting started recipe
echo "# git-workshop" >> README.md git init git add README.md git commit -m "first commit" git remote add origin git@github.com:josdem/git-workshop.git git push -u origin master Where:
git init Create a new git repository git add Add a new file git commit -m Commit changes from a single file git remote add Add a new remote repository git push Push your commits to remote repository Branching
[Read More]
Continuous Integration & Delivery
Introduction
The most important problem that we face as software professionals is this: How we deliver to users as quickly as possible? Development pipeline is, in essence, an automated implementation of your application’s build, deploy, test and releases process. The aim in the deployment pipe line is to make every part of the process if building,deploying, testing, and releasing software visible to everybody involved, aiding collaboration, it improves feedback so that problems are identified, and so resolved, as early in the process as possible, finally it enables teams to deploy and release any version of their software to any environment at will through a fully automated process.
[Read More]
SOLID Principles
In object-oriented programming S.O.L.I.D is a term developed by Robert C. Martin and the intention is to describe five important software development design principles, those concepts are:
S — Single Responsibility Principle O — Open-closed Principle L — Liskov Substitution Principle I — Interface Segregation Principle D — Dependency Inversion Principle Single Responsibility Principle Every class should have a single responsibility that it should entirely encapsulate. When a class has more than one reason to be changed, it is more fragile, so changing one location might lead to unexpected behavior in other places.
[Read More]