2023-03-21

Spring Security

 Spring Boot 3 + Spring Security 6 - JWT Authentication and Authorisation [NEW] [2023]

https://www.youtube.com/watch?v=KxqlJblhzfI


Spring Security Tutorial - [NEW] [2023]

https://www.youtube.com/watch?v=b9O9NI-RJ3o&t=1s


Java Tutorial - Complete User Login and Registration Backend + Email Verification

https://www.youtube.com/watch?v=QwQuro7ekvc&list=PLwvrYc43l1MzeA2bBYQhCWr2gvWLs9A7S&index=3


https://www.youtube.com/watch?v=KYNR5js2cXE

Spring Data JPA

PostgreSQL tips: https://www.youtube.com/watch?v=9SGDpanrc8U&t=2273s

Postgres & docker compose https://youtu.be/-mwpoE0x0JQ?t=3943

https://github.com/amigoscode/microservices/blob/main/docker-compose.yml

docker compose up -d

docker compose ps

docker logs postgres -f

postgres https://youtu.be/p485kUNpPvE?list=PLwvrYc43l1Mwqpf9i-1B1gXfMeHOm6DeY&t=2438

https://github.com/amigoscode/spring-boot-fullstack-professional/blob/6-spring-data-jpa/src/main/resources/application.properties

spring.datasource.url=jdbc:postgresql://localhost:5432/amigoscode

spring.datasource.username=postgres

spring.datasource.password=password

spring.jpa.hibernate.ddl-auto=update

spring.jpa.show-sql=true

spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect

spring.jpa.properties.hibernate.format_sql=true

> docker exec -it postgres bash

psql -U amigoscode

\l  (to list databases)

CREATE DATABASE customer;

CTRL+D

CTRL+D

####

@Id

@SequenceGenerator(

        name = "customer_id_sequence",

        sequenceName = "customer_id_sequence",

        allocationSize = 1

)

@GeneratedValue(

        strategy = GenerationType.SEQUENCE,

        generator = "customer_id_sequence"

)

private Integer id;

##############################

\c customer (connect to db customer)

\dt (list of relations)

\d (list of relations)

\d customer (see table structure)

##########################

Mongo:

Developing with Docker - Docker in Practice || Docker Tutorial 8 https://youtu.be/6YisG2GcXaw?list=PLy7NrYWoggjwPggqtFsI_zMAwvG0SqYCb&t=231

Docker commands: https://gitlab.com/nanuchi/techworld-js-docker-demo-app/-/blob/master/README.md

https://gitlab.com/nanuchi/techworld-js-docker-demo-app/-/blob/master/docker-compose.yaml

https://gitlab.com/nanuchi/techworld-js-docker-demo-app/-/blob/master/Dockerfile

#################################

h2db

spring.h2.console.enabled=true

spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1

spring.datasource.username=sa

spring.datasource.password=

spring.datasource.driver-class-name=org.h2.Driver

spring.jpa.hibernate.ddl-auto=create-drop

spring.jpa.show-sql=true

#spring.jpa.properties.hibernate.format_sql=true


https://youtu.be/5yquJa2x3Ko?t=759 Mapper as Function


2023-03-10

Spring Boot

Create new test: Ctrl +  Shift + t


Security:

 https://amigoscode.com/courses/728126/lectures/13124158

https://www.youtube.com/watch?v=KxqlJblhzfI

https://www.youtube.com/watch?v=b9O9NI-RJ3o

Dan Vega: 

https://www.youtube.com/playlist?list=PLZV0a2jwt22s5NCKOwSmHVagoDW8nflaC


ObjectMapper:

https://fasterxml.github.io/jackson-databind/javadoc/2.7/com/fasterxml/jackson/databind/ObjectMapper.html

https://www.baeldung.com/jackson-object-mapper-tutorial


https://link.springer.com/book/10.1007/978-1-4842-3676-5

Pro Spring Boot 2

An Authoritative Guide to Building Microservices, Web and Enterprise Applications, and Best Practices


@Entity


@PrePersist

void onCreate() {

this.setCreated(LocalDateTime.now());

this.setModified(LocalDateTime.now());

}


@PreUpdate

void onUpdate() {

this.setModified(LocalDateTime.now());

}


# H2-Console: http://localhost:8080/h2-console

# jdbc:h2:mem:testdb

spring.h2.console.enabled=true


<form id="logout" action="/logout" method="POST">

<input type="hidden" name="_csrf" value="{{_csrf.token}}" />

</form>

<script>

$(function(){

$('#logoutLink').click(function(){

$('#logout').submit();

});

});

</script>


