teleren/devto huggingface dataset:
Wednesday Links - Edition 2021-05-05
Tags: kotlin, java, jvm, spring
Published: 2021-05-05 15:00:46

Kotlin 1.5.0 has been released (10m read) 🚀
https://blog.jetbrains.com/kotlin/2021/05/kotlin-1-5-0-released/

How the encapsulation of Java runtime internals is conducted (17m read) 🙀
https://blogs.oracle.com/javamagazine/java-runtime-encapsulation-internals

Multitenancy architecture with Spring, JPA, Hibernate... (16m read) 🧺
https://medium.com/deviniti-technology-driven-blog/implementing-multitenancy-architecture-spring-boot-jpa-hibernate-flyway-8fb19b312a10

In-depth explanation how Spring Security works (11m read) 🧬
https://boudhayan-dev.medium.com/demystifying-spring-security-setup-e0491acc7df7

Learn how to forge your custom Java collector (5m read) ⛓
https://blog.frankel.ch/real-world-stream-collector/

Redelivery patterns in RabbitMQ (9m read) 📨
https://blog.softwaremill.com/redelivery-with-rabbitmq-5a32ce8269f1

Use power of jq to navigate over large jsons (19m read) 👣
https://reflectoring.io/exploring-a-spring-boot-app-with-actuator-and-jq/

Thread dumps explained in details (14m read) 🚧
https://reflectoring.io/analyzing-thread-dumps/

Builder/Wither for java.lang.record (3m read) 😈
https://github.com/Randgalt/record-builder
WAO: How do you measure Developers?
Tags: watercooler, discuss, wronganswersonly
Published: 2021-05-05 14:48:18

