Umami 分析工具:簡單、隱私、強大的網站分析解決方案

Umami 分析工具:簡單、隱私、強大的網站分析解決方案

在當今數據驅動的網絡環境中,網站分析工具是了解用戶行為和優化網站性能的關鍵。Umami 作為一個開源的網站分析解決方案,正逐漸成為 Google Analytics 的有力競爭者。本文將深入探討 Umami 的特點、優勢,以及如何使用 Umami Cloud 或自托管方式部署這一強大工具。

2025年3月23日
使用 Docker Compose 構建全棧應用:React、Express 與 MySQL

使用 Docker Compose 構建全棧應用:React、Express 與 MySQL

在複雜的全棧開發環境中,管理前端、後端和數據庫之間的配置和依賴關係可能會非常耗時且易於出錯。Docker Compose 提供了一個優雅的解決方案,使開發人員能夠輕鬆地定義、配置和運行多容器應用程序。本文將詳細介紹如何使用 Docker Compose 創建一個整合了 React.js 前端、Express.js 後端和 MySQL 數據庫的全棧應用,並提供一個使用 Vite、Express 和 MySQL 的實用示例。

2025年3月23日
Mockaroo:加速前端開發的 API 模擬工具詳解

Mockaroo:加速前端開發的 API 模擬工具詳解

在現代軟體開發中,前端與後端開發經常需要同步進行,但後端 API 通常需要較長的開發時間。當後端尚未準備好時,前端開發人員如何繼續他們的工作?這時,API 模擬工具就顯得至關重要。本文將深入探討 Mockaroo 這款強大的數據模擬工具,解析它如何加速開發流程,詳細指導如何使用它,並分析其相比其他模擬服務的優勢。

2025年3月22日
Docker 基礎映像選擇指南:最佳實踐與 2020-2025 年趨勢分析

Docker 基礎映像選擇指南:最佳實踐與 2020-2025 年趨勢分析

Docker 基礎映像是構建容器的起點,其選擇直接影響應用的性能、安全性和可維護性。在 2020 至 2025 年間,基礎映像的使用趨勢經歷了從極簡主義到更平衡的實用主義轉變。本文將深入探討不同基礎映像的優缺點、選擇最佳實踐,以及近年來的發展趨勢,幫助開發者做出更明智的決策。

2025年3月21日
使用 GitHub Actions 自動化 Docker 映像構建與發佈流程

使用 GitHub Actions 自動化 Docker 映像構建與發佈流程

在當今的開發環境中,自動化發佈流程已成為提高開發效率的關鍵因素。本文將探討如何利用 GitHub Actions 構建 Docker 映像並推送到 DockerHub,以創建更高效、更可靠的發佈工作流程。

2025年3月20日
在 Node.js 中使用 bcrypt 加密密碼的完整指南

在 Node.js 中使用 bcrypt 加密密碼的完整指南

在現代應用程序開發中,安全存儲用戶密碼至關重要。本報告將詳細介紹如何在 Node.js 中使用 bcrypt 進行密碼加密,探討為何 bcrypt 優於其他哈希方法,並提供密碼加密的最佳實踐。

2025年3月19日
使用 Docker 和 Docker Compose 建立 Neo4j 資料庫

使用 Docker 和 Docker Compose 建立 Neo4j 資料庫

Neo4j 是一個強大的圖形資料庫,透過 Docker 和 Docker Compose 部署可大幅簡化安裝和管理流程。本報告將詳細介紹如何使用容器技術快速建立 Neo4j 環境,涵蓋從基本設置到進階配置的完整過程,適合開發者快速實現圖形資料庫的部署與管理。

2025年3月18日
使用 Google Colab 理解線性代數中的 A=CR 分解:Gilbert Strang 講座解析

使用 Google Colab 理解線性代數中的 A=CR 分解:Gilbert Strang 講座解析

在 Gilbert Strang 教授的 MIT 線性代數課程"Matrix Methods in Data Analysis, Signal Processing, and Machine Learning"的第一講中,我們遇到了一個基本而強大的矩陣分解方法:A=CR 分解。這個分解不僅是線性代數的基石,也是理解矩陣結構與向量空間的關鍵。本文將使用 Google Colab、NumPy 和 Matplotlib 來實現並視覺化這個概念,幫助我們從計算和幾何角度理解 A=CR 分解。

2025年3月18日
使用 Cloudflare Worker、Hono 和 Telegram Bot API 構建 RSS 訂閱推送系統

