Macbook 開發環境設定大全

Photo by Ben Kolde on Unsplash

Overview

Ref: [[2022-09-10-ipad-setup]]

Challenges 現況 挑戰

  • 每次要設定 macbook 開發環境時, 總是頭痛到底設定了哪些東西跟軟體

Objectives 目標 效益

  • 整理開發環境所需的套件與安裝指令, 方便後續新增查找

KRs 結果 解法

  • 2022-09-10 設定完成
  • 2022-09-17 重置 MacBook Pro 2019 15" i7 16G/256G
[閱讀全文]

開箱即用的 Python 專案結構與 PyTest

Photo by Clément Hélardot on Unsplash

Overview

Challenges 現況 挑戰

  • 該如何設計良好可擴充的 python 專案目錄結構? 有什麼 naming convention 嗎?

Objectives 目標 效益

  • 結合 PyTest 等各 Python Testing Framework, 研究並建立一個 Python Project 範本, 方便未來直接使用及擴充

KRs 結果 解法

[閱讀全文]

Agile Summit 2022 敏捷高峰盛會 - VUCA 時代敏捷導入 + 持續交付價值

Overview

同場加映: DevOpsDays Taipei 2022 - 企業 IT 數位轉型投資成長 + 持續交付高品質可用產品

Challenges 現況 挑戰

  • 需求變動快速, 如何快速應對?
  • 專案開發/實作/推廣過程, 尚未形成足夠敏捷的交付模式

Objectives 目標 效益

  • Project Management: 透過參考業界經驗, 建立專案管理方法, 使專案的實作與推廣過程, 可以更敏捷
  • Delivery Speed & Quality: 提升交付速度, 縮短交付週期

KRs 結果 解法

  • 瞭解實戰推動手法 + 懶人包 => 都需要視情況調整
  • 瞭解為何敏捷重要
  • 瞭解如何在企業裡導入敏捷, 交付價值, 彈性拿捏
[閱讀全文]

軟體測試的 7 種類型 - Python 範例程式碼

Photo by Clément Hélardot on Unsplash

Overview

測試種類百百種, 你測的是哪一種? 該測的又是哪一種? 讓我們來一探究竟! 本文暫不討論為何要寫測試, 效益為何. 有興趣的朋友敬請期待下一篇文章 :P

一言以蔽之就是品質. 不測試的話就只是盲目地相信自己的程式碼永遠都會正常運作. 而這個信仰通常十分薄弱, 基本上都只是落入維運時 見一個修一個, 很難查 root cause 的惡性循環. 細節就留待我最近邊學 TDD 時再來記錄囉~

Challenges

  • 測試初心者, 不確定該寫哪些測試才是有效的 (Effective & Efficient)

Objectives

  1. 瞭解自動化測試的類型與其定義
  2. 建立測試範例程式碼, 結合 Github - Python Playground

KRs

  1. 2022-08/E 初版完成。
[閱讀全文]

Github - Python Playground

Photo by Clément Hélardot on Unsplash

Overview

Challenges

不管是 SRE 或是其他簡單的小腳本,在工作上越來越多場合要開始寫 python 來自動化處理一些繁瑣的事項。

習慣性地就想要建立一個 library,邊學邊整理。

Objectives

  1. 建立清楚易用的 Python Github repository as utils library.

KRs

  1. 2022-08/E 初版完成。
[閱讀全文]

Golang Learn

Overview

從 Ghost 搬來 Hugo 後, 終於更積極地回歸 blog 了… 今天要來立下學 golang 的 flag 😂

作為新手, 條列一些觀察與期許

Challenges

  1. Profile: Data Engineer
  2. Jobs
    1. Deliver data to value by designing and implementing data pipeline
    2. Maintain operations and continuously improve service levels

Objectives

  1. Master 1 programming language to better understand the mechanism and principle of Dev & Ops .
  2. Manage Ops in software engineering way like class SRE implements DevOps.

KRs

  1. 2021-08 Complete Go by Example and get familiar with VS Code extensions.
  2. 2021-09 Setup lightweight web server with modern frontend and backend framework to handle form input, api and authentication.
[閱讀全文]

Google SRE Books

Overview

Google 推行 SRE 也已經好一陣子, 十分認同其中的各種想法與作法. 最近終於能有機會好好整理讀書心得筆記, 持續學習.

因為內容很多, 所以打算以系列文的方式, 不定期地更新內容, 這篇會作為 Summary 使用. 一來紀錄緣由, 二來追蹤進度.