_Cover photo by [Michal Matlon](https://unsplash.com/@michalmatlon?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) on [Unsplash](https://unsplash.com/s/photos/wrong-answer?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText)_
 
---

# Wrong Answers Only

How do you measure a developer? How do you know that they're 10x or a ninja or a unicorn?

---

Comment your wrong answer!
Kotlin SpringBoot configure Apache Log4j2
Tags: kotlin, springboot, log4j2
Published: 2021-05-05 14:41:16

Kotlin SpringBoot configure Apache Log4j2

https://grokonez.com/spring-framework/spring-boot/kotlin-spring-boot/kotlin-springboot-configure-apache-log4j2

<strong>Apache Log4j2</strong> is an upgrade to <strong>Log4j</strong> that provides significant improvements over its predecessor, Log4j 1.x, and provides many of the improvements available in Logback while fixing some inherent problems in Logback’s architecture. The tutorial will introduce way to configure <strong>Apache Log4j2</strong> with <strong>Kotlin</strong> SpringBoot.

<!--more-->
<h2>I. Technologies</h2>
– Java 1.8
– Maven 3.6.1
– Spring Tool Suite – Version 3.9.0.RELEASE
– Spring Boot – 1.5.9.RELEASE
– Kotlin
<h2>II. Practice</h2>
We use <strong>SpringToolSuite</strong> to create a <strong>Kotlin SpringBoot</strong> project as below structure:

<img src="https://grokonez.com/wp-content/uploads/2017/12/Kotlin-SpringBoot-configure-Apache-Log4j2-project-structure.png" alt="Kotlin SpringBoot configure Apache Log4j2 - project structure" width="351" height="165" class="alignnone size-full wp-image-9749" />

<strong>Step to do</strong>:
- Configure SpringBoot Log4j2 dependencies
- Create a Simple Controller
- Configure Log4j2.xml
- Build & Run
<h3>1. Configure SpringBoot Log4j2 dependencies</h3>
– Exclude <strong>logback</strong> from default log dependency of SpringBoot:

<pre><code class="language-html">&lt;dependency&gt;
	&lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
	&lt;artifactId&gt;spring-boot-starter&lt;/artifactId&gt;
	&lt;exclusions&gt;
		&lt;exclusion&gt;
			&lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
			&lt;artifactId&gt;spring-boot-starter-logging&lt;/artifactId&gt;
		&lt;/exclusion&gt;
	&lt;/exclusions&gt;
&lt;/dependency&gt;</code></pre>

– Add <strong>Spring Web MVC</strong> dependency:

<pre><code class="language-html">&lt;dependency&gt;
	&lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
	&lt;artifactId&gt;spring-boot-starter-web&lt;/artifactId&gt;
&lt;/dependency&gt;</code></pre>

– Add <strong>Log4j2</strong> dependency

Kotlin SpringBoot configure Apache Log4j2

https://grokonez.com/spring-framework/spring-boot/kotlin-spring-boot/kotlin-springboot-configure-apache-log4j2
The Land Before Internet: How everyday computer terms got their names
Tags: history, etymology, technology, ui
Published: 2021-05-05 14:28:34

3 Years ago last month I made a simple tweet then went to bed.

{% twitter 988819505534009344 %}

It was one of those aha "I feel like an idiot for not making that obvious connection" moments. 

Well as it turns out a lot of people felt the same way because I woke up to dozens of notifications. Years later, at 1.2 million impressions it's still my most active tweet (by a long shot). In the replies, twitter user "HTeuMeuLeu" followed up with this equally interesting bit of technology naming history:

{% twitter 989161155716374528 %}

Referring to the 'case' of letters used by printing press operators and the upper part of the case and lower part of the case to store the letters. 

This got me thinking about what other terms have a long history hiding in plain sight. Wikipedia has a list dedicated to the subject: https://en.wikipedia.org/wiki/List_of_computer_term_etymologies

I'm just going to pick out a few favourites:

## Cursor

![Cursor](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1flkdru1lmafh2wlqtag.jpg)

Cursor is Latin for 'runner.' A cursor is the name given to the transparent slide engraved with a hairline that is used for marking a point on a slide rule. The term was then transferred to computers through analogy.

## Dashboard

![Dashboard](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nrejp8q62fzuufrbs668.png)

Originally, the word dashboard applied to a barrier of wood or leather fixed at the front of a horse-drawn carriage or sleigh to protect the driver from mud or other debris "dashed up" (thrown up) by the horses' hooves.

## Patch

![Patch](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7u1703l7w7of89mmens3.png)

Historically, software suppliers distributed patches on paper tape or on punched cards, expecting the recipient to cut out the indicated part of the original tape (or deck), and patch in (hence the name) the replacement segment.

## Ping

![Ping](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qvl8bunm1ijlbfqrq0oi.jpeg)

The author of ping, Mike Muuss, named it after the pulses of sound made by a sonar called a "ping".
Anotações Capítulo 1: Clean Code
Tags: books, codequality
Published: 2021-05-05 14:05:25

- Sempre haverá um código!

- Um código ruim sempre é ruim, pode nos atrasar, ou até mesmo acabar com uma empresa!

- Lei de LeBlanc: Nunca é tarde.

- O tempo gasto para limpar o código não é um desperdício e sim uma necessidade;

- **Atitude**: Programadores não devem ceder a vontade dos gerentes para fazer um código ruim.

- **O principal dilema**: Bagunças antigas reduzem o tempo e mesmo assim são feitas para cumprir o tempo.

- **A arte do código limpo**: 
- Podemos saber o que é um código ruim, mas é difícil saber como transformar esse código ruim em um código bom.
- A “sensibilidade ao código” (“code-sense”) ajuda a escolher a melhor alternativa para proteger o código de alterações futuras;

## O que é um código Limpo?

### Bjarne Stroustrup:
- Código natural, que possamos ler com naturalidade;
- Que não incita o crescimento do caos;
- Um código limpo requer bastante atenção aos detalhes;
- “Um código limpo faz bem apenas uma coisa”.
## Grady Booch:
- “Ler um código limpo deve ser como ler uma conversa bem escrita”;
- Um código limpo deve ser “claro”, ou seja direto, decisivo sem desvios ou detalhes desnecessários, portanto deve conter apenas o necessário.

### Dave Thomas:
- “Um código limpa facilita para que outras pessoas o melhorem”;
- Um código sem testes não está limpo, não importa o quão elegante e legível ele seja.
- Um código limpo é pequeno, assim quanto menor, melhor!
- Deve ser fácil para os seres humanos entender!

### Michael Feathers:
- Um código limpo foi bem cuidado por alguém.
- Alguém manteve o código simples e organizado.

### Ron Jeffries:
- Código limpo: Sem duplicação, uma tarefa, expressividade (nomes), pequenas abstrações.

### Ward Cunnigham:
- O código limpo é óbvio, simples e convincente;
- Tudo está onde esperamos que esteja;
- É nossa responsabilidade fazer a linguagem parecer simples;

## Escolas de pensamento:

- Para Bob, o código limpo é várias coisas, pegando partes do que os outros acima já falaram, como nomes limpos de variáveis, funções limpas, classes limpas e etc.
- Nenhuma escola ou conceito está 100% certo, mas para aqueles que a seguem é uma certeza, por isso diversificar é o ideal, não ficar apenas com uma única escola ou abordagem mas várias.

## Somos Autores:

- Escrevemos para outras pessoas através do código, e outros vão ler, e precisam entender, por isso o código deve ser de fácil leitura. Devemos sempre tornar o código de fácil leitura, isso vai fazer com que possamos fazer o código mais rápido e outros que vão usar o código futuramente também.

## A regra do escoteiro:
- “Não basta escrever um código bom. Ele precisa ser mantido sempre limpo”.
- “Devemos deixar o código mais simples do que quando encontramos”.
Announcing NubesGen, an Open Source tool to automate Azure deployments
Tags: azure, terraform, github, docker
Published: 2021-05-05 14:22:07

---
title: Announcing NubesGen, an Open Source tool to automate Azure deployments
published: true
description: NubesGen is an Open Source tool that 
tags: azure, terraform, github, docker
---

__Going to production on Azure is only one `git push` away__

## What is NubesGen?

NubesGen [https://nubesgen.com/](https://nubesgen.com/) is a Microsoft Open Source project, which provides a Web application that generates an Azure infrastructure graphically: you select easy-to-understand options ("an application server", "a PostgreSQL database"), and it'll generate a state-of-the-art Terraform configuration that you can import and tweak in your project.

Using [GitOps practices](https://github.com/microsoft/NubesGen/blob/main/docs/gitops-overview.md), NubesGen can also fully automate applying that configuration: it provides one cloud infrastructure per branch in your project, and will build and deploy your code to this infrastructure.

As a result, you can just `git push` your code to Azure and both the infrastructure and the application deployment are handled for you. No need to go to the Azure portal, or learn how to configure everything!

## Video tour of NubesGen, in less than 15 minutes

{% youtube BHAX8BIkP-s %}

## What is the state of the project?

NubesGen is Open Source, and uses the [MIT license](https://github.com/microsoft/NubesGen/blob/main/LICENSE).

It's currently under development, but we already have a good number of people who tested it, which makes us confident to do a first technical preview release.

You can already use it:

- There is a running instance of the project at [https://nubesgen.com/](https://nubesgen.com/)
- The source code is available at [https://github.com/microsoft/nubesgen/](https://github.com/microsoft/nubesgen/), as well as pre-built packages and Docker images on our [release page](https://github.com/microsoft/NubesGen/releases).

## Contributing to the project

Currently NubesGen supports Azure App Service and Azure Functions, as well as some of their most popular options (MySQL, PostgreSQL, Blob Storage, Redis, Cosmos DB, etc.). We're looking for feedback and contributions to improve this existing support first.

Once we have a stable code base for those popular options, we'll then expand the number of supported services, with offers like Azure Kubernetes Services, Azure Spring Cloud, Azure Service Bus. So if you know any of those technologies and are willing to contribute, don't hesitate to ping us and join!

And as any new project, we'll be delighted to count you as one of our stargazers at [https://github.com/microsoft/NubesGen/stargazers](https://github.com/microsoft/NubesGen/stargazers)!

## What's next?

The best way to learn about NubesGen is to go to [https://nubesgen.com/](https://nubesgen.com/) and use it!
extender.linksys.com login setup
Tags: extenderlinksyscom, guide, extenderlinksys
Published: 2021-05-05 14:15:27

# extender.linksys.com login setup


Linksys WiFi Extender is the answer to your WiFi lag problem. The correct step to configure Extender.linksys.com is to go to the pump website. Below are the basic steps for setting up and logging in to your Linksys device.

## Linksys Extender setup - extender.linksys.com

* Open the Linksys Extender web-based company at [extender.linksys.com](https://extenderllnkys.com/).
* Find the Linksys Extender page by typing 192.168.1.1 into your browser's address bar.
* Enter your login details on the Linksys Connect link login page; Username and password for advanced access to [Linksys Extender Login](https://extenderllnkys.com/).
* Go to the Linksys Extender setup page and let the installer search for nearby wireless networks.
* Select WiFi router network and enter WiFi password to connect to WiFi. 
* If you have a dual-band network, repeat these steps to expand your network to 5 GHz.
* To configure the Linksys Extender's WiFi settings, go to the Wireless tab and change the WiFi name and password.
* Check and apply the latest updates and wait for the Linksys Extender to restart.
Why did I choose React for web development
Published: 2021-05-05 00:27:16

There are many frameworks and libraries available for frontend development. And those are very good for web development.
But I choose to learn React.
Here are some reasons why I choose React.js

1. Easy to learn
React is easy to learn and that is one of the most important reasons to choose this library. As it doesn’t take much time to learn this technology, you can quickly begin to build things with it.

2. Rich user-interfaces
React lets you build rich user-interfaces easily. Quality of user-interfaces is important because a poorly designed user-interface is generally less user-friendly and the users will not like a poorly designed UI.
Of course, you can build cool interfaces with other technologies too, but React lets you do it easily using the declarative components.

3. Trusted by great companies
React has been developed by Facebook and used by great companies such as Dropbox, Khan Academy, CodeAcademy, Netflix, Airbnb, PayPal, Walmart, Tesla Motors, IMDb, and so on. 
And the Facebook developers keeps on upgrade and maintain the React.js.
It means you can use React.js wihtout any troubles.

4. Easy transition to React Native
React Native is a mobile development framework, based on React. Thus, it is easy for React JS developers to switch to React Native and create mobile apps. 
Moreover, some parts of your React web app can be reused in a React Native mobile app, which improves the development speed.

That's why I choose the React.js for web development.

Thanks for reading my post.
Part 2: Get started with the Go Programming Language with Microsoft Learn! (no experience needed)
Tags: programming, productivity, opensource, go
Published: 2021-05-05 13:51:13

---
title: Part 2: Get started with the Go Programming Language with Microsoft Learn! (no experience needed) 
published: true 
description: Learn how to get started with the Go Programming Language
series: "#GoLang For Beginners"
tags: programming, productivity, opensource, go
cover_image: https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bblp1b4zo4clrwgodue3.png
---

Hello everyone, 

I'm back again with part 2 of this Go Lang series. I was always wanting to learn more about it but never dedicated the time. Fast-forward to today and I'm learning it live on my Twitch stream using [Microsoft Learn's](https://learn.microsoft.com) free, online training platform. 

In this lesson, We cover how to: 

* Declare variables and constants
* Learn about the basic data types available in Go
* Write functions
* Create and use packages

Video (21 mins)

{% youtube zuhnzIlDgwQ%}

[MS Learn Module](https://docs.microsoft.com/en-us/learn/modules/go-variables-functions-packages/).


## Part 1 

We cover how to: 

* Install and configure Go on your local workstation.
* Install and configure Visual Studio Code and the Go extension.
* Explore the Go Playground.
* Create your first Go application.

Video (12 mins)

{% youtube P_rwJDGy3Ng%}

[MS Learn Module](https://docs.microsoft.com/en-us/learn/modules/go-get-started/).

Conclusion

Feel free to checkout my [Twitch streams](https://twitch.tv/mbcrump) as we learn about security and app development or you can watch the condensed version of all of my streams by subscribing to my [YouTube](https://youtube.com/mbcrump). 

Stay connected with me on social platforms for daily software development news.

-[Twitter](https://twitter.com/intent/follow?screen_name=mbcrump) | [Twitch](https://twitch.tv/mbcrump) | [Instagram](https://instagram.com/mbcrump) | [YouTube](https://youtube.com/mbcrump) | [GitHub](https://github.com/mbcrump) | [Website](https://www.michaelcrump.net)
How to configure multi Postgres DataSources with Springboot
Tags: springboot, postgres, datasource
Published: 2021-05-05 13:49:11

https://grokonez.com/java-integration/configure-multi-postgres-datasources-springboot

How to configure multi Postgres DataSources with Springboot

In the tutorial, <strong>JavaSampleApproach</strong> will guide you how to configure multi Postgres DataSources with Spring Boot.

<!--more-->
<div id="tuttoc" class="jsa-toc"></div>

<div id="tutcontents">
<h2>I. Technologies for Multi Postgres Datasources tutorial</h2>
– Java 1.8
– Maven 3.3.9
– Spring Tool Suite – Version 3.8.1.RELEASE

<h2>II. Overview</h2>
<h3>1. Project Structure</h3>
<img src="https://grokonez.com/wp-content/uploads/2017/01/springboot-configure-multi-postgres-datasources.png" alt="springboot configure multi postgres datasources" width="678" height="481" class="alignnone size-full wp-image-2403" />

- <strong>Model</strong>: Customer.java
- <strong>Dao Layer</strong>: CustomerDao.java is an interface and CustomerDaoImpl.java is an implementation of CustomerDao.java.
- <strong>DataSource</strong>: Configured in DataSourceBeans.java
- <strong>application.properties</strong>: used to define properties of data sources.

<h3>2. Step to do</h3>
- Create SpringBoot project.
- Setup Postgres Databases.
- Configure Datasource properties in <strong>application.properties</strong> file.
- Create a Model class.
- Build Dao Layer.
- Build a Client.

<h2>III. Practice</h2>
<h3>1. Create SpringBoot project.</h3>
Open Spring Tool Suite, on main menu, choose <strong>File->New->Spring Starter Project,</strong> input project's info.

More at:

https://grokonez.com/java-integration/configure-multi-postgres-datasources-springboot

How to configure multi Postgres DataSources with Springboot
Useful API For Your Project
Tags: webdev, beginners, productivity
Published: 2021-05-05 13:46:31

1. [PokeAPI](https://pokeapi.co/)

2. [TheMealDB](https://www.themealdb.com/api.php.) (Food API)

3. [Marvel API](https://developer.marvel.com/)

4. [Github](https://api.github.com)

5. [Openweather API](https://openweathermap.org/)

6. [Google Map API](https://developers.google.com/maps/)

7. [Covid19 API](https://api.covid19api.com/)

8. [Movies API](https://developers.themoviedb.org/3)

Bônus:
- [Public Apis](https://github.com/public-apis/public-apis) - Repositório do Github com diversas APIs.
Cuál es la mejor librería para hacer PDF desde PHP
Tags: php, pdf
Published: 2021-09-16 12:12:51

---
title: Cuál es la mejor librería para hacer PDF desde PHP
published: true
date: 2021-05-05 13:39:30 UTC
tags: PHP,PDF
canonical_url: https://academy.leewayweb.com/cual-es-la-mejor-libreria-para-hacer-pdf-desde-php/
---

Si desarrollás aplicativos para empresas apuesto que te habrás topado con la necesidad de emitir reportes en PDF, ¿cierto? Un caso típico es el de generar facturas. De por sí es un tema integrarte con los webservices del fisco (Léase AFIP, SUNAT, DGI, DIAN, etc…) y cuando pensaste que todo era cuesta abajo a partir […]

La entrada [Cuál es la mejor librería para hacer PDF desde PHP](https://academy.leewayweb.com/cual-es-la-mejor-libreria-para-hacer-pdf-desde-php/) se publicó primero en [Leeway Academy](https://academy.leewayweb.com).
Git Cheat Sheet👨‍💻
Tags: github, programming, git, githunt
Published: 2021-05-05 13:30:07

This cheat sheet features the most important and commonly used Git commands for easy reference.

------------------------------------------------------------

### ☑️ CREATE
For Existing Data

    cd ~/Projects/MyProject
<br/>

    git init 
<br/>

    git add .

From Existing repo

    git clone ~existing/repo ~/new/repo
<br>

    git clone you@host.in:dir/project.git
<br>
```default protocol is ssh```

------------------------------------------------------------
		
### ☑️ UPDATE

Fetch Leatest Change From Origin

    git fetch
<br />

```this does not merge them```

Pull leatest chage from origin

    git pull
<br/>

```does a fetch followed by a merge```

Apply a Patch that someone sent you

    git am -3 patch.mbox
<br/>

```In case of conflict, resolve the conflict and ```

    git am --resolve

--------------------------------------------------------

### ☑️ PUBLISH

Git commit all local change

    git commit -a
<br/>

Git commit with message 

    git commit -m 'message'
<br/>

Preapre a patch for other developers

    git format-patch origin
<br>

push change to origin

    git push [origin] [branch]
<br>

Make a version or milestone

    git  tag <vesrion_name>
<br>

Push the tag

    git push origin Tagname
<br>

Push All tag

    git push origin --tags
<br/>

Delete tag 

    git tag -d <Tagname>
<br>

------------------------------------------------------------

### ☑️ BRANCH

Switch to the BRANCH branch

    git checkout <BRANCH>
<br>

Merge branch B1 into branch B2

    git checkout <B2>
<br>

    git merge <B1>
<br>


Create branch based on HEAD

    git branch <BRANCH>
<br>

Create branch based on another

    git checkout <new> <base>
<br>

Delete Branch

    git branch -d <branchName>
<br>

-------------------------------------------------------------

### ☑️ REVERT

Return to the last committed state

    git checkout -f | git reset --hard
<br>

```youcannot do the hard reset```
<br>

Revert the last commit 

    git revert HEAD
<br>

```create a new commit```
<br>

Fix the last commit 

    git commit -a -amend
<br>

```after editing the broken files```

Checkout the ID version of file 

    git checkout <ID> <file>
<br>

-------------------------------------------------------------

### ☑️ SHOW

File changed in working directory

    git status
<br>

Change to tracked files

    git diff
<br>

Change between ID1 and ID2

    git diff <ID1> <ID2>
<br>

History of change 

    git log
<br>

History of change with files changed

    git whatchanged
<br>

Who Changed what and when in a file

    git blame <file>
<br>

A commit identifyby ID

    git show <ID>
<br>

A specific file from a specific ID

    git diff <ID>:<FILE>
<br>

All local branched 

    git branch
<br>

```star "*" mark the current branch```

Search for patterns

    git grep <pattern> [path]
<br>

------------------------------------------------------------


#### <center> < 👨‍💻 Thank you For Your Time ....‍💻‍💻  />  </center>