Skip to content

Instantly share code, notes, and snippets.

View philipz's full-sized avatar

philipz philipz

View GitHub Profile
@philipz
philipz / USER_MANUAL.md
Created June 28, 2025 16:05
SuperClaude 使用手冊
@philipz
philipz / CloudNativePG_AA.md
Created June 26, 2025 05:25
CloudNativePG: Dual-Center High Availability Architecture and Zero Data Loss Synchronization Mechanism

CloudNativePG 雙中心高可用性架構與無資料遺失同步機制

CloudNativePG 透過主備架構實現企業級 PostgreSQL 高可用性部署,雖然不支援真正的雙活架構,但提供快速故障轉移的主備模式,可達成 RPO ≤ 5 分鐘的災難復原能力。作為 Kubernetes 原生的 PostgreSQL 運算子,CloudNativePG 利用 PostgreSQL 內建的同步複寫機制,實現無資料遺失的資料同步,同時提供自動化的生命週期管理和故障恢復能力。

CloudNativePG 核心架構與基本概念

CloudNativePG 是專為 Kubernetes 環境設計的 PostgreSQL 運算子,採用完全雲原生的設計理念。該系統使用主備(primary/standby)架構,結合 PostgreSQL 原生的串流複寫技術,而非依賴外部工具如 Patroni 或 repmgr。核心組件包括 CloudNativePG 控制器管理器、實例管理器(Instance Manager)和多個自定義資源定義(CRDs)。

控制器管理器部署在 cnpg-system 命名空間中,負責整體集群的生命週期管理。實例管理器作為每個 PostgreSQL Pod 的 PID 1 執行程序,直接管理 PostgreSQL 程序的啟動、監控和故障恢復。系統透過 Cluster、Backup、ScheduledBackup、Pooler 等 CRDs 提供聲明式配置介面。

@philipz
philipz / README.md
Created June 24, 2025 13:43
如何在 Node.js 的 中使用本地套件

如何在 Node.js 的 package.json 中使用本地套件

在 Node.js 專案開發中,有時您會需要使用本地開發中的套件版本,而不是從 npm 註冊表安裝的公開版本。這在以下情況特別有用:

  • 您正在開發一個新的套件,並希望在另一個專案中測試它。
  • 您正在修復一個套件中的錯誤,並希望在您的專案中驗證修復。
  • 您需要對現有套件進行客製化修改,並在您的專案中使用該修改版本。

以下是幾種將 package.json 中的套件指向本地版本的方法:

@philipz
philipz / launch.json
Created June 11, 2025 15:35
VSCode debug MCP launch.json
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Debug with MCP Inspector",
"type": "node",
"request": "launch",
@philipz
philipz / ip-ranges.sh
Created June 6, 2025 14:52
Get AWS IP Ranges
#!/bin/bash
curl -o ip-ranges.json https://ip-ranges.amazonaws.com/ip-ranges.json
echo "Please input the service:
Valid values: AMAZON | AMAZON_APPFLOW | AMAZON_CONNECT | API_GATEWAY | CHIME_MEETINGS | CHIME_VOICECONNECTOR | CLOUD9 | CLOUDFRONT | CLOUDFRONT_ORIGIN_FACING | CODEBUILD | DYNAMODB | EBS | EC2 | EC2_INSTANCE_CONNECT | GLOBALACCELERATOR | KINESIS_VIDEO_STREAMS | ROUTE53 | ROUTE53_HEALTHCHECKS | ROUTE53_HEALTHCHECKS_PUBLISHING | ROUTE53_RESOLVER | S3 | WORKSPACES_GATEWAYS"
read -r service
echo "Please input the region:
Valid values: ALL | ap-east-1 | ap-northeast-1 | ap-northeast-2 | ap-northeast-3 | ap-south-1 | ap-southeast-1 | ap-southeast-2 | ca-central-1 | cn-north-1 | cn-northwest-1 | eu-central-1 | eu-central-2 | eu-north-1 | eu-south-1 | eu-south-2 | eu-west-1 | eu-west-2 | eu-west-3 | me-central-1 | me-south-1 | sa-east-1 | us-east-1 | us-east-2 | us-gov-east-1 | us-gov-west-1 | us-west-1 | us-west-2 | GLOBAL"
@philipz
philipz / shell.md
Created March 5, 2025 02:16
在Shell中查詢聯外IP

export CLOUD_SHELL_IP=$(dig +short myip.opendns.com @resolver1.opendns.com)

@philipz
philipz / readme.md
Created August 29, 2024 14:13
Camunda Run with cockpit-plugins

Refer: datakurre/operaton-cockpit-plugins#16

docker buildx build --push --platform linux/arm64,linux/amd64,linux/amd64/v2 -t philipz/camunda-cockpit-plugins:7.21.0 .

FROM camunda/camunda-bpm-platform:run-7.21.0

USER root
RUN apk add --no-cache git zip
USER camunda
@philipz
philipz / postgres.yaml
Last active May 22, 2024 15:50
Camunda 7 Helm install
apiVersion: apps/v1
kind: Deployment
metadata:
name: postgres-deployment
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: postgres
@philipz
philipz / readme.md
Created January 18, 2024 01:50
Kind config for ingress and volume
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
  extraMounts:
  - hostPath: /Users/YOURNAME/lab/kind
    containerPath: /home/kind
  extraPortMappings:
 ## expose port 31080 of the node to port 80 on the host
@philipz
philipz / gist:631863e64c1b028a6b80ae4facfde850
Created October 22, 2023 09:26
Render Helm Chart Templates
helm template <CHART_NAME> <REPO_NAME>/<PATH_TO_CHART>
- example -
helm template nginx-ingress nginx/nginx-ingress
helm template validator-1 ./charts/goquorum-node --namespace quorum --values ./values/validator.yml --debug > test.yaml