Hi 我劉昕啦:部落格導覽
放養(?)本站邁入了第三個年頭,總算明白了前輩們口中的,經營部落格的好處了——你永遠都會被過去的自己幫到。謝啦,以前的劉昕。
過去的一年是一個,把從前的一個個的豪情壯志,一個個地輕輕放下的一年。每放下一個,都會揪心很久。但是看到那些包袱被放在地上以後的樣子,又會覺得它們十分可愛。講真的,你們一定看不懂這份心情:一邊覺得揪心,一邊覺得可愛。
也許我是覺得,自以為知鴻鵠志的燕雀很可愛吧。
開始不熱衷於裝逼以後,發現自己話都不會講了。在體認到語言能力不是被演化來自我吹噓的之後,明白了過去總是被迫單打獨鬥的我,也只是咎由自取。各位,我目前進行的任何 project,不管是音樂、讀書會、知識頻道、笑話頻道、遊戲頻道,其實都很希望也許同樣感興趣的你來一起加入。請放心且隨意地聯絡我吧。
話說回來,我並沒有忘了這是一篇部落格導覽。我只是想表達,我期許我接下來的文字,可以多一點真誠、少一點浮華,少一些碰撞、多一些愛。
好的,這裡是劉昕的個人部落格,由 Hexo 渲染而成,並託管於 GitHub Pages。至於劉昕是誰請查看關於我,還請多多指教!
2025 於地上很多豪情壯志以至於快沒地方立足的 Shu ...
讀書筆記:《當下的力量》
你不等於你的思維
這是本書中的一個核心概念。
怎麼會這樣說呢?難道不是「我思故我在」嗎?人類最珍貴的其中一項特質不是因為我們懂得「思考」嗎?
誤區就在於,大腦只是一個工具、「思維」只是一項能力,這個工具跟能力是被演化來處理特定生存任務的。在任務完成後,理論上思考就該停止了。但事實是我們很難停下來對吧?作者表示,那是因為我們對思考上癮了——我們沒辦法選擇停止。
我們不願意停止思維,因為思維關注過去的你,時時清點你稍早前做的每一件事,根據前後文,汲汲營營地安排接下來的動作,計劃未來的待辦事項。如果不經過思維,我們甚至不知道自己是誰,所以我們不敢停止思考,我們認同了我們的思維。
難道不就是我過去的所作所為定義了我嗎?嘿,不是。時間、過去、未來都只存在於你的思維,思維需要過去來獲得自我認同、需要未來來創造動機。但我們總是感覺到過去真真實實地、明擺著在那邊,對吧?那就是因為我們超級認同自己的思維,並認為我們的思維等於我們。
然而,你不等於你的思維。
對思考上癮的「小我」
作者將這個強迫性一直在思考的思維傢伙稱作小我(Ego)。
在《我們真的有自由意志嗎?》中,我們知道大腦是模塊化、平行且分散式 ...
一些 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 ...
讀書筆記:《為何三歲開始說謊?》
皮亞傑之前
在皮亞傑(大致在1960)之前,人們認為孩童的認知能力跟大人是一樣的,只是缺乏經驗跟知識。
皮亞傑顛覆大家的看法,表示孩童不是「小大人」,其實認知能力是要漸進發展並建立的。愛因斯坦曾說,皮亞傑的發現跟理論是「天才之作」。
一歲前就已擁有數感、物理常識、簡單的邏輯
皮亞傑發現九個月大的孩子才會動手排除遮擋物,找到後方的玩具,所以認為物體恆存是九個月大的里程碑。但後續透過「凝視時間」的觀察,其實五個月大的孩子,就會對違反物體恆存的狀況感到好奇。
同樣是五個月大,孩子至少具備 1+1 或 2-1 的概念。因為當我們用屏風遮擋一個物品,再放進一個物品,當我們秀出來居然還是只有一個物品,孩子會投以較長的凝視時間。兩個物品遮住,拿出一個後,秀出來還是兩個,一樣會得到較長的凝視時間。
物體違反地心引力往上飛時、兩物隔空互動時也會。
甚至,八個月大的孩子有機率的概念。一白四紅的獎池,我們抽出四白一紅給他看,你會得到凝視。
人腦是多功能瑞士刀,不是通用型處理器
這個概念我們在《我們真的有自由意志嗎》就討論過,我們只能學會我們能夠學會的能力。而通常,某個能力就是某個大腦模塊專門負責。如果大腦 ...
抉擇的心法
讀書會也成立兩年多了。綜合各家智慧,我們統整了此《抉擇的心法》。供猶豫不決中的你一個參考。
做或不做問題
舉例來說,如果你為「這個活動我該不該報名參加」而煩惱。那根據我們的心法,此時是個「做或不做問題」,建議選做。
根據蔡加尼克效應,相較於已完成的事情,人們更容易惦記著「未完成」的那些。因此,當你選擇「不做」,你可能會一直掛念「如果當初做了,會怎麼樣?」。
人是很「犯賤」的,我們往往最忘不掉未竟之事。(這也是為什麼蔡加尼克效應很常被用來解釋為何淺嘗而止的「初戀」總是最美好最難忘的)
**《臨終前最後悔的五件事》**書中,在安寧病房工作多年的作者 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()就會回傳大於零的訊息,可以利用這點拿來檢查是否有輸入。
硬體中斷
相較於 Arduino 只有兩個腳位有支援硬體中斷,ESP32 ...
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毫秒),我們 ...