使用 Cloudflare Worker、Hono 和 Telegram Bot API 構建 RSS 訂閱推送系統

本文將詳細介紹如何使用 Cloudflare Worker、Hono 框架和 Telegram Bot API 構建一個自動化系統,該系統能夠監控 RSS 訂閱源並將最新更新推送到 Telegram 頻道。這個解決方案完全基於 Serverless 架構,無需管理伺服器,且大部分情況下可以在 Cloudflare 的免費方案內運行,非常適合個人開發者和小型團隊使用。

2025年3月18日
探索 GitHub Actions:自動化發布流程及其優勢

探索 GitHub Actions:自動化發布流程及其優勢

GitHub Actions 作為 GitHub 生態系統中的強大自動化工具,為開發者提供了簡化工作流程和實現 CI/CD(持續整合/持續交付)的絕佳方案。本文將深入解析如何透過 GitHub Actions 實現自動化發布流程,並探討相較於手動部署的諸多優勢。

2025年3月17日
從 2022 到 2025:重新審視前端開發的演變

從 2022 到 2025:重新審視前端開發的演變

2022 年 3 月,我曾整理了「一個 Full Stack Developer 的日常」,分享了自己的工作流程和方法論。如今已是 2025 年,前端開發領域已經歷了翻天覆地的變化。讓我們重新審視這個領域,看看三年來發生了什麼變化,以及現在學習前端開發應該採取什麼策略。

2025年3月17日
利用 AutoCorrect 與 GitHub Actions 提升繁體中文寫作品質

利用 AutoCorrect 與 GitHub Actions 提升繁體中文寫作品質

AutoCorrect 是一個強大的文案格式化工具,能夠自動糾正中日韓(CJK)與英文混合使用時的常見問題,如標點符號、空格等。本文將介紹如何透過 GitHub Actions 的自動化工作流程,讓您的繁體中文文章在推送到 GitHub 時自動進行格式化,有效提升文章的專業度和可讀性。

2025年3月16日
REST Countries API:全面指南與台灣例子

REST Countries API:全面指南與台灣例子

REST Countries API 是一個功能強大的開放源碼 RESTful 服務,提供世界各國豐富的資訊。本文將深入探討這個 API 的工作原理、主要功能以及實際應用案例,特別聚焦在台灣及其主要區域的數據查詢範例。

2025年3月15日
UV:基於 Rust 的超高速 Python 包管理工具

UV:基於 Rust 的超高速 Python 包管理工具

在當前 Python 生態系統中,包管理一直是開發者面臨的痛點之一。多種工具分散使用,效率低下,安裝依賴時常需等待漫長時間。今天,我們將介紹一個革命性的解決方案——UV(及其命令行工具 UVX),這是一個用 Rust 編寫的極速 Python 包管理器,正在迅速改變 Python 開發者的工作流程。

2025年3月15日
MyGO!!!!! Telegram 機器人:邊緣計算與動漫文化的融合

MyGO!!!!! Telegram 機器人:邊緣計算與動漫文化的融合

MyGO!!!!! Telegram 機器人是一個結合了現代邊緣計算技術與動漫文化的創新項目。這個基於 Grammy 和 Hono 框架構建的 Telegram 機器人,能讓用戶通過關鍵詞搜索 MyGO!!!!! 的圖片。本文將深入探討該機器人的背景、技術實現和功能特點,展示如何利用 Cloudflare Workers 部署高效能的 Telegram 機器人。

2025年3月15日

Google 公佈 AI Agent 白皮書:探討 AI 的代理功能

解析 Google 最新發布的 AI Agent 白皮書,探討 AI 模型如何通過結合推理、邏輯和外部工具來擴展其功能。

2025年1月6日

AI 代理:超越對話的下一代生成式 AI

探討 AI 代理如何結合大型語言模型的對話能力與行動導向功能,開創人機互動的新紀元,重新定義生成式 AI 的應用場景。

2025年1月1日
從零開始的 dApp 開發:2024 年學習路線圖

從零開始的 dApp 開發:2024 年學習路線圖

Web3 的機會已經來臨,接下來的三個月,我必須全力以赴。以下是我 2024 年的學習計畫:

2023年12月18日
左右互搏術:ChatGPT 與 TDD 結合心得

左右互搏術:ChatGPT 與 TDD 結合心得

