[Image][EXIF] 照片檔案 Exif 數據規格 – 使用 ExifTool 修正檔名時間戳記

Intro 在數位攝影的世界中,EXIF (Exchangeable Image File Format) 是嵌入在 JPEG、TIFF 等影像檔案中的元資料 (Metadata) 標準。它記錄了照片拍攝時的核心資訊,包含相機型號、光圈、快門、GPS 定位,以及最關鍵的時間標籤: DateTimeOriginal (原始拍攝時間):快門按下的那一刻,現代雲端相簿(如 Google 相簿、iCloud)與 NAS(如 Synology Photos)建檔、排序的最核心依據。 CreateDate (數位化時間):照片被轉換成數位檔案的時間。 ModifyDate (檔案修改時間):檔案最後一次被編輯或儲存的時間。 當相片缺乏這些內嵌的 EXIF 時間標籤時,作業系統與雲端相簿往往會退而求其次,改用作業系統底層的「檔案建立日期」來排序,這也是導致相簿時空錯亂的元凶。 Exiftool ExifTool 是由 Phil Harvey 開發、基於 Perl 的開源跨平台命令列應用程式。它是目前對 Metadata 支援度最完整的軟體,能夠讀取、寫入和修改幾乎所有影像與影片格式的元資料。 https://exiftool.org/ 關於 ExifToolGUI 的限制與硬傷 […]

[Database][MySQL] 樂觀鎖 & 悲觀鎖指南 – OCC & PCC (FOR SHARE|FOR UPDATE)

Intro Database 中,鎖的實現分類上目前可分為兩種: 樂觀鎖(Optimistic Locking) 悲觀鎖(Pessimistic Locking) 樂觀鎖 – OCC 樂觀並行控制 – Optimistic Concurrency Control,縮寫「OCC」 不利用內建鎖機制,而是利用應用層邏輯解決衝突 可透過讀取資料時分派一個版本或時間戳,通過校驗後寫入否則中斷(實作上可利用寫入連帶驗證版本達成) 適合交易之間資料競爭(data race)概率較小的應用情境 MySQL 實現範例 CAS (Compare And Swap) — 確保「我現在改的」是我剛才「看到的」那一版 UPDATE page SET content = '第六版…', version = version + 1 WHERE id […]

[Web] Next.js (React 全端框架) 開發指南

Intro Next.js by Vercel – The React Framework Next.js 是一個開源的 React 全端框架,後端基於 Node.js。它支援多種渲染方式 (Rendering),包括伺服器端渲染 (SSR)、靜態站點生成 (SSG) 以及用於客戶端渲染 (CSR) 的 React 原生渲染模式。 安裝 Next.js Node.js 安裝指南 Next.js 需要依賴 Node.js,以下 Next.js 官網安裝指南會說明欲安裝版本對應的 Node.js 最低需求版本。 How to set up a new Next.js project […]

[MySQL] Character Sets & Collations (字符集與排序規則) – utf8 or utf8mb4

Intro Character Set: 字符集合,定義資料如何儲存與表示。 MySQL 支援多種字符集,例如: latin1, utf8mb4 Collation: 基於字符集,定義了字符集中的字符如何進行排序和比較。 MySQL 的 Collation 一般以以下格式命名,舉 utf8mb4_general_ci 為例: utf8mb4: 字符集名稱 general: 簡化的排序規則 (unicode為精準 Unicode 排序規則) ci(case insensitive): 大小寫不敏感 MySQL 字符集上在 8.4 版本後已經清楚且標準很多 MySQL 8.4 Reference Manual :: 12.2 Character Sets and Collations […]

[Windows] 電腦硬體問題排查指南 – 系統狀態監測軟體

Intro 目前 PC 比較方便自行檢測替換組件,本篇提供目前 Windows OS 主流軟體工具以利排查硬體問題 Softwares / Apps Hardware Information CPU-Z – CPUID CPU-Z 為一個可查詢 CPU、記憶體、主機板及顯示卡資訊的 Windows 平台免費軟體。 Hardware Status HWMonitor – CPUID 電腦溫度即時監控工具,能夠即時監控顯示卡處理器(ACPI)、CPU、硬碟溫度與電池效能。 CrystalDiskInfo 硬碟資訊檢測工具 (提供健康度與項目),支援SSD固態硬碟檢測 Download ZIP

[HTTP] API Timeout 指南 (connect / read timeout)

Intro 關於 API Timeout 的網路資料略顯不足,Wikipedia 目前也只有廣義 Timeout (computing) 資訊。 本篇將分享個人對 Timeout 的所知,如有錯誤歡迎告知修正 Timeout 定義 Client Connect Timeout Read Timeout TCP Client TCP handshake 中從發出 SYN 到收到 SYN-ACK 完成三次握手的時間 指送出 PSH-ACK (Data) 後,每次資料封包 (Payload) 到達間的間隔 HTTP Client 包含 TCP 三次握手。是否包含 DNS […]

[Web] Browser Developer Tools 技巧

Intro Web development tools / devtools – Wikipedia 本篇將以 Chrome 瀏覽器為主,介紹 Developer Tools 的實作技巧 Window.open() 新視窗監測 現行要監測某個 button click 會開啟轉導去哪,在前端框架下從 JS code 很難找出目的,若又是 window.open 效果則無法持續透過 developer tool 監測 Network 歷程 比較簡單暴力的做法是在該 web page 的 console 覆寫 window.open() 看要 console.log() 出來還是改成 […]

[SMTP] 簡易郵件傳輸通訊協定 SMTP (Simple Mail Transfer Protocol) 指南

Intro 簡易郵件傳輸通訊協定 SMTP 是什麼? | Cloudflare 簡單郵件傳送協定(Simple Mail Transfer Protocol / SMTP)可用在傳送和接收電子郵件的資訊,但 SMTP 通常用作傳送電子郵件而不是接收。 SMTP 是一個相對簡單的基於文字的協定,可以透過協定指定將訊息傳送至一或多個接收者,通過 telnet 程式可以簡單的測試一個 SMTP伺服器。SMTP 主要 TCP port 以前為 25 現今為 587 (TLS) 。DNS 的 MX record 決定 SMTP 伺服器。 角色 Agent Software for example MUA […]