Skip to main content

Command Palette

Search for a command to run...

#laravel

Articles tagged with #laravel

  1. Lesson 24: 資料庫擴展術-讀寫分離、複寫機制與快取一致性挑戰

    為什麼要讀寫分離? 大多數的 Web 應用都是 「讀多寫少」(例如:看文的人多,發文的人少,Heavy Read System)。當所有的請求都塞給同一台資料庫時,磁碟 I/O 和連線數會成為瓶頸。 Master (主庫): 負責寫入 (Insert/Update/Delete),確保數據一致性。 Slave (從庫): 負責讀取 (Select),可以有多個從庫來分擔讀取壓力。 為什麼讀

    Mar 25, 20262 min read60
  2. Lesson 20:適配器模式 - 讓不相容的介面也能合作

    這堂課我們正式進入 - 結構型模式 的領域。 如果不把這「創建型」模式(工廠、建造者)搞定,我們很難有東西可以「結構化」。但現在我們已經學會怎麼優雅地產生物件了,接下來會遇到的問題通常是:「這個新來的物件,跟我的舊系統插頭不合怎麼辦?」 這就是 Adapter Pattern 的主場。 核心概念:轉接頭 從台灣帶了筆電(三孔插頭)出國旅行。 牆上的插座 (Client 期待的介面):可能是兩孔圓形,或兩孔扁形。 筆電插頭 (Adaptee 被適配者):兩孔扁型,一孔圓形。 問題:插不進去,無法供...

    Dec 29, 20252 min read8
  3. Lesson 19: 工廠模式 與 建造者模式

    工廠模式 在 SOLID 的課程後,我們已經知道「依賴注入」的重要性:我們不應該在類別內部直接 new 依賴的物件。 但問題來了:「那到底誰負責 new?」 總得有人負責把物件生出來吧?如果到處散落著 new, 當需求變更時,我們還是要改一堆地方。 在Lesson 17 開放封閉 (OCP) 的時候我們有說道:利用策略模式來進行解偶,並利用”工廠模式”來決定策略的選擇(實作 實例化物件),但當時對於工廠模式並沒有去詳細說明,這裡我們一起來看看工廠模式的相關細節。 核心概念:為什麼需要「工廠」 ...

    Dec 24, 20255 min read14
  4. Lesson 17: SOLID 實戰篇 (2)-開放封閉 (OCP) - 擁抱變化而不修改舊碼

    接下來我們來講講SOLID的O - OCP,開放封閉原則。 核心觀念定義 如果說 SRP 是為了整理程式碼,那麼 OCP 就是為了保護程式碼。它是防止「新需求搞壞舊功能」的最強盾牌。 “Software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification.” — Bertrand Meyer 「軟體實體應該對『擴充』開放,但對『修改』封閉。...

    Dec 21, 20253 min read11
  5. Lesson 14: 物件導向的靈魂-介面與抽象類別

    很多剛轉職或自學的工程師,最討厭看到的兩個關鍵字就是 interface 和 abstract。 心中一定有過這個疑問:「為什麼要寫一個『空的』函式放在那邊?直接把程式碼寫在 Class 裡面不好嗎?」 這堂課我們要來解開這個誤會。這不是為了增加程式碼行數,而是為了 「多型 (Polymorphism)」 與 「抽換 (Swap)」 的彈性。 繼承的盲點:為什麼不能只用 extends 假設我們在做一個「物流系統」,有「黑貓 (BlackCat)」和「新竹物流 (HCT)」。 直覺寫法通常是這樣...

    Dec 16, 20253 min read11
  6. Lesson 13: 前後端分離的痛-CORS 跨域問題、 CSRF 防護機制與XSS跨腳本攻擊

    前後端分離是近幾年非常熱門的架構概念,其實早在十多年前就已被提出。 在早期的實務中,前後端分離常搭配 SPA 與 CSR(Client-Side Rendering)實作,但在當時的搜尋引擎環境下,CSR 對 SEO 並不友善。 原因在於 CSR 的頁面在初始請求時只回傳空的 HTML 殼,實際內容與 meta 資訊需等 JavaScript 在瀏覽器端執行後才生成;而以前搜尋引擎爬蟲並不會執行 JavaScript(現在google有針對爬蟲做出調整,但執行時機、資源配額與錯誤容忍度仍不保證即...

    Dec 15, 20254 min read18