當我閱讀《射鵰英雄傳》時,左右互搏術讓我聯想到測試驅動開發(Test-Driven Development,TDD)。這裡以編寫購物車功能為例,分享如何運用 TDD 來協助編寫程式碼

2023年11月27日
回顧我的 2023 開發者生涯:前端、後端、雲端、到 Web3

回顧我的 2023 開發者生涯:前端、後端、雲端、到 Web3

2023 年,我回到香港,從全棧工程師,行過死蔭幽谷,現在成爲系統架構師。能夠在 Web3 的世界自由自在地行走,十分感激當初的百般試煉。現在,就讓我回顧這一年我採用的前端後端雲端 Web3 方案,希望可以拋磚引玉

2023年10月13日
優雅地使用 Storybook 建立 React.js 組件

優雅地使用 Storybook 建立 React.js 組件

Storybook 最大的優點是它可以提供不同的頁面來顯示組件的不同狀態,讓我們在各種不同的情況下測試和評估組件。通過為不同狀態創建不同的頁面,我們可以輕鬆地測試組件。另外,Storybook 也可以輸出一個 Static Website,可以輕鬆分享給設計師和其他團隊成員,讓他們容易理解組件的外觀和行為。

2023年1月11日
一個 Full Stack Developer 的日常

一個 Full Stack Developer 的日常

我在今年 3 月初的時候,透過 Mind Map 整理自己作爲 Full Stack Developer 的日常,並且花了很多時間去改善日常工作流程。最近我有點時間,於是就把那份 Mind Map 寫成文章,希望可以繼續拋磚引玉。謝謝大家支持

2022年5月30日
如何透過 ZEIT 方便快捷地部署免費的 Node.js 項目?

如何透過 ZEIT 方便快捷地部署免費的 Node.js 項目?

ZEIT 平台提供了免費的網站空間平台給開發者,我們可以透過 ZEIT 平台來部署 Node.js, Express.js, Koa.js 等應用。如果你有寫過 Node.js 應用,又想找個免費空間部署這些應用的話,那麼 ZEIT 會是一個不錯的選擇。

2019年3月4日
超好用的全棧項目部署構建平台 - Netlify, ZEIT

超好用的全棧項目部署構建平台 - Netlify, ZEIT

如果你想要部署自己的前端項目的話,那麼 Netlify 提供了一個一站式的解決方法,讓你可以持續部署,以及自動開啟 HTTPS。如果你想要部署 Node.js 應用的話,那麼 ZEIT 會是另外一個解決方案。

2019年2月17日
GatsbyJS 入門(三):從零開始架構 React 靜態網站

GatsbyJS 入門(三):從零開始架構 React 靜態網站

GatsbyJS 提供了一個簡單易用的命令行工具,我們可以透過它來構建一個基本的 React 網站,並實時看到修改代碼所帶來的變化。

2019年1月16日
從博客系統回顧我的 2018 年前端生涯

從博客系統回顧我的 2018 年前端生涯

時光飛逝,我已從大學畢業成為前端工程師。回想這一年,我完成了三件事情:改版博客系統,讓不同用戶可以快速啟動項目,它是我第一個過百 Star 數的項目;翻譯並校對技術文章,學習了不少前端實用的技術;對博客系統框架的 GatsbyJS,ReactJS 技術研究。

2018年12月24日
GatsbyJS 入門(二):如何以 Starter 快速架構網站

GatsbyJS 入門(二):如何以 Starter 快速架構網站

上次我們提到 GatsbyJS,它是一個可以獲取任意數據,並生成靜態化網站的系統。這一次,就讓我們以 Calpa 的技術博客作為例子來開始架構網站吧

2018年11月23日
GatsbyJS 入門(一):打造開箱即用的現代化前端網站

GatsbyJS 入門(一):打造開箱即用的現代化前端網站

GatsbyJS 是一個現代化開發網站的網站產生系統,擁有完整、豐富且開源的生態圈。它利用 React + GraphQL 產生的多頁面應用,讓前端工程師,編輯,用戶都感到滿意。就讓我們一步步地探索這個系統吧。

2018年11月16日

前端工程師的日常修煉清單

學習如逆水行舟,不進則退。透過這個清單,我可以不斷學習前端知識,掌握更新的技能,天天進化。

2018年11月5日

深入淺出代碼優化﹣if/else

對於代碼裡面的 if else,我們可以使用邏輯判斷式,或更好的三元判斷式來優化代碼。除了可以降低維護項目的成本之外,還可以提升代碼可讀性。就讓我們從最簡單的 if else 例子開始吧。

