10種有用的AI工具 沒事收藏起來方便使用

 以下是目前最常見的 AI 生產力工具介紹,以及適合的使用情境:

工具 主要用途 適合對象
Gemini Google AI 助理 Google 生態系使用者
Suno AI 音樂創作 音樂創作者、自媒體
Gamma AI 簡報製作 商務人士、學生
Notion 筆記與知識管理 個人與團隊
Deevid AI 影片生成 行銷、自媒體
ChatGPT 通用 AI 助理 幾乎所有人
NotebookLM AI 研究助手 學生、研究人員
Perplexity AI 搜尋引擎 資訊蒐集者
Canva 設計與內容製作 設計新手到專業人士
Napkin AI 圖解生成 顧問、講師、產品經理

[Javascript] 物件的存取

結構:
stockTagList: { [key]: { name: "Default" } }

其中 [key]代表是變數,若沒有[],則key就是字串key

內容:

stockTagList: {

        abc: { name: "Default" },

        xyz: { name: "Tech" },

        test: { name: "Finance" }

    }

[Javascript] 超反人類語法避坑清單(實用版)

...(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();

 意思是:

  • 如果 isReady = true → 執行

 問題:可讀性很差(新手完全看不懂)

建議

if (isReady) doSomething();

== vs ===(經典炸彈)

0 == false // true 😱
"" == 0 // true 😱

永遠用:

===

除非你非常確定在幹嘛(通常不是)


[] == false(地獄級)

[] == false // true 🤯

 原因:JS 會偷偷轉型

 解法:

不要用 ==


parseInt 沒給 radix

parseInt("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 + loop

for (var i = 0; i < 3; i++) {
setTimeout(() => console.log(i), 100);
}

 輸出:

3 3 3 😱

 用 let

for (let i = 0; i < 3; i++) {
setTimeout(() => console.log(i), 100);
}

空陣列判斷

if (arr) // ❌

 永遠 true

 正確:

if (arr.length > 0)

核心原則

如果你是走你這條路(高效 + 原生):

優先選:

  • 可讀性高
  • 好搜尋
  • 行為明確

[Linux] 一般使用者權限的程式執行關機的方法

🔹 建立腳本

sudo nano /usr/local/bin/poweroff_safe.sh

內容:

#!/bin/bash
shutdown -h now
sudo chmod +x /usr/local/bin/poweroff_safe.sh

[Linux] RPI的GPIO控制

# 查看 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"

最快確認方法

解釋 LS ES PS MP 產品階段

這些通常是硬體/製造業產品開發流程中的階段縮寫,不同公司細節略有差異,但業界常見解釋如下:


LS – Lab Sample(實驗室樣品)

  • 目的:驗證概念與基本功能

  • 特點

    • 多為手工製作或少量打樣

    • 不一定符合最終外觀、尺寸或材料

    • 主要測試電路、原理、可行性

  • 風險:穩定度低,不適合對外或量產


cpu gpu eglfs vc4 framebuffer drm kms 和影像播放的流程

DRM (Direct Rendering Manager)

  • DRM 是 Linux 內核的一部分,負責處理顯示卡的顯示控制、圖形加速、顯示模式設定等任務。它提供了一個介面讓用戶空間的應用程式能夠直接與顯示硬體進行交互。DRM 允許使用硬體加速的圖形渲染,並將圖形渲染的結果呈現在顯示器上,這通常與 KMS 結合使用來管理顯示。

半導體產業簡介

半導體產業簡介: 所謂微電子產業,就是生產 積體電路 ( 大陸稱為 集成電路 ) 的產業 。 積體電路 (Integrated Circuit ,簡稱 IC) 在電子學中是一種把電路(包括半導體裝置、元件)小型化的方式、並製造在半導體晶圓表面上。所以半導體只是製作「 ...