Challenges

  1. Hybrid Cloud Environment Complexity Grows. 身為 IT, 在 Hybrid Cloud 環境與 Micro-service 趨勢下, 帶來的是更多的 Dependency 以及更為複雜的資料流.
  2. Hard to Prove and Maintain Reliability. 在設計 Data Pipeline 的過程中, 除了最終要 Deliver Data to Value 以達到 Business Impact 外, 更需要確保每天的 Data & Services Quality & Reliability, 甚至可以說是服務上線後天天都會遇到的事.
  3. Often Without Clear Value Proposition. 而這些日常維運繁瑣的事務其實有很多可以用工程手段解決/自動化的部分, 但是卻非常容易在繁忙且接踵而來的專案下, 不自覺地疏忽了.
  4. Prioritize ITOps Tasks: 為了及早發現及早還技術債, 應該更有意識地持續分析:
    1. 哪些該先做, 成本效益最佳?
    2. 鎖定目標後, 又該如何實作, 才能真的事半功倍?
    3. 實作完成後, 如何良好衡量優化效益?

Objectives

  • Learn from Google SRE books
    • then introduce and continuously implement and improve current data services design reliability at work.

KRs

  1. 2021-12 完讀 The Site Reliability Workbook (實作細節, 實例)
  2. 2021-12 完讀 Site Reliability Engineering (概念, 文化)
[閱讀全文]

GenAI Cloud Run | K8s Summit 2024 GCP Workshop

Preparation

Gemini is a family of generative AI models developed by Google DeepMind that is designed for multimodal use cases. The Gemini API gives you access to the Gemini Pro Vision and Gemini Pro models. In this lab you will understand how to integrate Vertex AI Gemini API with applications and build and deploy the developed sample application on Google Cloud Run.

[閱讀全文]

GCP OTel | K8s Summit 2024 GCP Workshop

Ref

Preparation

OpenTelemetry是CNCF推廣的容器平台監控技術,針對SRE常用的Metrics, Log, 以及Trace提供了完整的支援。其廣大生態圈,不但可在無侵入的狀態下,廣泛支持各種的程式語言(e.g. Python, Java, .NET, JS等),也提供讓SRE可彈性客制監控標的。

[閱讀全文]

# GKE Chatbot | K8s Summit 2024 GCP Workshop

Preparation

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
CLUSTER_NAME=my-cluster
CLUSTER_LOCATION=us-central1

gcloud container clusters create-auto ${CLUSTER_NAME} \
  --location=${CLUSTER_LOCATION}

# kubeconfig entry generated for my-cluster.
# NAME: my-cluster
# LOCATION: us-central1
# MASTER_VERSION: 1.30.5-gke.1014001
# MASTER_IP: 34.45.80.180
# MACHINE_TYPE: e2-small
# NODE_VERSION: 1.30.5-gke.1014001
# NUM_NODES: 3
# STATUS: RUNNING

kubectl cluster-info
# Kubernetes control plane is running at https://34.45.80.180
# GLBCDefaultBackend is running at https://34.45.80.180/api/v1/namespaces/kube-system/services/default-http-backend:http/proxy
# KubeDNS is running at https://34.45.80.180/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
# Metrics-server is running at https://34.45.80.180/api/v1/namespaces/kube-system/services/https:metrics-server:/proxy

# To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

任務 2. 部署 Ollama

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
kubectl apply -f ollama.yaml
# Warning: autopilot-default-resources-mutator:Autopilot updated StatefulSet default/ollama: defaulted unspecified 'nvidia.com/gpu' resource for containers [ollama] (see http://g.co/gke/autopilot-defaults).
# statefulset.apps/ollama created
# service/ollama created

kubectl get pods -w
# 等待 ollama-0 Pod 變成 Running 狀態,表示 Ollama 已成功部署。

kubectl get nodes
# NAME                                        STATUS   ROLES    AGE     VERSION
# gk3-my-cluster-nap-1l47y8kj-033ca61f-rgvm   Ready    <none>   2m54s   v1.30.5-gke.1014001
# gk3-my-cluster-nap-nwlb0qz1-ea6bcb2c-b44d   Ready    <none>   2m9s    v1.30.5-gke.1014001

任務 3. 使用 Ollama CLI 與 Gemma 2 互動

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# 安裝 Ollama CLI:在 Cloud Shell 中執行以下指令安裝 Ollama CLI:
curl -fsSL https://ollama.com/install.sh | sh

# 將 Ollama 服務端口轉發到本地: 執行以下指令,將 Ollama 服務的 11434 端口轉發到本地 (Cloud Shell) 的 11434 端口:
kubectl port-forward svc/ollama 11434:11434

# 在新分頁中執行 Gemma 2 模型: 在新的終端分頁中,設定 OLLAMA_HOST 環境變數,指定 Ollama API 的地址,然後使用 ollama run 指令執行 Gemma 2 模型:
OLLAMA_HOST=http://localhost:11434 ollama run gemma2

>>> 你好!

# 你好!👋  有什么我可以帮你的吗?😊

任務 4. 部署 Open WebUI,打造更友善的 Chatbot 互動介面

openwebui.yaml

[閱讀全文]