[譯]Laravel 介面最佳實作

首先,介面(Interface)是物件導向的基礎,在 Laravel 中,介面被用來定義規範 Contracts ,即規定類別 class 必須實作的方法。讓我們可以建立彈性且模組化的程式碼且容易維護和測試。

本文我們將探索如何在 Laravel 中使用介面實作,如何為 Service 定義介面,使用相依注入 DI(Dependency Injection) ,繫結 Service 到應用程式 Container

另外補充;``Factory` 工廠模式是一種建立物件的設計模式,主要用途除了生成測試資料還可以協助「相依注入」建立需要的物件。上面幾個概念將有助於我們實現更具可維護性,可讀性的程式碼。

繼續閱讀

變更 Google Cloud GKE Secrets 值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 取得 secret 列表
$ kubectl get secrets --all-namespaces

# base64 新資料
$ echo -n "<new-value>" | base64

# 更新 <key> 和使用 base64 值更新 <new-value>
$ kubectl patch secret <secret-name> -n <namespace> --type='json' -p='[{"op": "replace", "path": "/data/<key>", "value":"<new-value>"}]'

# 驗證資料是否更新
$ kubectl get secret <secret-name> -n <namespace> -o jsonpath='{.data.<key>}' | base64 --decode

# 重新部署
$ kubectl rollout restart deployment <deployment-name> -n <namespace>

Laravel Passport 和 OAuth2

Laravel Passport 提供了 Laravel 應用程式完整的 OAuth2 伺服器實作整合。Passport 是基於 League OAuth2 Server 套件建置。

如果您還不知道何謂 OAuth2,在繼續之前,請先熟悉 OAuth2 的一般術語和功能。

參考資源

繼續閱讀

Zero2Hero:部署 Laravel 10 到 GKE

本文僅針對 macOS 環境,全文目標為部署一個 Laravel 10 專案至 GKE。

  • 使用 GKE 運行 Laravel 應用程式
  • 使用 Google ManagedCertificate 自動管理 SSL 憑證
  • 使用 Cloudfare 作為反向代理並使用 SSL 完整或嚴格模式
繼續閱讀

Next.js 如何優化匯入函式庫

加速 40% 冷啟動和 28% 建置速度

在 Next.js 最新版本,官方優化了套件匯入,改善了本地開發的效能和正式環境冷啟動的速度。特別適用於使用大型的 Icon ,元件庫,或其他重複 Export 大量模組的相依套件。

繼續閱讀

[譯] Next.js 13 vs Remix 深入解析

原文連結
備註:本文有略微簡化原文內容並提供一些補充,目標提供一個較簡化流暢容易理解的版本。另外本文改寫了 tsx 的範例希望能更容易了解觀念。

提到建置網頁應用程式,React 已經成為主流好一陣子了(目前 2023),並且採用率持續在上升。常見搭配 React 開發網站的方式中,Next.js 是比較主流的選項之一。

自從去年他們發佈了 App Router 等重大更新以來也一直備受關注。新的路由架構採用了嵌套佈局(Nested Layouts)並緊密整合了 React Server ComponentSuspense

繼續閱讀

認識 for await

首先,參考以下的實務範例:

1
2
3
4
5
6
7
8
9
10
11
async function main() {
const stream = await opeanai.chat.completions.create({
model: 'gpt-4',
messages: [
{ role: 'user', content: '測試回答' },
],
});
for await(const part of stream) {
process.stdout.write(part.choices[0]?.delta?.content || '');
}
}

這是一段 OpenAI Node SDK 的範例,使用 GPT-4 搭配串流的方式。

繼續閱讀