2018年10月22日

Awesome Promise Methods

2018年10月15日
Hackoberfest 2018 ﹣ 面向所有人群的開源社區最大活動

Hackoberfest 2018 ﹣ 面向所有人群的開源社區最大活動

世界上不同的程序員,因開源活動而連接一起。這次 Hacktoberfest 活動除了可以拿到活動的限量衣服和貼紙之外,更可以認識到世界上不同的程序員。我看著不斷而來的討論和 PR,我找回了自己在編程上的熱情。如果你有興趣參與開源活動,但不知道如何入手的話,它會是一個不錯的起點。

2018年10月9日
網站性能調優開發工具:Lighthouse,Puppeteer 以及進階部分丨 Google 開發者大會 2018

網站性能調優開發工具:Lighthouse,Puppeteer 以及進階部分丨 Google 開發者大會 2018

這次 Google 開發者大會請來了 Lighthouse 的工程師 - Eric Bidelman,分享如何簡單地使用 Lighthouse, Puppeteer 來自動化我們日常的流程。它是一個開源的自動化工具,用於改進網絡應用質量。您只需要提供網址,它就測試該頁面,並生成頁面性能報告。你可以看看採取哪些措施來改進您的應用

2018年9月24日
GitGuardian:防止公開暴露敏感信息

GitGuardian:防止公開暴露敏感信息

2018年9月8日

Google Chrome 69 地址欄隱藏子域名後暴露的安全問題

定期更新軟件可以修復其自身的漏洞,即使是 Google Chrome,它的更新也是有安全問題的。在 Chrome 69 的版本裡面,`www` 被認定為 `trivial` 的子域名,因而隱藏了它之前的字眼。雖然可以提升一點用戶體驗,但卻帶來了另外一個風險點。

2018年9月7日
vtop ﹣ 一個你用了就會愛不釋手的圖形化進程管理工具

vtop ﹣ 一個你用了就會愛不釋手的圖形化進程管理工具

當我查看 CPU 和系統狀態時,我希望可以更加快捷,直觀地找出問題所在。vtop 則可以幫助我們節省分析過多數據,還提供 hjkl 一樣的 vim 鍵位,非常方便易用。如同 top 一樣,它可以顯示系統中各個進程中資源佔用狀況,並終止特定進程。

2018年8月25日
來杭工作兩個月後的生活與工作總結

來杭工作兩個月後的生活與工作總結

時光飛逝,轉眼已經離開香港兩個月。上有天堂,下有蘇杭。我也開始習慣這裡的生活,無論是生活節奏,還是工作習慣,都有所不同。這就是我這些天來最大的體會。

2018年8月19日
知乎無限 live 數據流網站

知乎無限 live 數據流網站

一直收聽知乎無限 live 的時候,我都會想:如何才能更有效率地收聽這些計畫內的 live 呢?於是我心血來潮,把無限 live 的資料拿了下來,然後做一個數據流的網站。這個網站展示和源碼已經放在 Github。這個項目可能適合那些喜歡看到很多數據的同學

2018年3月28日

Gatsbyjs async/await 更新報錯解決方法

當我在更新 gatsbyjs 本體和 `gatsbyjs-*` 插件後,就發現構建 JavaScript 代碼的時候失敗。解決問題的過程,需要多聯想關鍵字。但簡單來說,只要安裝正確的 babel 轉換插件,就可以解決這個問題。

2018年3月21日

美化 console.log 輸出

console.log() 這一個方法可以說是前端工程師最常用的調試方法之一。當我在研究音樂播放器 Aplayer 源碼的時候,發現其中有一行有趣的代碼,可以在 console 裏面輸出自帶顏色的圖案,故在此記錄一下。

2018年3月4日

又到了年度總結的季節 ﹣ 我的 2017 前端開發回顧

從最初的失望與後悔,到最後的興奮與感動,2017 年可以算是充滿挑戰與機遇的一年。雖然我依然是一個非科班學生,但是這沒有阻止我轉行成為前端工程師,反而成為向前邁進的動力之一。如果沒有這些經歷,我也不會發現自己對於編程的那份熱愛。在此,就讓我回顧一下這一年在自學編程轉行的經歷吧。在開始這篇文章之前,我先戴上頭盔,以防意外。

2017年12月31日
Node-prune:專門移除 node_modules 不必要檔案的輕量工具

Node-prune:專門移除 node_modules 不必要檔案的輕量工具

