2023年12月13日 星期三

Angular 超級入門教學 000

...
Angular 超級入門教學 000
...

1. https://angular.io/   or   https://angular.tw/ 

2. Install Node.js JavaScript runtime:
from https://nodejs.org/en
to D:\DevTool\nodejs\

3. Install Visual Studio Code:
from https://code.visualstudio.com/

4. Install the Angular CLI:
from https://angular.io/guide/setup-local
CMD> npm install -g @angular/cli

5. Create a workspace and initial application:
CMD> cd D:\DevTool\Angular
CMD> ng new HelloWorld
CMD> cd D:\DevTool\Angular\HelloWorld
CMD> npm start
> hello-world@0.0.0 start
> ng serve
Local:   http://localhost:4200/

後記1:
CMD> npm start
對應到 package.json




// End

2023年12月12日 星期二

.燕俠語錄 20231212: 吾日三省吾身: 我是誰? 我在哪? 我在這邊做什麼? --- 墨者燕俠(劉建春)

曾子曰:「吾日三省吾身,為人謀而不忠乎?與朋友交而不信乎?傳不習乎?」

2023年12月9日 星期六

IT 數位轉型 (IT Digital Transformation)

.


.
這幾年的 IT 數位轉型 (IT Digital Transformation) 持續發燒與演進.

1. 由傳統的 Physical Machine -> Virtual Server (VM) 發展到熱門的 K8S (Kubernetes) Container. + CI/CD Pipeline.

2. Serverless 雲端服務 (Cloud Service Models) 的演進:
   地端(On-Promise) to Cloud Service.
   IaaS (Infrastrcture as a Service) 基礎設施即服務: e.g. Google GCP, AWS EC2, Azure VM
   PaaS (Platform as a Service) 平台即服務: e.g. Pivotal Cloud Foundry (PCF), Red Hat OpenShift (OKD)
   SaaS (Software as a Service) 軟體即服務: e.g. Salesforce, Netflix, Spotify

3. DevOps and DevSecOps 的興起:
    Under a DevOps model, development and operations teams are no longer “siloed.” Sometimes, these two teams are merged into a single team where the engineers work across the entire application lifecycle, from development and test to deployment to operations, and develop a range of skills not limited to a single function.
    在 DevOps 模型之下,開發與營運團隊不再「孤軍奮戰。」 有時,這兩個團隊會合併成為一個團隊,讓工程師負責整個應用程式生命週期中的工作,包含從開發和測試、部署以及營運,並發展出許多不限於單一功能的技能。

=> 學學 Azure GitOps, Gitlab, Github, Docker, Harbor, Helm, K8S (Kubernetes), CI/CD (Continuous Integration / Continuous Delivery or Continuous Deployment), ymal, AI, ML, AI-Ops, AI-ChatBot ...

4. 網站可靠性工程 SRE (Site Reliability Engineering):
    Site reliability engineering (SRE) is the practice of using software tools to automate IT infrastructure tasks such as system management and application monitoring. Organizations use SRE to ensure their software applications remain reliable amidst frequent updates from development teams. SRE especially improves the reliability of scalable software systems because managing a large system using software is more sustainable than manually managing hundreds of machines. 
    網站可靠性工程(SRE)是使用軟件工具自動化 IT 基礎架構任務(例如系統管理和應用程序監控)的實踐。組織使用 SRE 確保其軟體應用程式在開發團隊的頻繁更新中保持可靠性。SRE 特別提高了可擴展軟件系統的可靠性,因為使用軟件管理大型系統比手動管理數百台機器更具可持續性。
=> + Resilience, + Observability



5. 軟體開發 (Software development) PM, SA, SD, QA -> Coding, Developer, Programming
    每天下班跟假日都要來一點 HackerRank, LeetCode 練練功.
    後端(Back-end), 前端(Front-end), 全端(Full-stack).
    Pythonic!
    JavaScript, TypeScript, MEAN (MongoDB, Express.js, Angular, Node.js), MERN (MongoDB, Express.js, React, Node.js)
    Golang,
    


6. Globalization (English):
    每天下班跟假日都要 聽多一點英文, 多說一點英文一點英文, 一點英文.


// End

2023年4月22日 星期六

2023年1月8日 星期日

docker 之獨孤九劍

...


... ... ...

docker 之獨孤九劍

... ... ...