JAVA DTO Pattern Tutorial 
https://www.youtube.com/watch?v=5yquJa2x3Ko&t=193s

RuntimeException:
@ResponseStatus(HttpStatus.NOT_FOUND)
public class TestRuntimeException extends RuntimeException{
public TestRuntimeException(String id_not_found) {
}
}
String to JSON: https://github.com/amigoscode/java-streams/blob/main/src/test/java/com/amigoscode/mockdata/MockData.java
public static List<Person> getPeople() throws IOException {
    InputStream inputStream = Resources.getResource("people.json").openStream();
    String json = IOUtils.toString(inputStream, StandardCharsets.UTF_8);
    Type listType = new TypeToken<ArrayList<Person>>() {
    }.getType();
    return new Gson().fromJson(json, listType);
}

spring-data-jpa-course: https://github.com/amigoscode/spring-data-jpa-course/blob/section-7/src/main/resources/application.properties
spring.datasource.url=jdbc:postgresql://localhost:5432/amigoscode
spring.datasource.username=
spring.datasource.password=
spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.properties.hibernate.format_sql=true

spring.h2.console.enabled=true
spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1
spring.datasource.username=sa
spring.datasource.password=
spring.datasource.driver-class-name=org.h2.Driver
spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true

server.error.include-message=always
server.error.include-binding-errors=always

spring:
h2.console.enabled: true
datasource:
url: jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1
username: sa
password:
driver-class-name: org.h2.Driver
jpa:
hibernate.ddl-auto: create-drop
show-sql: true
defer-datasource-initialization: true
# properties.hibernate.format_sql: true

postgresql tips: https://youtu.be/9SGDpanrc8U?t=2273

@Bean
CommandLineRunner commandLineRunner() {
return args -> {
System.out.println("Command line runner hooray");
};
}

@Transient means the field is not for DB

Spring Data JPA https://www.youtube.com/watch?v=8SGI_XS5OPw

How To Handle Exceptions 
https://www.youtube.com/watch?v=PzK4ZXa2Tbc
https://www.youtube.com/watch?v=jFZ4lLLkT7M

??? complete course??? https://www.youtube.com/watch?v=8SGI_XS5OPw&list=PLwvrYc43l1MzeA2bBYQhCWr2gvWLs9A7S
fullstack https://www.youtube.com/watch?v=i-hoSg8iRG0&list=PLwvrYc43l1MzeA2bBYQhCWr2gvWLs9A7S&index=4

Spring Security Tutorial - [NEW] [2023] https://www.youtube.com/watch?v=b9O9NI-RJ3o

@Bean
CommandLineRunner commandLineRunner() {
    return args -> {
        System.out.println(Arrays.toString(args));
    };
}

Software Testing Tutorial - Learn Unit Testing and Integration Testing: https://www.youtube.com/watch?v=Geq60OVyBPg
Mockito: https://youtu.be/Geq60OVyBPg?t=2835
@ExtendWith(MockitoExtension.class)
ArgumentCaptor: https://youtu.be/Geq60OVyBPg?t=3506
given(repo.findById(anyInt()),willReturn(true)

Microservices Using Spring Boot and Spring Cloud
https://www.youtube.com/watch?v=p485kUNpPvE&list=PLwvrYc43l1Mwqpf9i-1B1gXfMeHOm6DeY

10 common mistakes:
Constructor Dependency Injection (not setter)
DefaultExceptionHandler https://youtu.be/CT8dbbe783s?t=558

2023-02-11

K8s @TechWorldwithNana

https://gitlab.com/nanuchi/youtube-tutorial-series/-/tree/master/demo-kubernetes-components

 https://www.youtube.com/watch?v=azuwXALfyRg&list=PLy7NrYWoggjwPggqtFsI_zMAwvG0SqYCb&index=20

minikube kubectl -- apply | delete  -f demo.yaml

minikube kubectl -- create | update | delete  deployment nginx-deployment

minikube kubectl -- get deployment | nodes | pod | services | replicaset 

minikube kubectl -- describe pod nginx-deployment-6895854749-7mjft

minikube kubectl -- logs nginx-deployment-6895854749-7mjft

minikube kubectl -- exec nginx-deployment-6895854749-7mjft -- date
Sat Feb 11 10:41:12 UTC 2023

minikube kubectl -- exec -ut nginx-deployment-6895854749-7mjft -- bin/bash
-------------------------
$ minikube kubectl -- apply -f nginx-deployment.yaml 
deployment.apps/nginx-deployment created
$ minikube kubectl -- apply -f nginx-service.yml 
service/nginx-service created
$ minikube kubectl -- get pod
NAME                                READY   STATUS    RESTARTS   AGE
nginx-deployment-6895854749-j7kvw   1/1     Running   0          72s
$ minikube kubectl -- get service
NAME            TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
kubernetes      ClusterIP   10.96.0.1       <none>        443/TCP   16d
nginx-service   ClusterIP   10.103.91.133   <none>        81/TCP    2m19s

$ minikube kubectl -- describe service nginx-service

minikube kubectl -- delete -f nginx-deployment.yaml 
minikube kubectl -- apply -f nginx-deployment.yaml 
minikube kubectl -- get pod -o wide
minikube kubectl -- describe pod

minikube kubectl -- delete -f nginx-service.yml 
minikube kubectl -- apply -f nginx-service.yml 
minikube kubectl -- get service -o wide
minikube kubectl -- describe service

$ minikube kubectl -- get deployment nginx-deployment -o yaml

$ minikube kubectl -- get all
NAME                                    READY   STATUS    RESTARTS   AGE
pod/nginx-deployment-68d9b6c666-nmn7n   1/1     Running   0          32m

NAME                    TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)   AGE
service/kubernetes      ClusterIP   10.96.0.1     <none>        443/TCP   16d
service/nginx-service   ClusterIP   10.101.5.35   <none>        81/TCP    31m

