RSS Email Twitter GitHub Dribbble LinkedIn Facebook Instagram YouTube Pinterest Reddit icon menu

Cody's 探索日誌

東摸西摸,十分好奇

PV: / UV:

Linux 文字檔案去重過濾篩選

將文字檔內開頭有重複的內容篩選出來,然後匯出有重複的所有資料 以下指令為,將檔案內的文字以 , 分隔,然後使用第一個變數內容做排序、統計重複的數量 然後將只有一筆的資料排除,最後只顯示超過兩筆的資料欄位開頭 再將這個開頭讀取出來變為 id 這個變數,用來過濾出該開頭的資料,並寫入到 outputfile.txt 中 1 awk -F"," '{print $1}' <filename>.txt | sort | uniq -c | grep -v ' 1' | awk '{print $2}' | while read id; do egrep "^$id," <filename>.txt; done > outputfile.txt

重溫 Kubernetes - 1

在 kubernetes 剛出來的時期,很早就有接觸和使用,但當時畢竟只是一個研究生 並沒有太多商業上的開發經驗,雖然覺得很 k8s 很酷,但經歷一段時間的磨練和理解想重溫 K8S 的懷抱 Kubernetes 啟動 docker 附帶 kubernetes,暫時先不進行架設 觀念學習 pod 是最小單位,擺放 container 的位置,可以啟動單個或多個 container replic deployment 是一個 設定撰寫 Deployment 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 apiVersion: apps/v1 kind: Deployment metadata: name: test-staging-dep # deployment 名稱 namespace: default labels: # deployment 標籤 app: test-app spec: selector: matchLabels: # 選擇器會管理具備此標籤的 pod app: test-app replicas: 3 # 要啟動多少個 pod 副本 strategy: rollingUpdate: maxSurge: 50% maxUnavailable: 50% type: RollingUpdate template: metadata: labels: # pod 的模版指定的標籤,會受到上面 deployment 的選擇器控管 app: test-app spec: containers: - name: test # container 名稱 image: 192.

如何設定 SFTP

SSH SFTP設定 先新增一個群組,提供給 sftp 使用者 $ sudo groupadd sftpusers 新增 sftp 的使用者 $ sudo useradd -g sftpusers -d /incoming -s /sbin/nologin [username] $ sudo passwd [username] 建立 sftpuser 的 root 目錄 /home/sftp/ $ sudo mkdir -p /home/sftp/[username]/incoming 將 incoming 的目錄權限設定給 user $ sudo chown [username]:sftpuse /home/sftp/[username]/incoming/ 確認一下是否有設定正確 $ ls -ld /home/sftp/arcsight/incoming/ 情境需求 限制使用者登入 限制 IP 位置 限制目錄位置 限制只能使用 SFTP $ ls -ld /home/sftp/<UserName>/ $ ls -ld /home/sftp/ #只允許特定使用者登入 AllowUsers arcsight root #只允許用10.

架設 Harbor 讓自己的鯨魚停靠

通常做好的 docker image 都是直接往 docker hub 丟,但是如果要在內部架設使用,又有一些安全或隱私的問題 就需要一個存放私人 docker image 的地方,最終讓我找到這個避風港 Hardware Resource Minimum Recommended CPU 2 CPU 4 CPU Mem 4 GB 8 GB Disk 40 GB 160 GB Dependencies ntp swapoff Remove any matching reference found in /etc/fstab swapoff -a Docker version 17.06.0-ce+ Docker Engine overview | Docker Documentation Docker-compose 1.18.0+ Install Docker Compose | Docker Documentation Openssl python 36 python 36 for centOS 7 Install 1 2 3 4 5 6 7 8 9 10 11 12 13 yum install epel-release yum install python36 rm -rf /usr/bin/python ln -s /usr/bin/python3 /usr/bin/python # install pip3 python3 -m ensurepip # update pip3 pip3 install --upgrade pip Fix change /usr/bin/python to /usr/bin/python2.

Github LFS 好貴,只能靠自己架設 GitLFS Server 了

