結構:
stockTagList: { [key]: { name: "Default" } }
其中 [key]代表是變數,若沒有[],則key就是字串key
內容:
stockTagList: {
abc: { name: "Default" },
xyz: { name: "Tech" },
test: { name: "Finance" }
}
結構:
stockTagList: { [key]: { name: "Default" } }
其中 [key]代表是變數,若沒有[],則key就是字串key
內容:
stockTagList: {
abc: { name: "Default" },
xyz: { name: "Tech" },
test: { name: "Finance" }
}
...(spread / rest)[...arr]
問題點:完全看不出在幹嘛
正解:展開 / 複製 / 轉陣列
Array.from(arrLike)
✔ 比較好懂
✔ 好搜尋
??(nullish coalescing)const name = input ?? "預設";
只在 null / undefined 才用預設
||0 || 100 // → 100 ❌
0 ?? 100 // → 0 ✅
坑點:0 / "" / false 不會觸發
|| 當預設值(舊寫法雷區)const val = input || 100;
問題:
0
""
false
全部會被吃掉
現代建議:
const val = input ?? 100;
&& 偷偷執行(超陰)isReady && doSomething();
意思是:
問題:可讀性很差(新手完全看不懂)
if (isReady) doSomething();
== vs ===(經典炸彈)0 == false // true 😱
"" == 0 // true 😱
永遠用:
===
除非你非常確定在幹嘛(通常不是)
[] == false(地獄級)[] == false // true 🤯
原因:JS 會偷偷轉型
解法:
不要用 ==
parseInt 沒給 radixparseInt("08")
某些舊環境會變 0(當八進位)
parseInt("08", 10)
map 沒 return(超常見 bug)arr.map(x => {
x * 2;
});
結果:
[undefined, undefined, undefined]
arr.map(x => x * 2);
或
arr.map(x => {
return x * 2;
});
forEach 不能 break(很多人中招)arr.forEach(x => {
if (x === 3) break; // ❌ 直接爆
});
for (const x of arr) {
if (x === 3) break;
}
this(最大魔王)const obj = {
name: "A",
fn: function () {
console.log(this.name);
}
};
還算正常
但:
const fn = obj.fn;
fn(); // undefined 😱
this 會變
少用 this,多用:
const name = "A";
function fn() {
console.log(name);
}
或 arrow function(但也有坑)
setTimeout + loopfor (var i = 0; i < 3; i++) {
setTimeout(() => console.log(i), 100);
}
輸出:
3 3 3 😱
letfor (let i = 0; i < 3; i++) {
setTimeout(() => console.log(i), 100);
}
if (arr) // ❌
永遠 true
if (arr.length > 0)
如果你是走你這條路(高效 + 原生):
優先選:
sudo nano /usr/local/bin/poweroff_safe.sh
內容:
#!/bin/bash
shutdown -h now
sudo chmod +x /usr/local/bin/poweroff_safe.sh
# 查看 GPIO 芯片
gpioinfo
cat /proc/bus/input/devices | grep gpio-keys
結果:
返回空
cat /proc/bus/input/devices | grep kbd
結果:
H: Handlers=kbd mouse0 event0
H: Handlers=kbd event1
H: Handlers=kbd event3
它們都是「鍵盤類 input device」,(可能是 USB keyboard / 虛擬 console / IR / 其他)
結論
GPIO26「很可能還沒被設成 gpio-keys」(或名稱不是 gpio-keys)
正常情況應該會看到:Name="gpio-keys"
這些通常是硬體/製造業產品開發流程中的階段縮寫,不同公司細節略有差異,但業界常見解釋如下:
目的:驗證概念與基本功能
特點:
多為手工製作或少量打樣
不一定符合最終外觀、尺寸或材料
主要測試電路、原理、可行性
風險:穩定度低,不適合對外或量產
- DRM 是 Linux 內核的一部分,負責處理顯示卡的顯示控制、圖形加速、顯示模式設定等任務。它提供了一個介面讓用戶空間的應用程式能夠直接與顯示硬體進行交互。DRM 允許使用硬體加速的圖形渲染,並將圖形渲染的結果呈現在顯示器上,這通常與 KMS 結合使用來管理顯示。
AI需求大爆發,解析下一個明星技術
輝達(NVIDIA)執行長黃仁勳曾透露,NVIDIA的下一代DGX AI伺服器將採用液冷(liquid-cooled)散熱技術,讓周邊供應商也開始受到關注,散熱廠商雙鴻科技就是其中之一。
雙鴻近日發布6月營運成績單,營收以16.92億元寫下歷史新高,較去年同期的8.5億元大增99.06%。雙鴻指出,主要受惠於水冷應用持續發酵,客戶需求持續增溫所致。
包括雙鴻在內,另一家散熱廠泰碩也曾在營業報告書中指出水冷是未來的趨勢。究竟水冷是什麼?跟液冷技術的差別是什麼?雙鴻的水冷技術跟液冷的差別是?未來潛力如何?
半導體產業簡介: 所謂微電子產業,就是生產 積體電路 ( 大陸稱為 集成電路 ) 的產業 。 積體電路 (Integrated Circuit ,簡稱 IC) 在電子學中是一種把電路(包括半導體裝置、元件)小型化的方式、並製造在半導體晶圓表面上。所以半導體只是製作「 ...