NAME                               READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/nginx-deployment   1/1     1            1           32m

NAME                                          DESIRED   CURRENT   READY   AGE
replicaset.apps/nginx-deployment-68d9b6c666   1         1         1       32m

---------------
https://www.youtube.com/watch?v=EQNO_kM96Mo
echo -n 'username' | base64

https://www.youtube.com/watch?v=azuwXALfyRg&list=PLy7NrYWoggjwPggqtFsI_zMAwvG0SqYCb&index=19
 Kubectl Basic Commands - Create and Debug Pod in a Minikube cluster | Kubernetes Tutorial 18 
kubectl get nodes

kubectl get pod
kubectl describe pod

kubectl get services
kubectl create -h
kubectl get replicaset

kubectl get deployment
kubectl create deployment nginx-depl
kubectl cedit deployment nginx-depl

kubectl exec -it <podname> -- /bin/sh

https://youtu.be/azuwXALfyRg?list=PLy7NrYWoggjwPggqtFsI_zMAwvG0SqYCb&t=707 

2023-02-08

Docker @TechWorldwithNana

Docker Tutorial for Beginners

 8 Basic Docker Commands || Docker Tutorial 4 

- 2:25 docker pull

 - 4:04 docker run

 - 4:40 docker ps

 - 5:06 docker run --options

 - 6:17 docker stop

 - 6:43 docker start

 - 10:08 - docker ports, docker port mapping

 - docker logs (in part 2)

 - docker exec -it (in part 2) 

Debugging Docker Containers with docker exec and docker logs || Docker Tutorial 5 

 - 1:56 docker logs

 - 5:28 docker exec -it

 Docker vs Virtual Machine | simply explained || Docker Tutorial 6 

 Overview of Workflow with Docker - Docker in Practice || Docker Tutorial 7 

 Developing with Docker - Docker in Practice || Docker Tutorial 8 

0:14 - Pre-Requisites

0:55 - what we will do in this video

1:44 - 1st part: The JavaScript App (HTML, JavaScript Frontend, Node.js Backend)

https://gitlab.com/nanuchi/techworld-js-docker-demo-app

3:30 - 2nd part: MongoDB and Mongo Express Set-Up with Docker

5:00 - Docker Network concept and demo (docker-compose uses docker network under the hood, in the next video(s) I will show you how to do it with docker-compose)

15:33 - 3rd part: Connect Node Server with MongoDB container

0:07 - What is Docker Compose?
1:22 - docker run commands VS docker compose
5:05 - How to use it? - Create the Docker Compose File (Demo)
7:25 - Docker Networking in Docker Compose

 1:49 - What is a Dockerfile?
2:22 - How the Dockerfile commands map to the image environment
8:05 - Create the Dockerfile (Demo)
12:00 - Build an image out of the Dockerfile
15:02 - Start the Application to verify: 1) App starts successfully 2) App environment is configured correctly
19:34 - do improvement - copy only relevant files

 0:21 - When do we need Docker Volumes?
1:02 - What is Docker Volumes?
2:04 - 3 Docker Volumes Types
4:14 - Docker Volumes in docker-compose file

 0:23 - no persistance - docker compose without volumes
2:16 - Define the named volume in docker compose file
5:22 - re-start docker compose and see how data is persisted
6:34 - see where the docker volumes are located on your local machine

 0:38 - Comparison Docker and Kubernetes
