在使用 Express 搭配 view engine 時,為了避免每次需要渲染 view,導致效能過低,因此 express 內有快取機制,當 view 已經被渲染過,且在快取中有快取,就會直接使用快取中的結果。 這時候可以關閉 express 的 view cache 功能,這樣就能在編輯 view file 後,直接 reload 就能看到結果,不需要重開 server。 關閉 view 的方式很簡單,只要透過 app.disable 關閉 view cache 的設定即可。 "use strict"; const express = require('express'); const app = express();
4/17/2020:::warning 此篇文章討論的 Docker 為 Linux Container,有些內容可能不適用於 Windows Container 技術。 ::: 為什麼 Docker for Mac 會遇到硬碟空間不足的問題? Docker 的技術是基於 Linux Namespaces 與 cgroup 等功能做邏輯隔離,並在隔離的環境中透過同一個 Linux Kernel 執行程式,因此要執行 Docker 的首要條件就是需要有執行 Linux distribution 的機器。 而 Docker 公司為了普及 Docker 技術,推出了在各個主流開發平台上 (Windows, macOS) 透過運行 Linux 虛擬機的方式來滿足跨平台執行 Docker 的需求。 Docker for Mac 的原理是在 macOS 上使用 xhyve 執行虛擬機 ( xhyve 是透過 macOS 原生的虛擬化技術 Hypervisor.framework 執行虛擬機的軟體)。而虛擬機的作業系統是使用 Docker 推出的 Linux Kit 產生的作業系統。
2/14/2020Context 在 Kubernetes 中刪除 Namespae 的操作通常在 5 分鐘內會完成 (如果 namespace 中沒有太多 resources 的話),但有時候會發生超過 1 小時 Namespace 的狀態還在 Terminating 的狀態(如下圖),查看 GitHub 中相關的 Issue [^k8s-issue-1],發現原因可能就是 Kubernetes 刪除 Namespace 的流程出了問題,導致沒有正確執行 finalizer。 這時可以使用 kubectl get namespaces <NAMESPACE> -o yaml 查看該 namespace 中的 finalizers 是否有設定東西,通常都是這個引起 namespace 無法正常刪除。 Solution 遇到這件事,可以手動修改 finalizers,將 finalizers 刪除,但刪除 finalizers 沒辦法透過 kubectl edit 指令完成,也無法透過 kubectl apply apply 新的 resource configurations。 根據 issue 內的說明,可以透過 kubernetes 的 Update finalize of a Namespace API 修改 finalizers 的值。
2/14/2020本文主要介紹在使用多個網路介面時,一張路由表可能無法做到複雜的封包路由功能,透過多重路由表搭配路由規則、iptables,讓封包使用不同的路由表,使用不同的介面轉送。 [TOC] Context 圖1:環境拓樸 如上圖,web server上有兩個網路介面,eth0連接內部私人網路;eth1直接連接 internet 提供對外存取服務。因為公司 IT 政策的關係,web server 自身產生的任何流量(系統更新、套件下載等...)都必須經過內部網路的邊界伺服器( Edge Router ),而 eth1 則是作為專線,用來服務由外對內的網頁伺服器流量。以此做到讓服務網路與管理網路分離。
2/14/2020or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up