2026/07/28

龍芯

我發覺對中國的事物是真的無知,至少我讀了龙芯,正式进入 PostgreSQL 官方仓库以後,才想要查詢一下目前龍芯的進展。

來自 Google 以後的資訊:
龍芯是由中國科學院計算技術研究所及龍芯中科等機構設計的一系列中國國產通用中央處理器與晶片,核心產品涵蓋龍芯1號(嵌入式)、龍芯2號(工控)與龍芯3號(桌面及伺服器),採用完全自主的「龍架構」(LoongArch)指令集。

雖然說龍芯大致對標國際主流水準,不過實際上仍然是落後的(我知道有些人應該會嘲笑這點,我是覺得大可不必),只是有幾件事值得注意:

  • 龍芯是否可以持續研發
  • 龍芯是否可以由中國國內廠商完全國產(雖然可以找其它地方的代工廠,但是為了避免在極端情況下的問題,中國國內廠商需要有能力可以自行生產)

如果答案都是「是」,那麼目前大致對標國際主流水準而有一些地方落後是可以接受的,只要能夠持續進步,同時中國國內廠商(也就是晶圓代工廠們)可以繼續推進其製程反過來促進龍芯的進步,而龍芯可以切入工控電腦等領域並且有效取代,我是覺得就沒有問題。

另外,龍芯要注意的就是其軟體生態圈是否可以建立,如果可以(最少中國有人使用),或許也是一條中國值得走的路。

2026/07/15

Apache CouchDB

Apache CouchDB 是一個開源資料庫,主要功能使用 Erlang 撰寫。 專注於易用性和成為"完全擁抱web的資料庫"。 它是一個使用 JSON 作為儲存格式,JavaScript 作為查詢語言,MapReduce 和 HTTP 作為 API 的文件導向 NoSQL 資料庫。 其中一個顯著的功能就是多主複製。Apache CouchDB 在 CAP Theorem 中屬於 Eventual Consistency 類型。

使用從 source code 編譯,下面是設定的指令(如果 JavaScript engine 想要使用 QuickJS):

./configure --spidermonkey-version 115 --js-engine=quickjs --disable-spidermonkey

而後將 rel/couchdb 目錄複製到 /opt/couchdb。

建立 couchdb 使用者。

sudo useradd -r -c 'CouchDB Administrator' -d/opt/couchdb -U -M -s/bin/bash couchdb

設定 couchdb 目錄的使用者。

sudo chown -R couchdb:couchdb /opt/couchdb

設定 couchdb 目錄的權限。

sudo find /opt/couchdb -type d -exec chmod 0770 {} \;
sudo chmod 0644 /opt/couchdb/etc/*

第一次執行

sudo -i -u couchdb /opt/couchdb/bin/couchdb

你會發現無法執行,修改 /opt/couchdb/etc/local.ini,加入 admin 帳號。

[admins]
admin = admin

再次啟動 server。如果成功,連線到 http://127.0.0.1:5984/_utils/index.html 並且使用 username = admin, password = admin 登入。 可以建立一個資料庫 my_database,然後使用 http://localhost:5984/_utils/index.html#verifyinstall 檢查目前的情況。

下面是 /opt/couchdb/etc/local.ini 關於使用者認證的部份,加入 cookie authentication 的設定。

[chttpd]
require_valid_user = true
authentication_handlers = {couch_httpd_auth, cookie_authentication_handler}, {chttpd_auth, default_authentication_handler}

[chttpd_auth]
secret = your_long_secure_shared_secret

SSL

建立 ssl.conf 設定檔

[req]
prompt = no
default_md = sha256
default_bits = 2048
distinguished_name = dn
x509_extensions = v3_req

[dn]
C = TW
ST = Taiwan
L = Taipei
O = Orange Inc.
OU = IT Department
emailAddress = admin@example.com
CN = localhost

[v3_req]
subjectAltName = @alt_names

[alt_names]
DNS.1 = *.localhost
DNS.2 = localhost
IP.1 = 127.0.0.1

透過指令建立開發測試用途的自簽憑證

openssl req -x509 -new -nodes -sha256 -utf8 -days 3650 -newkey rsa:2048 \
-keyout couchdb.key -out couchdb.crt -config ssl.conf

將 couchdb.key 與 couchdb.crt 複製到 /opt/couchdb/etc 目錄(需要使用 su 切換到 root 身份或者使用 sudo)。

修改 /opt/couchdb/etc/local.ini

[ssl]
enable = true
port = 6984
cert_file = /opt/couchdb/etc/couchdb.crt
key_file = /opt/couchdb/etc/couchdb.key
;password = somepassword

相關連結