1:40 - Docker and Kubernetes in the software development process
2:42 - Kubernetes in Detail
3:21 - Differences of Kubernetes and Docker Swarm

 0:34 - BP 1: Use official and verified Docker Images as Base Image 
1:13 - BP 2: Use Specific Docker Image Versions
2:12 - BP 3: Use Small-Sized Official Images
(FROM node:1.2.3-alpine)
4:35 - BP 4: Optimize Caching Image Layers
10:09- BP 5: Use .dockerignore file
10:55 - BP 6: Make use of Multi-Stage Builds
14:15 - BP 7: Use the Least Privileged User 
16:06 - BP 8: Scan your Images for Security Vulnerabilities
17:50 - Wrap Up

=================================
https://www.youtube.com/watch?v=80Ew_fsV4rM

Ingress, tls certificate

https://www.youtube.com/watch?v=5cNrTU6o3Fw

multiple containers in a pod, yaml example

 

https://www.youtube.com/watch?v=6YisG2GcXaw&list=PLy7NrYWoggjwPggqtFsI_zMAwvG0SqYCb&index=8

Mongo + NodeJS 

stream the logs: docker -f

https://www.youtube.com/watch?v=WmcdMiyqfZs&list=PLy7NrYWoggjwPggqtFsI_zMAwvG0SqYCb&index=10

Dockerfile

docker ps -a

docker stop <containerid>

docker rm <containerid>

docker images

docker rmi <imageid>

docker build -t tagname:version .

docker images

docker run tagname:version

docker logs <containerid> -f

docker exec -it <containerid> /bin/sh

env (lists all env vars)

https://www.youtube.com/watch?v=vWSRWpOPHws&list=PLy7NrYWoggjwPggqtFsI_zMAwvG0SqYCb&index=11

AWS ECR - Elastic Container Registry

https://www.youtube.com/watch?v=p2PH_YPCsis&list=PLy7NrYWoggjwPggqtFsI_zMAwvG0SqYCb&index=13

Docker volumes

host volume:

docker run -v /home/mount/data:/var/lib/mysql/data

anonymous vokume:

docker run -v /var/lib/mysql/data

named volumes:

docker run -v name:/var/lib/mysql/data

https://www.youtube.com/watch?v=SBUCYJgg4Mk&list=PLy7NrYWoggjwPggqtFsI_zMAwvG0SqYCb&index=14

volumes demo

https://youtu.be/SBUCYJgg4Mk?list=PLy7NrYWoggjwPggqtFsI_zMAwvG0SqYCb&t=291

mongo, mysql, postgresql


2023-01-22

Автогенераторы двухтактные

 https://www.youtube.com/watch?v=6aQgsc0ktIE

