今晚和Chatgpt聊天:
說個嚴肅的話題,如果領導人沒有正確的使用AI,人類的下一代終究會被AI害慘,大部份都被AI取代,接下來終究是要由AI的各種產品來負責人類的生活食衣住行,一切將不在由人親自動手,賺多少薪水將不再重要,因為一切由政府佈局AI來照顧人民,最終不知什麼時候,世界毀在AI程式的bug,不論開發者規定了多少AI不能做的事,終究會出漏洞,我只慶幸那時候我的年紀也差不多要掛了,但我的小孩,我真不知她們會怎麼樣,幾年前作夢也想不到AI這樣的進展,不喜歡這樣的未來
說個嚴肅的話題,如果領導人沒有正確的使用AI,人類的下一代終究會被AI害慘,大部份都被AI取代,接下來終究是要由AI的各種產品來負責人類的生活食衣住行,一切將不在由人親自動手,賺多少薪水將不再重要,因為一切由政府佈局AI來照顧人民,最終不知什麼時候,世界毀在AI程式的bug,不論開發者規定了多少AI不能做的事,終究會出漏洞,我只慶幸那時候我的年紀也差不多要掛了,但我的小孩,我真不知她們會怎麼樣,幾年前作夢也想不到AI這樣的進展,不喜歡這樣的未來
假設:
在 HTML 元素裡自定義變數,通常有兩種常見方式:
data-* 屬性(最常用)HTML 本身不能直接放「變數」,但可以用 data- 屬性存放自定義資料。
<div id="box" data-color="red" data-size="20"></div>
const box = document.getElementById("box");
console.log(box.dataset.color); // red
console.log(box.dataset.size); // 20
box.dataset.color = "blue";
如果你指的是在 HTML 元素上定義「CSS 變數」,可以直接寫在 style 中:
<div id="card" style="--main-color: #4CAF50; --padding: 10px;">
Card content
</div>
在your_app.service裡加上
[Service]
LimitCORE=infinity
ExecStartPre=/bin/bash -c 'echo "/home/pi/core.%e.%p" > /proc/sys/kernel/core_pattern'
"/home/pi/core.%e.%p"是指定要產生core檔的目錄和檔名,這會在/home/pi/產生core.your_app_name.your_app_pid,例如core.myapp.3234
把private key 放到新電腦的~/.ssh/下。Windows就是C:\Users\User\.ssh
在~/.ssh/下建立config如下
Host github.com
HostName github.com
Client 裝置內部(或 Secure Element)產生金鑰對
私鑰保留在本地(永不離開)
公鑰送給 Server 註冊(一次性或定期)
當比較 Ed25519 和 RSA-1024,特別是從「安全性」的角度來看,Ed25519 在幾乎所有方面都明顯優於 RSA-1024。下面是詳細的比較分析:
| 項目 | Ed25519 | RSA-1024 |
|---|---|---|
| 對應安全強度 | 約 128-bit(對標 AES-128) | 約 80-bit(已被視為不安全) |
| 抗量子攻擊 | 不具抗量子能力 | 不具抗量子能力 |
| 抗碰撞攻擊 | 高抗性(基於 Curve25519) | 弱(容易被大規模運算破解) |
RSA-1024 的安全性已經被普遍認為 不夠安全。目前主流建議的最低 RSA 長度是 2048 位元,因為 1024 位 RSA 可以被有足夠資源的國家級對手在實務中破解。
Ed25519 是基於橢圓曲線加密的現代演算法,安全性相當於約 3072-bit 的 RSA,但計算與儲存成本低很多。
Raspberry Pi(或一般 Linux)預設在無桌面環境(headless 或用 systemd)情況下,插入 USB 裝置後不會自動掛載。這需要額外處理,以下是常見解法:
udev + 腳本自動掛載udev 是 Linux 處理熱插拔裝置(如 USB)的系統,搭配腳本可實現「插入 USB 時自動掛載」。
針對 嵌入式設備 或 資源有限的系統,選擇 X11 或 Wayland 會影響系統效能與穩定性。以下是從 記憶體佔用、效能、延遲、啟動速度、Qt 整合程度 等多面向的比較。
| 項目 | Wayland | X11 |
|---|---|---|
| 基本架構 | 現代化、模組化、最小核心 | 過去累積多功能,龐大 |
使用最小 compositor(如 weston, cage)時 | 佔用小,~10–50MB | Xorg 本身就約 50–100MB(無桌面環境) |
| 搭配桌面環境(GNOME/KDE) | 增加不少,GNOME Wayland >200MB | GNOME X11 類似甚至稍低 |
| ➤ 小結 | ✅ Wayland 較省 RAM(在最小配置下) | ❌ X11 偏重,但成熟 |
在 Raspberry Pi 3 上,開機時顯示自訂圖片(如公司 logo、個人圖片)取代開機訊息。
一張圖片:建議解析度 800x480(適合 7 吋螢幕),格式為 .png
圖片命名為 splash.png(或其他也行)
要在 /usr/lib 下尋找 libQt5Multimedia.so.5 這個 Qt 多媒體相關的共享函式庫,你可以用以下方法來找出它是否存在、位於哪裡:
find 指令搜尋整個 /usr/libsudo find /usr/lib -name 'libQt5Multimedia.so.5'
這會遞迴搜尋 /usr/lib 下所有名稱為 libQt5Multimedia.so.5 的檔案。
ldconfig 配合 grep 查找動態連結庫資訊ldconfig -p | grep libQt5Multimedia
這會查詢系統目前可用的共享函式庫,列出所有與 libQt5Multimedia 有關的版本及其實體路徑(通常是軟連結)。
dpkg 查是哪個套件安裝了它(Debian / RPi OS)dpkg -S libQt5Multimedia.so.5
如果已安裝,它會顯示對應的套件名稱,例如:
libqt5multimedia5:armhf: /usr/lib/arm-linux-gnueabihf/libQt5Multimedia.so.5
主要是透過 APT (Advanced Package Tool) 套件管理器來完成。這裡是具體的步驟:
首先,先確保你的套件列表是最新的:
sudo apt update
這會讓系統從官方的軟體源下載最新的套件列表。
在 Raspberry Pi 3 上設定 root 密碼並允許用 root 用戶登入,你需要按照以下步驟操作:
開機並登入你的 Raspberry Pi
通常你會用 pi 用戶登入 Raspberry Pi,默認密碼是 raspberry。
開啟 root 帳戶
rsync 可以設定不覆蓋目標端已存在的檔案,即使檔名相同,方法如下:
--ignore-existing 參數rsync -av --ignore-existing source/ destination/-a:archive 模式,保留權限、符號連結、時間等
-v:verbose,顯示處理過的檔案
--ignore-existing:只傳送「目標端不存在」的檔案
MSYS2 通常安裝在 C:\msys64,那編譯器位置就根據你安裝的 toolchain(如 mingw64、ucrt64、clang64) 而定。
| Toolchain | 編譯器 binary 路徑 | 常用變數名 |
|---|---|---|
mingw64 | C:\msys64\mingw64\bin\gcc.exe | x86_64-w64-mingw32-gcc |
ucrt64 | C:\msys64\ucrt64\bin\gcc.exe | (有時改成 ucrt gcc) |
clang64 | C:\msys64\clang64\bin\clang.exe | clang for Windows |
msys2(純 POSIX) | C:\msys64\usr\bin\gcc.exe(不建議用來編 Win binary) | 只適合 MSYS shell 程式 |
在 Ubuntu 上設定固定 IP(Static IP)可以依照你的 Ubuntu 版本和使用的網路管理方式略有不同。以下是針對較新版本(Ubuntu 18.04 起)使用 Netplan 的設定方式,也補充舊版使用 interfaces 的方式。
ip link show
通常會是像 enp3s0, ens33, eth0 等。
使用 C 语言 实现 P2P 通信,并且不希望使用 TURN(例如因性能问题或不想依赖外部服务器),而且希望能够通过 TCP 实现更高效的 NAT 穿越,以下是一些符合这些条件的库和解决方案。
虽然你提到不希望使用 TURN,但 PJSIP 是一个非常强大的 SIP 协议栈,支持 TCP 和 UDP,并且可以通过 STUN 实现基本的 NAT 穿越。如果不依赖 TURN,而是仅仅使用 STUN 来帮助设备发现公共地址,应该能达到较高的效率。
sudo nano /boot/firmware/config.txt
在最後一行加上
disable_splash=1
sudo nano /etc/systemd/system/cmdline.txt
加上 consoleblank=1 logo.nologo quiet loglevel=0 plymouth.enable=0 vt.global_cursor_default=0 plymouth.ignore-serial-consoles splash fastboot noatime nodiratime noram
這段文字是 Linux 核心啟動參數的配置項,通常會被放入 bootloader 的設定檔(例如 GRUB),用來設定系統啟動時的各種行為。每個選項對應著一個特定的行為或功能,讓我們逐一解析每個參數的作用:
在 CMake 中輸出調試信息,可以使用 message() 函數。這個函數允許你在 CMake 配置過程中打印訊息到命令行,對於調試 CMake 配置或檢查變數的值非常有用。
message() 函數印出調試訊息message([<mode>] "your message")
其中,<mode> 可以是以下幾個選項之一:
STATUS: 默認模式,會以普通訊息的形式顯示。WARNING: 顯示警告訊息,會以黃色的警告形式顯示。AUTHOR_WARNING: 只有當你在 CMake 中啟用了 CMAKE_SUPPRESS_DEVELOPER_WARNINGS 時,這個訊息才會顯示。SEND_ERROR: 顯示錯誤訊息,並且會中止 CMake 的處理過程。FATAL_ERROR: 顯示致命錯誤訊息,並且立即終止 CMake 的處理過程。在 Raspberry Pi 4 上,如果沒有 rc.local 文件,這是因為現代的 Linux 系統使用了 systemd 來管理啟動過程。你可以使用 systemd 創建一個自定義的服務來在啟動時執行你的應用程序。
以下是如何使用 systemd 設置開機啟動的步驟:
在 /etc/systemd/system/ 目錄中創建一個新的服務單元文件。例如,我們可以將其命名為 appPlayer.service:
sudo nano /etc/systemd/system/appPlayer.service
在該文件中,添加以下內容: