2021年4月26日 星期一

golang 類似 override 概念的東東


package main

import (

"fmt"
)

type I interface {
Fa()
Fb()
}
type C1 struct {
}
func (c *C1) Fa() {
fmt.Println("C1.Fa()")
}
func (c *C1) Fb() {
fmt.Println("C1.Fb()")
}
type C2 struct {
C1
}
func (c *C2) Fb() {
fmt.Println("C2.Fb()")
}
func main() {
c1 := C1{}
c1.Fa()
c1.Fb()
c2 := C2{}
c2.Fa()
c2.Fb()
c2.C1.Fb()
}







2021年4月20日 星期二

Install MySQL on Ubuntu 20.04

sudo apt update
sudo apt install mysql-server
sudo systemctl status mysql
sudo mysql_secure_installation


sudo mysql

SHOW VARIABLES LIKE 'validate_password%';
SET global validate_password.length=4;

CREATE USER 'kh'@'localhost' IDENTIFIED BY '1234';
DROP USER 'kh'@'localhost';

CREATE USER 'kh'@'192.168.50.219' IDENTIFIED BY '1234';
DROP USER 'kh'@'192.168.50.219';
# 請參考下方的允許遠端存取
CREATE USER 'kh'@'%' IDENTIFIED BY '1234';
DROP USER 'kh'@'%';

# REVOKE ALL ON *.* FROM 'kh'@'localhost';

GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD on *.* TO 'kh'@'localhost';
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD on *.* TO 'kh'@'192.168.50.219';
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD on *.* TO 'kh'@'%';

FLUSH PRIVILEGES;
SHOW GRANTS FOR 'kh'@'localhost';

source /home/kh/XXX/scripts/mysql.sql;

EXIT


mysql -u kh -p


# ref:
# https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-20-04

允許遠端存取:

  • sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address = 0.0.0.0
  • sudo systemctl restart mysql

  • ref:
  • https://www.digitalocean.com/community/tutorials/how-to-allow-remote-access-to-mysql


2021年4月14日 星期三

ubuntu sudo 免密碼 - visudo

 sudo visudo

%sudo   ALL=(ALL:ALL) NOPASSWD:ALL

myuser ALL=(ALL:ALL) NOPASSWD:ALL

       kh ALL=(ALL:ALL) NOPASSWD:ALL

順序有差 建議放最後

2021年4月10日 星期六

Jenkins 與 Github 重點筆記

GitHub 帳號申請 Personal access tokens 

Developer settings → Personal access tokens






放到 Jenkins 的GitHub Plugin設定那邊

Manage Jenkins → Configure System → GitHub

Add → Add Credentials → Kind → Secret text → 貼上剛剛申請到的access token





-----


到 GitHub Repo 設定:

 GitHub的Webhooks (http://xxx.yyy.zzz:8080/github-webhook/)






 GitHub的deployee key 設定 public key

到Jenkins設定private key




主機記得裝git


Credentials新增SSH private key

(頭尾那兩行也要進去"-----BEGIN RSA PRIVATE KEY-----" "-----END RSA PRIVATE KEY-----")



參考資料:

https://medium.com/@BuzonXXXX/ci-%E8%A8%AD%E5%AE%9Ajenkins%E9%80%A3%E7%B5%90github-private-repo-111c53d29047

http://mis101bird.js.org/cd/




使用 Docker 安裝 Jenkins

指令:


sudo docker network create jenkins
sudo docker volume create jenkins-data
sudo docker volume create jenkins-docker-certs


sudo docker container run \
  --name jenkins-docker \
  --rm \
  --detach \
  --privileged \
  --network jenkins \
  --network-alias docker \
  --env DOCKER_TLS_CERTDIR=/certs \
  --volume jenkins-docker-certs:/certs/client \
  --volume jenkins-data:/var/jenkins_home \
  --publish 2376:2376 \
  docker:dind


sudo docker container run \
  --name jenkins-blueocean \
  --rm \
  --detach \
  --network jenkins \
  --env DOCKER_HOST=tcp://docker:2376 \
  --env DOCKER_CERT_PATH=/certs/client \
  --env DOCKER_TLS_VERIFY=1 \
  --publish 8080:8080 \
  --publish 50000:50000 \
  --volume jenkins-data:/var/jenkins_home \
  --volume jenkins-docker-certs:/certs/client:ro \
  jenkinsci/blueocean


sudo docker exec jenkins-blueocean cat /var/jenkins_home/secrets/initialAdminPassword


參考資料:

https://blog.cloudware.bg/en/what-is-jenkins-and-how-to-install-it-on-your-server/

https://davelms.medium.com/run-jenkins-in-a-docker-container-part-1-docker-in-docker-7ca75262619d

https://www.cnblogs.com/esofar/p/11163583.html



2021年4月9日 星期五

sudo 免密碼

sudo visudo

最後面加入

myuser ALL=(ALL) NOPASSWD: ALL for a single user

%sudo  ALL=(ALL) NOPASSWD: ALL for a group.

注意:config的順序會影響,所以要放在最後面

2021年4月4日 星期日

備份到NAS

備份到 Samba 的指令

robocopy  D:  \\192.168.50.100\nas_900g\E3_Disk-D_Backup  /mt  /mir


如果要管理登入身分的話 可到:

控制台\使用者帳戶\認證管理員

優雅的Code


2021年4月1日 星期四

Golang 安裝 筆記

環境:

ubuntu 20.04.2.0 LTS

go 1.16.3

vscode


安裝指令:

先到官網下載壓縮檔

sudo tar -C /usr/local -xzf go1.16.3.linux-amd64.tar.gz


vim ~/.bashrc 

# golang

export GOROOT=/usr/local/go

export GOPATH=$HOME/go

export PATH=$GOPATH/bin:$GOROOT/bin:$PATH

source ~/.bashrc

reboot


go env -w GO111MODULE=off


範例程式:

package main

import "fmt"

 

func main() {

     fmt.Println("Hello, World!")

}