1. install Docker Desktop:

refer to: https://docs.docker.com/desktop/

$ docker info
$ docker run hello-world

.

2. Docker Images to Containers

// List images
// Usage:  docker images [OPTIONS] [REPOSITORY[:TAG]]
$ docker images

// docker run: Run a command in a new container
// Usage:  docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
// docker run -ti: terminal interactive (可互動模式)
$ docker run -ti ubuntu:latest bash

// List containers
// Usage:  docker ps [OPTIONS]
$ docker ps

// List containers -all
$ docker ps -a

// List containers -latest
// Show the latest created container (includes all states): 列出最後 created 的 container, 通常用於看不正常關閉的 container
$ docker ps -l
.

3. Docker Containers to Images (docker commit)

docker run -ti ubuntu:latest bash
# touch AaA_IMAGE_V2
docker ps -l
docker images

// docker commit: Create a new image from a container's changes
// Usage:  docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
docker commit  3597f6ac186f  ubuntu-test:2.0
等同於
// docker tag: Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
// Usage:  docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
$ docker tag 0eb2c4ef97cd05e22d316195efdeb908289b0bf1aa8adf157da4955c00e8e505 ubuntu-test:2.0

// Verify
docker run -ti  ubuntu-test:2.0 bash
.

4. Docker run

// docker run --rm : Automatically remove the container when it exits (若 exit; 自動移除 container)
docker run --rm -ti ubuntu-test:2.0  sleep 5

docker run -ti ubuntu bash -c "sleep 3; echo all done"

// docker run -d: --detach Run container in background and print container ID
// [AaA]: 就是類似 nohup 的概念, 在背景執行.
docker run -d -ti ubuntu bash

docker ps
// 從 detach 恢復到 attach mode
docker attach lucid_rosalind

// [AaA]:密技 亦可以在 terminal 按 Ctrl+p Ctrl+q 達到 detach 的境界
.

5. Docker exec

// docker exec: Run a command in a running container; 通常用於 debug & DBA administration
// Usage:  docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

$ docker exec -ti lucid_rosalind bash
// or 

docker exec -ti lucid_rosalind cat test.txt
.

6. Docker logs

// docker logs: Fetch the logs of a container
// Usage:  docker logs [OPTIONS] CONTAINER

// 範例把 cat 打錯成 catt
docker run --name example -d ubuntu bash -c "catt /etc/passwd"

docker logs example
bash: line 1: catt: command not found
.

7. Stopping and Removing Containers

docker run -ti ubuntu bash


// docker kill: Kill one or more running containers
// Usage:  docker kill [OPTIONS] CONTAINER [CONTAINER...]
docker ps
docker kill cranky_lamarr

// docker rm: Remove one or more containers (對正在 running 的 container 無效, 必須先 kill 再 rm)
// Usage:  docker rm [OPTIONS] CONTAINER [CONTAINER...]
docker rm cranky_lamarr

.
// 移除 images 的指令:
// docker rmi: Remove one or more images
// Usage:  docker rmi [OPTIONS] IMAGE [IMAGE...]
.

8. Exposing ports: docker port

// docker run -p outside-port:inside-port/protocol (tcp/udp)

// docker port: List port mappings or a specific mapping for the container
// Usage:  docker port CONTAINER [PRIVATE_PORT[/PROTO]]
docker run --rm -ti -p 12345:12345 -p 12346:12346 --name echo-server ubuntu:14.04 bash

docker port echo-server
12345/tcp -> 0.0.0.0:12345
12346/tcp -> 0.0.0.0:12346

在第一視窗 listen port 12345 & 12346
nc -lp 12345 | nc -lp 12346

在第二視窗
$ docker run --rm -ti ubuntu:14.04 bash
nc host.docker.internal 12345

在第三視窗
docker run --rm -ti ubuntu:14.04 bash
nc host.docker.internal 12346
.
// [AaA]: 若前面不指定 outside-port, 則會隨機作 port mapping dynamically
.
// UDP example
docker run --rm -ti -p 23456:23456/udp --name echo-server ubuntu:14.04 bash

在第一視窗
nc -ulp 23456

在第二視窗
docker ps
docker port echo-server
docker run --rm -ti ubuntu:14.04 bash
nc -u host.docker.internal 23456
.

9. 無招勝有招 docker --help

.
.
.
// End.