Hi 我劉昕啦:部落格導覽
放養(?)本站邁入了第三個年頭,總算明白了前輩們口中的,經營部落格的好處了——你永遠都會被過去的自己幫到。謝啦,以前的劉昕。
過去的一年是一個,把從前的一個個的豪情壯志,一個個地輕輕放下的一年。每放下一個,都會揪心很久。但是看到那些包袱被放在地上以後的樣子,又會覺得它們十分可愛。講真的,你們一定看不懂這份心情:一邊覺得揪心,一邊覺得可愛。
也許我是覺得,自以為知鴻鵠志的燕雀很可愛吧。
開始不熱衷於裝逼以後,發現自己話都不會講了。在體認到語言能力不是被演化來自我吹噓的之後,明白了過去總是被迫單打獨鬥的我,也只是咎由自取。各位,我目前進行的任何 project,不管是音樂、讀書會、知識頻道、笑話頻道、遊戲頻道,其實都很希望也許同樣感興趣的你來一起加入。請放心且隨意地聯絡我吧。
話說回來,我並沒有忘了這是一篇部落格導覽。我只是想表達,我期許我接下來的文字,可以多一點真誠、少一點浮華,少一些碰撞、多一些愛。
好的,這裡是劉昕的個人部落格,由 Hexo 渲染而成,並託管於 GitHub Pages。至於劉昕是誰請查看關於我,還請多多指教!
2025 於地上很多豪情壯志以至於快沒地方立足的 Shu ...
一些 Hexo 的疑難雜症
字體好醜!怎麼換?
身為一個襯線體控,還是比較想換上思源宋體,該怎麼做?此處以主題 Butterfly 為例。
打開 theme/butterfly 裡的 _config.yml,修改:
123456789101112# Inject# Insert the code to head (before '</head>' tag) and the bottom (before '</body>' tag)# 插入代码到头部 </head> 之前 和 底部 </body> 之前inject: head: # - <link rel="stylesheet" href="/xxx.css"> - <link rel="preconnect" href="https://fonts.googleapis.com"> - <link rel="preconnect ...
抉擇的心法
讀書會也成立兩年多了。綜合各家智慧,我們統整了此《抉擇的心法》。供猶豫不決中的你一個參考。
做或不做問題
舉例來說,如果你為「這個活動我該不該報名參加」而煩惱。那根據我們的心法,此時是個「做或不做問題」,建議選做。
根據蔡加尼克效應,相較於已完成的事情,人們更容易惦記著「未完成」的那些。因此,當你選擇「不做」,你可能會一直掛念「如果當初做了,會怎麼樣?」。
人是很「犯賤」的,我們往往最忘不掉未竟之事。(這也是為什麼蔡加尼克效應很常被用來解釋為何淺嘗而止的「初戀」總是最美好最難忘的)
**《臨終前最後悔的五件事》**書中,在安寧病房工作多年的作者 Bronnie Ware 記錄了許多臨終老人們的心聲,發現他們的後悔大多來自「沒做到的事情」,而非「做了的事」。這說明,未曾嘗試的遺憾,比做錯了的懊悔更深刻。
另外,根據康奈爾大學於1995年發表的研究論文《The Experience of Regret: What, When, and Why》提到:「短期內人們更容易後悔行動(commission errors),但長期內更後悔不行動(omission errors)。」
其原文為:
...
讀書筆記:《知識的錯覺》
超憶症難道不是超能力嗎?
超憶症,擁有超常的情節記憶(我們在《最高學以致用法》討論過記憶的分類),可以記得一生中經歷過的所有事情。聽起來很屌,很像超能力,不是嗎?超強的記憶力,難道不具備十足的演化優勢嗎?
然而就結果論而言,並不是。(否則記憶力較差的群體應當早就被天擇掉了)
書中提到,如果這個世界鼓勵投機,那我們將會掌握機率與統計、如果鼓勵演繹推理,那我們將各個都是福爾摩斯。但事實是,我們在這兩方面都是一團糟。相反地,我們演化至今的世界由因果邏輯主導,這也是為什麼,人很擅長於因果分析。
後見之明告訴我們,人腦在這個世界必須具備的能力,相比「機率統計」、「演繹推理」、「強大的記憶力」,可能更偏向「因果分析」。
因果推理:不是任何刺激都能形成制約
巴甫洛夫的狗最後對鈴聲(中性刺激)產生了制約,巴甫洛夫認為此處的鈴聲可以替換成任意刺激,都會有效。(即,他認為狗勾沒有去思考兩者之間關係)
但後來針對老鼠的進一步實驗發現,閃光與電擊、噪音與電擊、糖水與胃痛可以形成制約,但閃光與胃痛、糖水與電擊,就沒辦法。(即,老鼠是有在進行簡易的因果推理的)
預測性推理/診斷式推理
預測性推理就是「由因推果」 ...
利用 EasyButton 跟 OneButton 來防彈跳、判斷雙擊、長按
一句話解釋按鍵的彈跳:
你來不及放開按鍵之前,程式已經來問第二次了,所以程式不知道你是按了第二次,還是你單純還沒放開。
如果你懶得管那麼多,不妨直接在 loop 裡面加入 delay(100),避開明顯的彈跳問題。
如果你想嚴謹一點,那就引用一些現成的庫來用吧。
(以下用例中,我的 MCU 是 ESP32)
EasyButton
如果你什麼都不要,就只要防彈跳,可以考慮 EasyButton 這個 library。
使用方法很簡單,如下:
12345678910111213141516171819202122232425#include <ezButton.h>const int led = 19;ezButton btn(23);void setup(){ pinMode(led, OUTPUT);//pinMode(btn, INPUT_PULLUP); //ezButton已經幫你預設上拉了 btn.setDebounceTime(50); //如果你手速夠快(50ms內點兩下),你依然可以讓彈跳發生 }void loop() ...
ESP32 小筆記
電源供應
可以直接從 VIN 供電。
但如果你接上 USB,VIN 就變成 5V 的輸出。
Touch(內建電容觸控)
Touch 1 通常沒有 lay 出來。(因為共用了 GPIO0,很難正常作動)
Touch 2 共用了 GPIO2 的內建 LED ,注意別一起用。
ADC
ADC2 因為 wifi 驅動用了這隻腳,所以跟wifi不能同時使用
UART
通常只看得到 U0 跟 U2,因為 U1 沒有 lay 出來。
I2C
傳輸速度 I2C 比 UART 更快,但兩條線一條是數據、一條是時脈,所以只能是半雙工。相對的,UART 可以全雙工。
但 I2C 可以一對多。所以每個設備要有 I2C address。
while(!Serial)
若在 setup 裡面寫while(!Serial);,可以在你打開終端機之前,code 卡在這行等你。
Seiral.available()
當終端機有內容被輸入(按下enter後),Seiral.available()就會回傳大於零的訊息,可以利用這點拿來檢查是否有輸入。
Linux 系統架設 MQTT 伺服器
本篇利用 Mosquitto 設置一個 MQTT 伺服器,伺服器的 OS 為 Ubuntu 24.04.1 LTS。
在開始之前,MQTT 預設使用的 Port 號是 1883,防火牆的傳出傳入規則務必要設定一下,記得打開。
安裝 Mosquitto
此例為 Linux 環境,我們利用 apt 進行 Mosquitto 套件的安裝:
1sudo apt install mosquitto mosquitto-clients -y
其中 mosquitto 套件是主要的 Mosquitto 伺服器,而 mosquitto-clients 包含了指令工具如 mosquitto_sub, mosquitto_pub。
而指令開頭的 sudo 的意思是:
Super Idol 的笑容,都沒你的甜。八月正午的陽光,都沒你耀眼。
我開玩笑的,其實是 superuser do。
接著我們透過 configuration 設定一下我們 Mosquitto 的規則。我們在 /etc/mosquitto/conf.d/ 中,加入一個設定檔:
1sudo nano /etc/mosquitto/conf ...
OrCAD Capture 利用電晶體實作 Not Gate
平常我們都把邏輯閘當做最小單位在把玩,但邏輯閘內部是怎麼實踐的呢?我們用電晶體來實作一個反向器看看,走起!(基礎操作請見使用 OrCAD Capture 設計電路)
本次的主角是這顆 Q2N2222,一顆 NPN 電晶體:
首先搜尋「Q2N2222」找到我們的電晶體:
組織一下電路:
我們搜尋「VPulse」來放置一個方波脈衝(簡單模擬一下數位訊號):
方波脈衝信號的參數分別代表什麼?
V1:基準電壓
V2:脈衝電壓
TD:Time Delay,就是發出第一個 V2 之前的等待時間。
TR:Time Rise,就是 V1 上升到 V2 之間的時間差,值越小越陡峭。記得一定要設定,為 0 的話會報錯。
TF:Time Fall,同理,就是 V1 回到 V2 之間的時間差,一樣記得要設定。
PW:Pulse Width,每個 V2 的持續時間。
PER:Period,一個 V1 加上一個 V2 的持續時間。
理解之後,我們設置參數如下:
如此一來應該就看得懂了,這軟體真的也是很省字(汗顏)。
再來我們提供一個直流輸入源,設置為 3V:
根據我們的脈衝週期(100毫秒),我們 ...
讀書筆記:《人生順利的簡單法則》
拖延、忙碌反而生產力高?
美國芝加哥大學和中國上海交通大學的研究顯示:即使繁忙程度被迫超過可負荷范圍,人還是會因為繁忙而感到幸福。許多人都相信悠閒會使人幸福,但事實反而相反。
令人遺憾的是,我找不到這篇文獻的出處,書中也沒有附註(事實上,全書沒有半個註腳)。
那拖延呢?這裡引用的是史丹佛大學哲學系教授 John Perry 的招式:待辦事項裡如果有個最棘手的傢伙,那麼其他事項就會顯得誘人。我們利用這點,拖延大魔王,讓其他小兵顯得可愛,我們就會一直去執行那些簡單的任務。
總地來說,其實結論是:忙碌反而會幸福、拖延反而有效率,才對。(「拖延、忙碌反而生產力高?」是書中原本的章節名稱)
姿勢的力量
作者在「想提升效率,從改變姿勢開始」章節中引用了 Cuddy 著名的「高權力姿勢」(Power Pose)。其研究指出,採取象徵自信的姿勢,會使得睪固酮濃度上升、皮質醇的濃度下降。這意味著…… 更多的自信與較低的壓力。而這樣的順序,有悖於我們的直覺——難道不是先「感到」自信,才進而「表現」得自信嗎?
類似這樣先後順序的討論,濫觴可能是「臉部回饋假說」(Facial Feedback Hypoth ...
將米家藍牙溫濕度計 2 刷成 Zigbee
本文將引導大家「免接線」將「米家藍牙溫濕度計 2」(型號:LYWSD03MMC)刷成 Zigbee,方便後續透過 Zigbee2MQTT 接入 Home Assistant。
小米官方在韌體更新到 2.1.1_0159 後(2024 後出廠的基本上都是這個版本號),資訊傳輸多了加密,讓 OTA 刷法一度失效了一兩年之久,如今重出江湖!
事不宜遲,開刷。
設備先接入米家app
首先先按照小米官方指引,將你的溫度計設定妥當。
此步驟為了後續可以得到溫度計的 ID、Token、Key。
取得設備Token
你可以用任何你會的方法取得 ID、Token、Key。
如果你沒有頭緒,可以使用:https://github.com/PiotrMachowski/Xiaomi-cloud-tokens-extractor
以我為例,我用 mac 找到我米家帳號下面設備們的資訊:
刷成過渡韌體
使用 Telink Flasher for Mi Thermostat 網頁工具(https://pvvx.github.io/ATC_MiThermometer/TelinkMiFlasher.html),把 ...