Простой повышающий DC-DC преобразователь на советских деталях } * {A simple DC-DC boost converter






https://www.youtube.com/watch?v=2eHgJ1eca4E
Двухтактный генератор на кт315.Какую мощность можно снять с включением транзисторов в параллель.

2023-01-10

Select properJava collection


 
https://github.com/encapsulin/coreJava/blob/main/src/speedCalc/MainCollections.java

-=start=-
///////////////////////////////
addFirst()class java.util.ArrayDeque1000000: 134 ms 
addFirst()class java.util.ArrayDeque2000000: 107 ms 
addFirst()class java.util.ArrayDeque3000000: 60 ms 
addFirst()class java.util.ArrayDeque4000000: 70 ms 
addFirst()class java.util.ArrayDeque5000000: 105 ms 
removeFirst()class java.util.ArrayDeque: 22 ms 

addFirst()class java.util.LinkedList1000000: 285 ms 
addFirst()class java.util.LinkedList2000000: 38 ms 
addFirst()class java.util.LinkedList3000000: 176 ms 
addFirst()class java.util.LinkedList4000000: 155 ms 
addFirst()class java.util.LinkedList5000000: 152 ms 
removeFirst()class java.util.LinkedList: 85 ms 

addFirst()class java.util.ArrayList50000: 194 ms 
addFirst()class java.util.ArrayList100000: 615 ms 
addFirst()class java.util.ArrayList150000: 1080 ms 
addFirst()class java.util.ArrayList200000: 1509 ms 
addFirst()class java.util.ArrayList250000: 1941 ms 
removeFirst()class java.util.ArrayList: 5289 ms 

///////////////////////////////
addLast()class java.util.ArrayList1000000: 32 ms 
addLast()class java.util.ArrayList2000000: 78 ms 
addLast()class java.util.ArrayList3000000: 25 ms 
addLast()class java.util.ArrayList4000000: 18 ms 
addLast()class java.util.ArrayList5000000: 37 ms 
removeLast()class java.util.ArrayList: 27 ms 

addLast()class java.util.ArrayDeque1000000: 50 ms 
addLast()class java.util.ArrayDeque2000000: 18 ms 
addLast()class java.util.ArrayDeque3000000: 29 ms 
addLast()class java.util.ArrayDeque4000000: 18 ms 
addLast()class java.util.ArrayDeque5000000: 18 ms 
removeLast()class java.util.ArrayDeque: 55 ms 

addLast()class java.util.LinkedList1000000: 157 ms 
addLast()class java.util.LinkedList2000000: 211 ms 
addLast()class java.util.LinkedList3000000: 210 ms 
addLast()class java.util.LinkedList4000000: 15 ms 
addLast()class java.util.LinkedList5000000: 214 ms 
removeLast()class java.util.LinkedList: 86 ms 

///////////////////////////////
addMiddle()class java.util.ArrayList50000: 86 ms 
removeMiddle()class java.util.ArrayList: 89 ms 

addMiddle()class java.util.LinkedList50000: 1480 ms 
removeMiddle()class java.util.LinkedList: 1479 ms 

addMiddle()class java.util.ArrayDeque50000: 16636 ms 
-=stop=-

foxminded
https://youtu.be/IFL7qnRR6YE?t=2070
https://youtu.be/IFL7qnRR6YE?t=5895

2022-12-19

okta oauth2

 https://github.com/okta/okta-spring-boot

Spring Boot Version Compatibility

Okta Spring Boot SDK VersionsCompatible Spring Boot Versions
1.2.x2.1.x
1.4.x2.2.x
1.5.x2.4.x
2.0.x2.4.x
2.1.x2.7.x

2022-11-07

AWS EC2 Amazon Linux

#https://dev.to/viralsangani/be-anonymous-create-your-own-proxy-server-with-aws-ec2-2k63

#1) amazon linux

#2) spot instance (permanent)

#3) key ssh

#4) network group All,ssh,http, https


#!/bin/bash

sudo yum update -y

sudo yum install -y httpd

sudo systemctl start httpd

sudo systemctl enable httpd

cd /var/www/html

sudo sh -c 'echo "hello from $(hostname -f)" > /var/www/html/index.html'


####################

 #If you are using Amazon Linux 2023 (AL2023)

# 1. Install compilation tools and dependencies

sudo dnf groupinstall -y "Development Tools"

sudo dnf install -y asciidoc


# 2. Download and extract the latest Tinyproxy release

cd /tmp

wget https://github.com/tinyproxy/tinyproxy/releases/download/1.11.1/tinyproxy-1.11.1.tar.gz

tar -xzf tinyproxy-1.11.1.tar.gz

cd tinyproxy-1.11.1

./configure --prefix=/usr --sysconfdir=/etc

make

sudo make install


# 4. Create a systemd service file so it can run as a daemon

sudo tee /etc/systemd/system/tinyproxy.service > /dev/null << 'EOF'

[Unit]

Description=Tinyproxy lightweight HTTP proxy

After=network.target


[Service]

Type=simple

ExecStart=/usr/bin/tinyproxy -d -c /etc/tinyproxy/tinyproxy.conf

User=nobody

Group=nobody

Restart=on-failure


[Install]

WantedBy=multi-user.target

EOF


# 5. Create required runtime directory and permissions

sudo mkdir -p /var/run/tinyproxy

sudo chown nobody:nobody /var/run/tinyproxy

#####################

sudo sed -i 's/^Allow 127\.0\.0\.1$/#Allow 127.0.0.1/' /etc/tinyproxy/tinyproxy.conf

sudo sed -i 's/^Allow ::1$/#Allow ::1/' /etc/tinyproxy/tinyproxy.conf


# 6. Enable and start the service

sudo systemctl daemon-reload

sudo systemctl enable --now tinyproxy



#curl -i -x http://YOUR_EC2_PUBLIC_IP:8888 http://ifconfig.me




2022-10-23

AWS Certified Cloud Practitioner Certification Course (CLF-C01)

AWS Certified Cloud Practitioner Training 2020 - Full Course

https://youtu.be/3hLmDS179YE?t=3266 EC2 create witch IAM role to access SSM 

S3 - CloudFront - edge locations

https://youtu.be/3hLmDS179YE?t=6567 AWS Marketplace

AWS Certified Cloud Practitioner Certification Course (CLF-C01) - Pass the Exam!

 https://youtu.be/SOTamWNgDKc?t=14799 AWS toolkit for VSCode


AWS for Startups - Deploying with AWS: https://youtu.be/U3VSJhaC4kc

##############


https://github.com/Mainak99/AWS-Slides