Logo Ricky
  • 首頁
  • 關於
  • 更多的
    技能 經歷 學歷 專案
  • 文章
  • 筆記
  • 活動
  • Transform
  • Chinese
    English Chinese
  • Dark Theme
    Light Theme Dark Theme System Theme
Logo Inverted Logo
  • 文章
  • 2017
  • 2018
  • 2019
  • 2020
  • 2021
  • 2022
  • 2023
  • 2024
  • 2025
  • 2026
  • /etc/shadow 與建立 yescrypt、MD5、SHA-256、SHA-512 密碼雜湊
  • 2020年,最新NGINX的ngx_http_geoip2模块以精准禁止特定国家或者地区IP访问
  • 25秒读取16GB文件,Go怎么做到的?
  • 6首國際最強公認催眠曲
  • [Golang] 利用build tags達到不同的build config
  • [Juniper Firewall] command
  • [Kubernetes] Service Overview
  • [Terraform] 入門學習筆記
  • [分享]鑰匙圈 - 五七步槍刺刀鞘的墬子
  • [網友好文]Cisco UCS CIMC系列文章
  • [译] Go语言inline内联的策略与限制
  • `sentry.lang.javascript.processor: SoftTimeLimitExceeded()` 大量錯誤
  • A10
  • Abount Ansible Hosts
  • Add SFTP user and share directory
  • Advanced macOS Command-Line Tools
  • Aliyun CDN Cache Rules
  • Ansible Network 的新 LibSSH 連線外掛取代 Paramiko,並支援 FIPS 模式
  • Ansible 簡介
  • ansible.builtin.slurp - 讀取檔案內容
  • Argo CD ApplicationSet Controller: 世界為我而轉動!
  • Arp notes
  • auth.log 中 sshd 這行的 SHA256 是什麼?
  • Avoiding the Top 10 NGINX Configuration Mistakes - NGINX
  • Bash 位元運算子
  • Bash 腳本如何建立臨時檔案:mktemp 與 trap 教學
  • BIRD 与 BGP 的新手开场
  • Cannot set command timeout per task with network_cli
  • CDN 相关 https 证书的申请
  • CentOS 7 掛載 Synology NAS 資料夾
  • channel 的 15 条规则和底层实现
  • Cloudflare Tunnel
  • Cloudflare Zero Trust
  • Cloudflare 流量處理順序
  • Container security fundamentals
  • CS 視覺化:實用的 Git 指令
  • datavizproject
  • Day 28 - Kubernetes 第三方好用工具介紹
  • Docker Introduction
  • Docker 安全最佳實務:速查表
  • Docker 容器無法存取外網?nftables 下的 NAT 配置指南
  • Docker 小技巧:使用 Docker Config
  • docker-compose yaml 問題
  • Dockertest 极速搭建集成测试环境神器
  • ElasticSearch 学习笔记
  • Emoji 正则匹配
  • Fortigate 在 HA 模式下的管理介面
  • fortios_system_config_backup_restore 的拼寫錯誤、缺少 collection,或模組路徑不正確
  • Gin 框架绑定 JSON 参数使用 jsoniter
  • Gin中文文档
  • Git 小技巧:用 .mailmap 合併不同作者
  • Git 強制推送
  • Git 核心開發者如何設定 Git
  • gitbook常用的插件
  • GitHub Actions 入門教學
  • GitLab CI 可以自動檢測程式碼品質!SonarQube 程式碼品質檢測怎麼做?
  • GitLab 啟用 Project integration - Mattermost slash commands
  • Gitlab-CI Introduction
  • Git内部原理介绍
  • Gluetun:讓Docker容器走VPN連線,沒網路就斷線,使用教學
  • Go embed 简明教程
  • Go Generics 入門筆記
  • Go LeetCode
  • Go Modules 處理 Private GIT Repository 流程
  • Go Protobuf:新的 Opaque API
  • Go Style Decisions - Pass values
  • Go Tool Trace
  • Go 使用 selenium 截图
  • Go 字串格式化
  • Go 文章
  • Go 的十億列挑戰:從 1 分 45 秒到 3.4 秒的九種解法
  • Go 程式碼重構:23 倍效能追擊
  • Go 設計模式
  • go-mysql-elasticsearch 基準測試
  • go-synctest
  • Golang os/exec 使用方法(筆記)
  • golang pprof 实战
  • Golang tips
  • Golang 服務的檔案句柄超出系統限制(too many open files)
  • Golang基准测试
  • golang的AES加密和解密的三种模式实现(CBC/ECB/CFB)
  • Google Cloud Platform(GCP):透過 Windows 遠端桌面存取 GCP 執行個體上的 Linux GUI
  • Google 基礎設施
  • Google 搜尋運算子:完整清單(44 個進階運算子)
  • Gopher 需要知道的几个结构体骚操作
  • Go实战指南:使用 go-redis 执行 Lua 脚本
  • Go语言高性能编程手册(万字长文)
  • GraphQL 內省查詢
  • HA command
  • htop 說明
  • I Replaced Redis with PostgreSQL (And It's Faster)
  • Install Chrome OS
  • iPhone 鈴聲製作教學,將 MP3 音樂換成電話鈴聲或鬧鐘鈴聲
  • Jenkinsfile 範例
  • Jinja docx 樣板:在巢狀 for 中避免換行
  • Juniper 筆記
  • Linkerd 2.8 - 實現超級簡單又安全的多叢集(multicluster) Kubernetes 架構
  • Linux CentOS 7 安裝字體庫 & 中文本體
  • Linux 磁碟空間未釋放的解決方法
  • llamafile - 以單一檔案分發並執行 LLMs
  • LLM 視覺化
  • LLMs Hackmd Docs
  • LocalStorage vs. IndexedDB vs. Cookies vs. OPFS vs. WASM-SQLite
  • LVM - lvg 與 lvol
  • Mac 小眾軟體推薦與工作流程分享(2024)
  • MacBook 设置 SSLKEYLOGFILE 环境变量解密 HTTPS 流量
  • macOS 使用技巧與小訣竅
  • Markdown 語法的正則表達式
  • Marp教學:Markdown搭配VS Code做簡報,快速輸出為PPTX或PDF,提昇做簡報效率
  • Mosdns-X
  • Netcat(Linux nc 指令)網路管理者工具實用範例
  • Nginx - request_time和upstream_response_time详解
  • Nginx if 避坑指南
  • Nginx SSL/TLS configuration with TLSv1.2 and TLSv1.3 - ECDHE and strong ciphers suite (Openssl 1.1.1)
  • Nginx 使用 split_clients 进行简易 A/B 测试
  • Nginx 出現 500 Error 修復 (too many open file, connection)
  • NGINX 原生 ACME 支持:从根本上重塑 TLS 自动化部署
  • Nginx 如何防禦 DDoS 攻擊?
  • nginx 添加第三方nginx_upstream_check_module 模块实现健康状态检测
  • Nginx 筆記
  • Nginx 請求處理流程你了解嗎?
  • Nginx 访问日志中记录毫秒级别的时间精度
  • Nginx怎样隐藏上游错误
  • Objective-See:一個關於 Apple 裝置隱私與安全的開源專案組織
  • OIDC(OpenID Connect) 简介
  • onion-mirror
  • openresty+redis 攔截高頻訪問 IP
  • openvpn部署之部署基於AD域認證
  • parqeye
  • Percona config
  • Privacy Badger:EFF 推出的免費瀏覽器擴充套件,用來阻止網路監控追蹤
  • Prometheus relabeling and linux metrics
  • Python Telegram Bot
  • Python 安裝模組問題
  • Python 的多種命令列工具
  • Python玩转各种多媒体,视频、音频到图片
  • Quagga Routing - 安裝、設定與建置 BGP
  • Raid10 徹底崩壞 ,壞就壞在同組作Mirror硬碟一起故障。
  • Rainman 工程體系八問:面試時如何識別卓越工程文化
  • Route notes
  • Run llama3
  • Rust 入門!強化終端的現代跨平台命令列工具
  • Selectively Disabling HTTP/1.0 and HTTP/1.1
  • Sentry 原始碼開發筆記
  • Setting up JWT Authentication
  • Shell Script 最佳實務
  • Shell 中 `< <(command args)` 是什麼意思?
  • Shell 腳本學習筆記
  • SHELL编程之常用技巧
  • SQL Join 類型視覺化解說
  • SQL 查詢不是從 SELECT 開始
  • SSH 失敗錯誤:fatal: daemon() failed: No such device
  • SSH 证书登录教程
  • Switch notes
  • Switch版本更新
  • Synology:一眼查看 NAS RAM 細節
  • Systemd 入门教程:实战篇
  • Taide - 訓練資料
  • TaigiTube 台語水管
  • Tcpdump 使用总结
  • Terraform Provider 開發紀錄
  • TIL:Bash 腳本的 timeout
  • Trellis Ansible 錯誤的解譯器
  • Ubuntu 18.04 透過 netplan 設定網路卡 IP
  • Vagrantfile and Provider
  • vagrant筆記
  • Vim 小技巧 - 在 Linux 上用 Vim 編輯遠端檔案
  • vimrc設定教學
  • VsCode 整合 DevSpace 進行 debug !
  • WebAssembly 發生了什麼事
  • WebP Cloud 使用 Cloudflare Workers 回源以保護回源伺服器並開始提供回源時間資訊
  • What the f*ck Python! 🐍 中文版
  • Windows SSH setup
  • WSL 2 的 .wslconfig 設定檔說明
  • YAML 裡的字串很長該怎麼做?
  • Zsh tab 補完無法使用
  • ZSH 自动读取 macOS 系统代理配置并设置环境变量
  • zsh 配置文件解析及优先级
  • 《宝可梦:阿尔宙斯》双周目通关
  • 【理解 Cilium 系列文章】(一) 初識 Cilium
  • 【筆記】在GCP上建立可Remote dekstop的Ubuntu環境
  • 一些软件设计的原则
  • 一張圖學會【拼音輸入法】
  • 一文讀不懂的 Go 1.21 GA 的 PGO 優化——一次在 WebP Server Go 上的嘗試
  • 一次搞懂密碼學中的三兄弟 — Encode、Encrypt 跟 Hash
  • 不使用 kube-proxy 的 Kubernetes
  • 人人都需要一個 HTTP proxy 來 debug
  • 以 Go 為例,圖解 Data Alignment 如何影響記憶體使用量
  • 使用 Ansible 透過 RestAPI 備份 FortiOS 設定
  • 使用 Cloudflare 中轉 V2Ray 流量
  • 使用 docker-compose 部署到遠端 Docker 主機
  • 使用 Fail2Ban + nftables 強化伺服器
  • 使用 Nginx HTTPS 與 Basic Auth 反向代理 VMware ESXi 6.5 修復 VMRC /screen
  • 使用 Nginx 和 mod_pagespeed 自動將圖片轉換為 WebP 並輸出
  • 使用 oh-my-posh 美化 PowerShell 樣式
  • 使用 TC 和 Netem 模拟网络异常
  • 使用 Vagrant 在 vSphere 部署多台 VM
  • 使用 Vagrant 自動調整 VirtualBox 磁碟大小
  • 使用 Vim 當作差異比對工具
  • 使用Go语言解析二进制数据踩坑总结
  • 使用mydumper备份数据库
  • 使用終端機與 SSH 連線到遠端主機
  • 供應鏈攻擊
  • 值得了解的 5 個 DevSecOps 開源專案
  • 关于高可用的系统
  • 具有代表性的 HTTP 状态码
  • 再戰營運商快取:使用 iptables 對付快取劫持
  • 冰山一角的駭客工具介紹
  • 利用 GPG 簽署 git commit
  • 制作macOS系统dmg包及iso可引导镜像
  • 加速 Rust 編輯、建置、執行循環
  • 升級到 Zabbix 5 後資料庫升級失敗
  • 即時監控網路介面上的 HTTP 請求
  • 取得 GraphQL 結構資訊
  • 古代計時單位
  • 命令列的藝術
  • 善用 Go Fuzzing,幫助你寫出更完整的單元測試
  • 喬叔教 Elastic - 30 - Elasticsearch 的優化技巧 (4/4) - Shard 的最佳化管理
  • 在 Amazon EC2 上掛載 AWS S3 Bucket
  • 在 Bash 中解析命令列參數
  • 在 bash 腳本中使用 here-doc 將資料寫入檔案
  • 在 Docker 環境使用 Traefik v3 與 MinIO 快速搭建私有化物件儲存服務
  • 在 Git 中追蹤 SQLite 資料庫變更
  • 在 Kubernetes 上調校 EMQX 以擴展至一百萬並發連線
  • 在 Linux 中偵測 RAID 資訊
  • 在 macOS 中檢視 Web Views
  • 在 Shell 中輸出 ASCII 藝術字
  • 在 Ubuntu 22.04|20.04|18.04 安裝 PowerDNS 與 PowerDNS-Admin
  • 在瀏覽器輸入網址並送出後,到底發生了什麼事?
  • 多數程式設計師不知道的 6 個 YAML 特性
  • 如何使用 Chrome 開發人員工具擷取網頁畫面與製作長截圖?
  • 如何刪除檔名含有不可列印字元的檔案
  • 如何在 Switch 上啟用 snmp 設定
  • 如何在Surface Go 2安裝Fedora Linux,提昇低階平板效能
  • 如何在別名指令上使用 which
  • 如何處理 50GB 的大型 CSV 檔案(R 語言)?
  • 如何設定時區與NTP服務在RHEL7/CentOS7
  • 如何讓終端輸出覆蓋同一行
  • 字串欄位被轉成 True(型別 string)
  • 實戰經驗整理的 25 個 Nginx 技巧
  • 寫 Web 也可以用 Makefile:好好管理你的環境流程
  • 將 Cloudflare WARP 轉成 HTTP 代理
  • 將 List 轉置為 dict 的 list
  • 將指令輸出轉為圖片
  • 工欲善其事,必先利其器 —— 我的家庭網路組網方案
  • 应大多数人要求写下kubeadm的基础使用
  • 從零開始的容器
  • 快速且強大的日誌檢視與處理器,能把 JSON logs 或 logfmt logs 轉成清楚易讀的格式。
  • 怎么选择 Go 文件读取方案
  • 我如何設定 Git 身分
  • 我就感觉到快 —— zsh 和 oh my zsh 冷启动速度优化
  • 我用 Zip Bomb 來保護我的伺服器
  • 我的提升生產力 Mac 設定與軟體
  • 我覺得好用的 iTerm2 功能
  • 把你的程式碼庫轉成單一的 LLM 提示詞。
  • 撰寫 Bash 腳本的最佳實務
  • 是否有正規表示式可以檢測有效的正規表示式?
  • 更強大的 Go 執行追蹤能力
  • 更快的多平台建置:Dockerfile 交叉編譯指南
  • 最好用的 V2Ray 一鍵安裝腳本 & 管理腳本
  • 有关 MTU 和 MSS 的一切
  • 朋友旅行防止絕交檢查表
  • 機房 notes
  • 每位程式設計師都該知道的 Python 數字
  • 比 Ctrl+F 更聰明:直接連到網頁內容
  • 永齡基金會AI大師論壇:人工智慧如何形塑人類未來
  • 活久见!Linux命令行居然也可以用来查看图像?
  • 淺談 Go Iterator
  • 測試伺服器是否易受 Shellshock 漏洞影響
  • 為什麼大寫字母的 QR Code 會比小寫字母的更小?
  • 為什麼它正在執行?
  • 為什麼瀏覽器 user-agent string 總是包含 Mozilla/5.0 ?
  • 為你的Go應用建立輕量級Docker映象? | IT人
  • 獨立伺服器 CPU 頻率最大化配置指南
  • 用 Golang 從零打造容器(Liz Rice)
  • 用 IIS、.NET 4.5 與 Octopus Deploy 建立 Windows Server Vagrant box
  • 用 iptables 和 ip rule 做負載均衡
  • 用 Markdown 繪製圖表
  • 用 Nginx 強制檔案下載
  • 用 WUD 取代 Watchtower:打造可控的 Docker 自動更新方案
  • 用公開 URL 將本機 Web 伺服器暴露到網際網路。
  • 白話 Kubernetes Runtime
  • 确定虚拟化技术的简便方法
  • 第 19 天 BGP 協定(1)
  • 終端機如何運作
  • 終端機程式遵循的規則
  • 臺灣台語輸入法 App 上架,即日起行動裝置也能輸入臺灣台語
  • 與 DDoS 奮戰:nginx, iptables 與 fail2ban
  • 設定 Haproxy 以防止 DDOS 攻擊
  • 設定多個 GitHub 帳號的 SSH 金鑰
  • 調整系統使得 EMQX 可以支援 1M 連線
  • 讓終端機下雪的 Python 腳本
  • 資料庫基礎
  • 超簡單!快速打造漂亮又好用的 zsh 終端環境
  • 透過LinuxServer.io打包的Docker映像檔,將桌面程式轉成網頁版,透過瀏覽器即可使用
  • 通过 Nginx 绕过 X-Frame-Options 限制
  • 進階 Shell 腳本技巧:用 Bash 自動化複雜任務
  • 適合舊電腦的輕量級 Linux 發行版
  • 針對特定 Commit Message 觸發 GitHub Actions
  • 防火牆更新
  • 阿瓦隆(The Resistance:Avalon)
  • 降低家用 Web 服務被通報的機率
  • 隱藏於 Cloudflare 的全球網路之中
  • 高效能 Go 工作坊
  • 黑帽 Go
Hero Image
Selectively Disabling HTTP/1.0 and HTTP/1.1

Selectively Disabling HTTP/1.0 and HTTP/1.1 http { ... # Check for text-based browsers map $http_user_agent $is_text_browser { default 0; # Text-Based Browsers (not exhaustive) "~*^w3m" 1; "~*^Links" 1; "~*^ELinks" 1; "~*^lynx" 1; # Bots (not exhaustive) "~*Googlebot" 1; "~*bingbot" 1; "~*Yahoo! Slurp" 1; "~*DuckDuckBot" 1; "~*YandexBot" 1; "~*Kagibot" 1; } # Check if request is HTTP/1.X map $server_protocol $is_http1 { default 0; "HTTP/1.0" 1; "HTTP/1.1" 1; } # If Request is not text-based browser, # and is HTTP/1.X, set the http1_and_unknown variable # to 1, which is equivalent to "true" map "$is_http1:$is_text_browser" $http1_and_unknown { default 0; "1:0" 1; } ... }

Tuesday, February 3, 2026 閱讀
Hero Image
Go Tool Trace

淺談 Go Tool Trace - 1 淺談 Go Tool Trace - 2 Go Trace 與使用者自訂追蹤分析 淺談 Go Tool Trace - 3 實際分析 Goroutine Analysis Go Tool Trace - 4 從 分析到實戰:最佳化 Goroutine 數量 trace trace 是「事件時間軸」,不是「取樣統計」 go tool trace:用來看 runtime trace(執行追蹤),本質是「時間序列事件」: goroutine 的建立 / runnable / running / waiting / syscall scheduler(G/M/P)相關事件、排程延遲 blocking(net / sync / syscall)時間分佈 GC 事件、STW、heap 變化(在 trace viewer 會看到) 用 pprof 是找「熱點」:誰吃 CPU / 誰 alloc 多 用 trace 是找「延遲原因」:為什麼卡(排程?鎖?網路?syscall?GC?) 直覺判斷:

Tuesday, January 27, 2026 閱讀
Hero Image
I Replaced Redis with PostgreSQL (And It's Faster)

I Replaced Redis with PostgreSQL (And It’s Faster) 在更改之前,Redis 主要處理三件事: 快取(佔使用量的 70%) 發布/訂閱(佔使用量的 20%) 後台作業佇列(使用率 10%) 痛點: 需要備份兩個資料庫 Redis 使用記憶體(規模化時成本很高) Redis 持久化機制…很複雜。 Postgres 和 Redis 之間的網路跳躍 PostgreSQL 功能 1: 使用未記錄表進行快取 Redis await redis.set("session:abc123", JSON.stringify(sessionData), "EX", 3600); PostgreSQL CREATE UNLOGGED TABLE cache ( key TEXT PRIMARY KEY, value JSONB NOT NULL, expires_at TIMESTAMPTZ NOT NULL ); CREATE INDEX idx_cache_expires ON cache(expires_at); Insert INSERT INTO cache (key, value, expires_at) VALUES ($1, $2, NOW() + INTERVAL '1 hour') ON CONFLICT (key) DO UPDATE SET value = EXCLUDED.value, expires_at = EXCLUDED.expires_at; Read SELECT value FROM cache WHERE key = $1 AND expires_at > NOW(); Cleanup (run periodically)

Monday, January 19, 2026 閱讀
Hero Image
臺灣台語輸入法 App 上架,即日起行動裝置也能輸入臺灣台語

臺灣台語輸入法 App 上架,即日起行動裝置也能輸入臺灣台語 教育部臺灣台語輸入法 - iOS 教育部臺灣台語輸入法 - Android 「臺灣台語輸入法」除了支援拼音輸入,也提供語音輸入功能,讓使用者能透過語音轉換成文字。

Thursday, January 15, 2026 閱讀
Hero Image
WebAssembly 發生了什麼事

WebAssembly 發生了什麼事 Watlings

Sunday, January 11, 2026 閱讀
Hero Image
用 WUD 取代 Watchtower:打造可控的 Docker 自動更新方案

用 WUD 取代 Watchtower:打造可控的 Docker 自動更新方案 WUD(What’s Up Docker) services: wud: image: getwud/wud:latest container_name: wud restart: unless-stopped ports: - "3000:3000" volumes: - /var/run/docker.sock:/var/run/docker.sock - ./store:/store environment: - TZ=Asia/Shanghai # 本机 Docker watcher - WUD_WATCHER_LOCAL_SOCKET=/var/run/docker.sock # 关键:默认不监控任何容器 - WUD_WATCHER_LOCAL_WATCHBYDEFAULT=false # 每 12 小时扫描一次 - WUD_WATCHER_LOCAL_CRON=0 */12 * * * # 自动更新 + 更新后清理旧镜像 - WUD_TRIGGER_DOCKER_AUTO_PRUNE=true # 效果等同于 `watchtower --cleanup` 只監控(不自動更新) labels: - "wud.watch=true" 會出現在 WUD UI 會提示有更新 不會自動重啟 監控 + 自動更新(等同 Watchtower) labels: - "wud.watch=true" - "wud.trigger.include=docker.auto"

Sunday, January 11, 2026 閱讀
Hero Image
終端機如何運作

終端機如何運作

Friday, January 9, 2026 閱讀
Hero Image
每位程式設計師都該知道的 Python 數字

每位程式設計師都該知道的 Python 數字

Sunday, January 4, 2026 閱讀
Hero Image
為什麼它正在執行?

為什麼它正在執行?

Tuesday, December 30, 2025 閱讀
Hero Image
用公開 URL 將本機 Web 伺服器暴露到網際網路。

用公開 URL 將本機 Web 伺服器暴露到網際網路。

Saturday, December 27, 2025 閱讀
Hero Image
Rainman 工程體系八問:面試時如何識別卓越工程文化

Rainman 工程體系八問:面試時如何識別卓越工程文化 CI/CD 工具:用的是鼓勵協作的 GitLab/GitHub,還是層層設卡的 Gerrit/Jenkins? 審批流程:一個合併請求(MR)要幾層老闆簽字才能通過? 環境隔離:有獨立的 Dev/Test/Prod 環境嗎?能否一鍵切換與部署? 部署鏈路:從程式碼寫完到使用者可見,需要幾步?是自動化還是手動化? 監控體系:告警能直接指出問題根因,還是全靠工程師半夜人肉翻日誌? 配置管理:是支援灰度發布的集中化管理,還是散落在程式碼各處靠人工修改? 測試覆蓋:有可靠的自動化測試「免疫系統」,還是把 bug 當 feature,讓線上使用者幫你測? 回滾機制:線上服務「炸了」,是 5 分鐘內能從容回滾,還是需要全組通宵「陪葬」?

Monday, December 22, 2025 閱讀
Hero Image
快速且強大的日誌檢視與處理器,能把 JSON logs 或 logfmt logs 轉成清楚易讀的格式。

快速且強大的日誌檢視與處理器,能把 JSON logs 或 logfmt logs 轉成清楚易讀的格式。

Sunday, December 14, 2025 閱讀
  • ««
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • »
  • »»
導覽列
  • 關於
  • 技能
  • 經歷
  • 學歷
  • 專案
聯絡方式:
  • zeyanlin@outlook.com
  • linzeyan
  • Ricky
  • Ricky