2025年3月27日 星期四

p2p on TCP

使用 C 语言 实现 P2P 通信,并且不希望使用 TURN(例如因性能问题或不想依赖外部服务器),而且希望能够通过 TCP 实现更高效的 NAT 穿越,以下是一些符合这些条件的库和解决方案。

1. PJSIP (使用 STUN 但不依赖 TURN)

虽然你提到不希望使用 TURN,但 PJSIP 是一个非常强大的 SIP 协议栈,支持 TCPUDP,并且可以通过 STUN 实现基本的 NAT 穿越。如果不依赖 TURN,而是仅仅使用 STUN 来帮助设备发现公共地址,应该能达到较高的效率。

2025年3月17日 星期一

修改 rpi 開機啟動顯示過程

禁用彩虹屏

sudo nano /boot/firmware/config.txt

在最後一行加上
disable_splash=1

關閉開機顯訊息及logo

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),用來設定系統啟動時的各種行為。每個選項對應著一個特定的行為或功能,讓我們逐一解析每個參數的作用:

2025年3月9日 星期日

在cmake中印debug msg

在 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 的處理過程。

2025年3月5日 星期三

在RPI 4 上設定開機啟動你的程式

在 Raspberry Pi 4 上,如果沒有 rc.local 文件,這是因為現代的 Linux 系統使用了 systemd 來管理啟動過程。你可以使用 systemd 創建一個自定義的服務來在啟動時執行你的應用程序。

以下是如何使用 systemd 設置開機啟動的步驟:

1. 創建 systemd 服務文件

  1. /etc/systemd/system/ 目錄中創建一個新的服務單元文件。例如,我們可以將其命名為 appPlayer.service

    sudo nano /etc/systemd/system/appPlayer.service
  2. 在該文件中,添加以下內容:

2025年2月26日 星期三

[QML Text] 搞了半天就是不換行?肯定用錯模式!wrapMode: Wrap WordWrap WrapAnywhere 差異~喵的~

在 QML 中,Text 控件的 wrapMode 屬性控制了當文字超過 Text 控件的顯示區域時,文字如何換行。這裡有三個不同的選項:Text.WrapText.WordWrapText.WrapAnywhere,它們之間的差異如下:

1. Text.Wrap

  • 功能: 當文字達到控件的邊界時,它會在單詞的邊界處換行。換句話說,它會根據空白字符(例如空格、標點符號)來判斷何時換行,保證不會在單詞的中間換行。
  • 用例: 用於一般的文字處理,保持單詞完整。