如果你有試過打包整個 Node 項目到服務器上,那麼你發現自己的項目體積比較大,其中一個原因是 `node_modules` 文件夾包含很多不必要的檔案。在使用 npm 安裝不同插件時,往往會包含很多不必要的文件夾,例如`example`, `doc`。要麼我們就是手動刪除它們,要麼我們就是自己寫一個自動腳本。而開發 Koa、Co、Express 的 TJ 大神則提供了一個簡單輕巧的工具。我們可以學習一下他的思路,以及使用這個工具。

2017年11月26日
你可能不知道的 JavaScript 代碼規範

你可能不知道的 JavaScript 代碼規範

良好的代碼規範,能夠提高代碼的可閱性,使得項目維護更友好。除了自己設定一個規範外,我們也可以借鑒一下現在流行的代碼規範,讓我們成長之後,再去看細節。

2017年11月8日
【圖多】《遠征成功﹣﹣一個香港人北上杭州豬場的前端面試之路》

【圖多】《遠征成功﹣﹣一個香港人北上杭州豬場的前端面試之路》

首先,我要感謝網易。作為一個香港人,能夠拿到杭州的面試機會,實屬機會難得。這次的兩輪技術面試,考察點廣泛而深入。雖然問題比較深入,但這讓我感覺對於技術要求比較高,這是一件好事,因為可以反映公司對於技術的重視。在大四的這一年裡,我會繼續努力,爭取時間學習一個。本文將會記錄我面試時遇過的問題,以及作為一個香港人在杭州遇到的困難。

2017年9月30日

異步操作見聞錄

異步操作是非常常見的操作,也是其中一題常見的前端工程師面試題目。在日常開發中,我們會和伺服器交互,或者是和用戶的行動作出反應,比如說監聽某些點擊事件。這個時候,其實我們是執行了異步操作,我們需要等待對方若干時間才能收到返回值,甚至是一個錯誤的值。因此,異步操作很容易產生一些誤會。這裡,我會說一下異步操作,及其返回的處理方法。

2017年9月27日

項目代碼調試:提問前要做的六個步驟

上天對於每個地球人都是公平的,每個人都一天只有 24 小時。為什麼有的人會停留不前,有的人卻會不斷有所成長?其中一個原因是當遇到問題時,他們解決問題的方法是非常不同的。同樣是遇到問題,與其伸手,等其他程序員幫助去解決問題,倒不如自己先嘗試各種方法,然後才問人家。我會在這篇文章簡單說一下在你提問之前,你可以做的六個步驟。

2017年7月24日
【翻譯】前端性能優化必備工具清單

【翻譯】前端性能優化必備工具清單

在網頁開發的世界裡,尤其是前端開發,我們會用很多時間尋找最好的設計,以及最好的內容。雖然這是沒有錯的,但是,我們會忘記去優化我們的網頁。這會讓用戶需要很久的時間,比如說,瀏覽器需要六秒到十秒以上才能完成整個渲染過程。在這篇文章,我會分享優化網頁的檢查清單。如果你覺得我有錯漏的地方,請在下面留言。這張清單會包含一些優化搜尋引擎排名 (SEO) 的技巧,以及減少網頁加載時間的最佳實踐。

2017年6月19日

香港開放數據平台 - 從入門到放棄

經過 2017 年香港開源年會之後,我都沒有去看香港的開放數據做得怎麼樣。今天香港正懸掛八號風球,正好是一個機會去了解一下。香港政府有一個開放數據平台,資料一線通,以多種檔案格式提供多個政府部門類別,機構的一些查詢資料,比如說天氣預報,中學教育統計資料。值得注意的是,這些檔案並不是 ODF,而是 xls, xml, csv, json, gif, txt, tif。

2017年6月12日

深入 ECMAScript 的數據類型

每一種編程語言都有數據結構,但他們各有不同之處。JavaScript 是一種動態語言,變數的類型不用提前聲明,你可以使用同一個變數來保存不同的數據類型。

2017年5月18日

React 組件生命週期 - 加載組件

初探 React 組件生命週期

2017年5月16日
HackUST 2017 後記

HackUST 2017 後記

2017年4月23日

14 種常見的 HTTP 狀態碼

當用戶向伺服器發出請求時,狀態碼能夠描述伺服器返回的結果。

2017年4月8日

localStorage vs sessionStorage

LocalStorage 和 SessionStorage 的對比

2017年1月20日