Docker 更換掛載點:將 immich 資料搬遷到外接 SSD
docker 更換掛載點其實非常方便,倒不如說這部分就是 docker 會那麼好用的其中一個重要因素。一般來說,我們只要在 docker-compose.yml 中把 volumes 欄位設定一下,重新運行,一切就會像沒事人一樣,無痛搬家。 隨便拿一個簡單的 docker-compose 來看: 1234567891011services: glance: container_name: glance image: glanceapp/glance restart: unless-stopped volumes: - ./config:/app/config - ./assets:/app/assets ports: - 5678:8080 env_file: .env 我們可以看到在 volumes 跟 ports 裡面都有著 host:container 這種格式的寫法。在 volumes 中,這就表示你的容器會直接把宿主的 ./config 當成 /app/config 來取用。而在 ports 中,你的容...
在 Windows 系統上架設 NTP 伺服器
需求背景 此例中,我們要替電影院架設 TMS 系統,所以我們會有一台作為中控的 Windows 電腦,跟數台放在各個影廳的投影機伺服器。 一般來說,設備只要能上網,時間就能透過網際網路定時進行校準,一片蛋糕。但電影院的投影機伺服器為了做到內容保護,在 DCI 認證的規範之下,通常就只用封閉的內網來進行控制、傳輸與播放,於是我們就得迂迴地提供正確的時間給它們。 如果我們的中控電腦有兩張網卡,一張上網去讀時間,一張內網作為 NTP 伺服器,把時間資訊傳給投影機們如何? 挺不賴的,我們開搞。 安裝 NetTime 雖然 Windows 系統本身就自帶 NTP 的功能,但使用方式有點不直觀,本文選用簡單快速的第三方小工具 NetTime。 安裝開啟後,程式就可以開始從網路上抓取時間進行校準。此時我們進入設定: 把 Allow other computers to sync to this computer 的選項打開,化身為 server: 噠啦,就是那麼簡單。 防火牆設定 至此,Windows 電腦已經可以作為 client 從外網讀取正確時間,並同時作為 server 提供該時間...
讀書筆記:《致富心態》(金錢心理學)
沒有人真的是瘋子 指數基金的歷史不到五十年、避險基金才差不多二十五年,房屋貸款、信用卡、汽車貸款都是二戰後才出現。美國401退休金賬戶在 1978 開始運行,台灣勞退則是 1986——都只是初生之犢。所以我們如果做出奇怪的財務決策,那也是在所難免。(而因為入不敷出,台灣在 2005 年改成了新制。) 比如說,美國人購買樂透的金額,超過電影、遊戲、音樂、體育、書籍的消費總額。並且,樂透的消費群體,主要集中在收入最低的那群人。書上的數據是,最低收入家庭平均每年花四百美元在買樂透,但四成的美國人遇到緊急事故時卻湊不出四百美元,所以整體而言,花四百美元買樂透的人跟湊不出四百美元的人,是同一群人。 但他們真的是瘋子嗎?如果我們用他們的角度來看,也許也沒那麼奇怪,買樂透可能是他們唯一能擁抱美夢的時刻了。 運氣與風險 作者問諾貝爾經濟學獎得主 Robert Shiller 有什麼關於投資我們無法參透的道理,他認為是「運氣在投資成功的結果中所扮演的確切作用」。 鐵路巨擘康內留斯·范德比爾特(Cornelius Vanderbilt)成就斐然,但他幾乎每一筆商業交易都違反法律,不過成敗論英雄,我...
透過 GPIO 來控制 BrightSign 播放器
本文我們來實作可以進行互動的螢幕。怎麼個互動法?這次以兩種為例: 透過 RFID ,刷卡感應後,讓本來循環播放 A 影片的螢幕,改為播放 B 影片。 透過超聲波回聲判斷,人靠近(或手懸浮在感應區域)時,讓本來循環播放 A 影片的螢幕,改為播放 B 影片。 為了達到以上效果,我們這次需要的設備除了顯示器以外還需要: 數位看板播放器(Digital Signage Players),此處我們選用 BrightSign 的 HD225。 感應 RFID 並回傳訊號的傳感設備。此處我們不買現成產品,選用微控制器 ESP-WROOM-32 + RFID 傳感模塊 MFRC522 來土炮一個。 感應超聲波並回傳訊號的傳感設備。此處我們也不買現成產品,選用微控制器 NodeMCU + 超聲波傳感模塊 HCSR04 來土炮一個。 RFID 互動螢幕 我們的邏輯很簡單:RFID 模塊感應讀取輸入,把 ID 傳入 ESP-WROOM-32 判斷,如果是我們要的 ID,則輸出高電平訊號。當 HD225 讀到高電平訊號傳入,觸發後續影像內容。 首先來搞定 RFID 的部分。我們 ESP-WROO...
容器化實務操作,以 Taiko-Web 為例
本篇我們要把一個稍微陳舊的項目 Docker 化,方便沒有 Linux 伺服器的使用者們也可以快速運行服務。 此處我們選用的服務是 2011 就推出,但在 2020 以降才開始紅起來,但也因此被萬代版權方盯上,後來被全網封殺掉的 bui 製作的 Taiko Web。 但開源的力量是無比強大,我早已 fork 了一份備份出來,所以依然保有其原始碼。開源社群的迷人之處就在這裡,你說是吧。 該項目是一個大部分使用 JavaScript 刻出來的網頁版太鼓達人模擬器,其透過前端技術就可以讓用戶流暢地遊玩,十分方便,令人印象深刻。但今天我們不討論其服務內容,本篇我們將著重在將一個運行在 Linux 上的服務給容器化——以便用戶快速自行架設服務,或甚至跨平台運行——的過程。 各位可以一邊對照原作者的 manual setup,一邊看我們 dockerfile 的對應做法,方便理解。那我們開始咯。 安裝過程與重新打包 Installing the requirements 原始的安裝方式為: If you have not already done so, install the above...
自架推播通知伺服器:ntfy
原本我的 NetAlertX 跟 Uptime Kuma 使用的通知方式都是透過 gmail,用 SMTP 的方式,自己寄信給自己。但後來發現,收件箱因為這樣而充滿了一堆通知,十分雜亂也不方便管理。 所以此篇我們要來架設 ntfy,並將 NetAlertX 跟 Uptime Kuma 的通知方式設定成 ntfy,最終透過 ntfy 的 ios app,從 iPhone 接收通知。 安裝 ntfy 此處我們採用 docker compose 的安裝方式,yaml 如下: 123456789101112131415161718192021222324services: ntfy: image: binwiederhier/ntfy container_name: ntfy command: - serve environment: TZ: Asia/Taipei # optional: set desired timezone NTFY_BEHIND_PROXY: true NTFY_BASE_URL: http...
台語小筆記:留意輕聲,詞義差很多
台語作為一門標準的聲調語言(tone language),不同的聲調會有不同的意思表達。 上次回外婆家被催婚,其中就有一句: senn nn̄g-ê--ah gín-ná(生兩個啊gín仔) 我就說好啦,不要急,但為什麼是兩個?才知道此處的 nn̄g-ê--ah 跟 nn̄g-ê 的意思可差多了。前者是「兩三個」的意思,而後者是切確的「兩個」。 讀音上,前者 nn̄g-ê--ah 的 ê 讀輕聲,後者 nn̄g-ê 的 ê 則讀五聲。 所以如果有人跟你說: lâi lim nn̄g pue(來喝兩杯) 這裡如果遇到 nn̄g--pue(三聲輕聲)就是喊你來喝個兩三杯,幾杯不重要。但如果遇到的是 nn̄g-pue(三聲一聲),那就真的是指「兩杯」了。 其他輕聲改變詞義的例子 買無 bué-bô(買不到) bué--bô(買不買?) 驚死 kiann-sí(害怕死亡) kiann--sí(嚇死) 有影無 ū-iánn-bô(真的沒有) ū-iánn--bô(真的假的?)
智能家居 EP11:用反向代理取代端口轉發(NPM+DuckDNS)
我們在 智能家居 EP9:利用DDNS、通訊埠轉發進行遠端控制 已經透過 Port Forwarding 的方法實現外網訪問,可以成功在外面控制家中設備。 但實際上,在網路安全的領域中,端口轉發意味著 port 的暴露,其實大家都看得到你有哪些 port 是開的。例如,我用外網透過 nmap 來掃描我家可以看到: 開放的 port 那是一個清清楚楚明明白白。 對此,我們使用 Nginx Proxy Manager (下稱 NPM)來替我們進行反向代理,減少我們直接開 port 的需求。假設我架設了五個服務,本來我要分別開五個 port 來訪問。現在透過 NPM,我可以只開 80 跟 443 出來給 NPM,往後需要訪問什麼服務,通通都去問 NPM,讓 NPM 統一替我們處理請求。這就是所謂的代理(proxy)。 在此架構中,NPM 可以運行在與 HA 同網路的另一個設備中、與 HA 同一個設備中的不同容器(如 docker)中、或甚至以 add-on 的形式裝在 HA 身上(該附加元件在這裡)。而我此處是運行在與 HA 同網路的另一個設備中,可以參考一下我目前的拓撲: 編輯...
讀書筆記:《為何三歲開始說謊?》
皮亞傑之前 在皮亞傑(大致在1960)之前,人們認為孩童的認知能力跟大人是一樣的,只是缺乏經驗跟知識。 皮亞傑顛覆大家的看法,表示孩童不是「小大人」,其實認知能力是要漸進發展並建立的。愛因斯坦曾說,皮亞傑的發現跟理論是「天才之作」。 一歲前就已擁有數感、物理常識、簡單的邏輯 皮亞傑發現九個月大的孩子才會動手排除遮擋物,找到後方的玩具,所以認為物體恆存是九個月大的里程碑。但後續透過「凝視時間」的觀察,其實五個月大的孩子,就會對違反物體恆存的狀況感到好奇。 同樣是五個月大,孩子至少具備 1+1 或 2-1 的概念。因為當我們用屏風遮擋一個物品,再放進一個物品,當我們秀出來居然還是只有一個物品,孩子會投以較長的凝視時間。兩個物品遮住,拿出一個後,秀出來還是兩個,一樣會得到較長的凝視時間。 物體違反地心引力往上飛時、兩物隔空互動時也會。 甚至,八個月大的孩子有機率的概念。一白四紅的獎池,我們抽出四白一紅給他看,你會得到凝視。 人腦是多功能瑞士刀,不是通用型處理器 這個概念我們在《我們真的有自由意志嗎》就討論過,我們只能學會我們能夠學會的能力。而通常,某個能力就是某個大腦模塊專門負責。如...
抉擇的心法
讀書會也成立兩年多了。綜合各家智慧,我們統整了此《抉擇的心法》。供猶豫不決中的你一個參考。 做或不做問題 舉例來說,如果你為「這個活動我該不該報名參加」而煩惱。那根據我們的心法,此時是個「做或不做問題」,建議選做。 根據蔡加尼克效應,相較於已完成的事情,人們更容易惦記著「未完成」的那些。因此,當你選擇「不做」,你可能會一直掛念「如果當初做了,會怎麼樣?」。 人是很「犯賤」的,我們往往最忘不掉未竟之事。(這也是為什麼蔡加尼克效應很常被用來解釋為何淺嘗而止的「初戀」總是最美好最難忘的) **《臨終前最後悔的五件事》**書中,在安寧病房工作多年的作者 Bronnie Ware 記錄了許多臨終老人們的心聲,發現他們的後悔大多來自「沒做到的事情」,而非「做了的事」。這說明,未曾嘗試的遺憾,比做錯了的懊悔更深刻。 另外,根據康奈爾大學於1995年發表的研究論文《The Experience of Regret: What, When, and Why》提到:「短期內人們更容易後悔行動(commission errors),但長期內更後悔不行動(omission errors)。」 其原文為...