Github 有一個限制,就是當單檔案大於 100M 時,就會使用到 LFS 的儲存空建,並且上限是 5GB 我是窮苦人家,只能土法煉鋼自己架設 LFS Server Required 從 https://git-lfs.com/ 這裡下載並安裝 git-lfs Gitea 我是在 TrueNAS Scale 上安裝 Gitea 的,至於安裝過程可以參考 Self Hosting Gitea On TrueNAS Scale With Working SSH Access 然而我覺得純粹充當 LFS Server 有點浪費,所以我覺得可以搭配異地備份的概念 讓 Gitea 定時從 Github 將專案抓回來,但指定 Gitea LFS 為 Gitea 和 Github 共同的位置 LFS 在 repo 底下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 # 初始化 git lfs install # 設定 Git LFS 位置 git config -f .

TrueNAS Core Upgrade to Scale

TrueNAS Scale 從 2022/02 推出以後到現在也歷經 10 個月 想說那就來把我的 TrueNAS Core 升級至 Scale,畢竟我還是對於 Linux 比較熟悉 雖然 TrueNAS Core 碰了一些 FreeBSD,但我還是比較喜歡 Linux,加上還有 K3S 可以用 Prepare 首先根據官網的說明 Migrating from TrueNAS CORE TrueNAS systems on 12.0x or lower should update to the latest CORE 13.0 release (e.g 13.0-U2) prior to migrating to SCALE. 我必須先將我的 TrueNAS Core - 12 更新至 13,然後再下載 TrueNAS Scale iso 進行更新 Upgrade 基本上官方網站寫的很詳細 Migrating from TrueNAS CORE 完全可以照著進行 選擇 Install/Upgrade 仔細仔細仔細,不要選到儲存碟

透過 Golang 進行 XDP 進行 UDP 收發

為了解決網路程式的收發效能,根據三個面向進行研究 分別是系統、程式、硬體三個面向 程式面向 程式處理邏輯優化,縮短處理下一包的時間 使用多核效能,更改成多進程或多執行序,同時以參考 Reactor、Proactor 等模型架構,不一定要採用 透過 SO_REUSEPORT 搭配 RSS 進行有效的 CPU 使用 系統面向 系統層的優化,分別針對收容能力及核心分配做處理 收容能力 不用無條件的往上增加,而是增對需求條件進行調校,因為不單單只有收容能力需要調整 1 2 3 4 5 6 # 增加對 NIC Ring Buffer 的抓取的 CPU 資源,預設 300 net.core.netdev_budget=900 # 寫入的 Socket Buffer net.core.wmem_max=20971520 # 接收的 Socket Buffer net.core.rmem_max=20971520 核心分配 若為多行程/多進程設計,並有搭配 REUSEPORT,則可以降低 CPU 分配 透過 taskset、isolation、cgroup 進行分配、隔離、綁定 硬體面向 透過支援的網卡設定 Receive Side Scaling (RSS),並透過 SO_REUSEPORT 的搭配,使 CPU 有效分配 RSS 這邊簡端說明,NIC 隊列通道會是一個以上,預設可能只用一個 可以啟用多個通道進行接收並搭配多個 CPU,達到更高的接收、發送效能 有興趣的可以閱讀 Linux Network Scaling: Receiving Packets

透過 VScode 將 Git Commit 壓縮提交

不想透過純命令的方式去合併 Git Commits,操作起來很不直觀 想透過 VScode 直接將 Git Commits 合併成一個 Commit 套件 圖形化的 Git Commits VScode Extension - Git Graph VScode 設定 開啟 設定 並搜尋 git force,然後開啟 Git: Allow Force Push 合併 Commits 首先進入到 VScode 的 Git 控制頁面,然後選擇 View Git Graph 的 Icon 然後可以看到 Commits 圖形化,然後選擇欲合併的 Commit 選擇 Reset Current Branch to this Commit… 然後這邊選擇 Mixed 然後會看到建立一個本地分支 這時候會看到之前變更過的檔案需要重新提交 然後會看到合併之後的提交 最後透過 推送(強制更新) / Push(Force) 進行推送 最終就會看到提交合併了,Github 上也是如此 Ref Github - Squashing commits Dannyherran - Git squash commits in VS Code