18020914

這樣的樂趣,對於富裕的人來說,是不值一提的,只是我自身的今昔之比。

說到底,三界就是一個「心」字。心不安靜,象、馬和七寶也不珍貴,宮殿、樓閣也不期望。如今這寂寥的住居——一間小庵,我自珍愛。偶爾去京城,雖然為自己形同乞丐而羞恥,但歸來居庵時,又為他人奔馳於俗塵而哀憐。假如有人懷疑我這說法,那就看看魚和鳥的瀟洒吧。魚不厭水,魚外之物哪知魚之心。鳥顧林間,鳥外之物哪知鳥之心。閑居的趣味也同樣,你不住這小庵,哪知其中奧妙。

吉田兼好《徒然草》

ShareX

今天SpaceX成功發射了一架運載力達到63噸(63噸是近地軌道LEO,如果是地球同步轉移軌道GTO則為27噸,而發往火星的話是16噸)的火箭Falcon Heavy。但我今天介紹的卻是Windows下一款很好用的截屏軟件ShareX。ShareX好處有很多,我看中的有開源、免費、無廣告、輕量。雖然它還有強大的截屏分享、錄製gif等功能,但我並未用到。

安裝後在「快捷動作」中可以設置自己喜歡的快捷按鍵來觸發截屏。在「截圖後動作」中我選擇了打開圖像編輯器和圖像複製到剪切版。「任務設置」中取消了截圖後聲音提示。這樣就能愉快的使用了!

Termux是個好軟件

Termux是一個無需root權限和複雜安裝步驟的安卓終端模擬器和Linux環境軟件。推薦使用F-Droid安裝Termux,如果用谷歌市場,有些插件要付費,而開源平台F-Droid則不必。一個很厲害的東西就是,它可以玩python(3.6)。

使用內部儲存空間

在手機的設定>應用程式>Termux>權限中打開「儲存空間」的開關。然後在Termux中運行termux-setup-storage。

常用軟件

nano python openssh

配置ssh

由於安全原因,Termux禁止使用賬號密碼連接到手機,只能用key。同時為了照顧未root的手機,所以ssh端口監聽在8022端口。

通過密碼方式訪問本機ssh可以參考官方文檔Setting up password authentication。之前是只能通過密鑰對訪問的,雖然更安全,但是卻是不便利。

如果你客戶端(你的電腦)已經有密鑰對,那麼把公鑰傳到手機上,然後追加到手機~/.ssh/authorized_keys里就可以了。如果沒有,就在客戶端生成一個密鑰對,建議提示輸入密碼的時候設置一個密碼。

然後在手機上運行sshd開啟ssh服務,客戶端用ssh -p 8022 172.16.5.223來鏈接到手機。停止手機上的ssh服務可以執行pkill sshd。

使用Termux API

首先手機安裝Termux:API,然後在Termux中安裝termux-api,執行apt install termux-api即可。最後就可以參考Termux API文檔來玩耍了。

#查看當前位置
#termux-location [-p gps/network/passive] [-r once/last/updates]
termux-location -p gps -r once
#設置剪切版內容
termux-clipboard-set 

在centos6上裝Synapse

裝了Matrix家的Synapse就可以使用Riot.im聊天了,好處是服務器是自己的,客戶端是開源的。

首先跟着官方文檔,安裝依賴。此時需要注意centos6自帶的sqlite版本太低,而且插件FTS4也未啟用。參考Install Python and Sqlite from Source安裝sqlite和python2.7即可。

#安裝sqlite3.12並開啟FTS4
mkdir -p ~/tmp/compile&&mkdir ~/tmp/opt&&cd ~/tmp/compile
wget https://www.sqlite.org/2016/sqlite-autoconf-3120200.tar.gz
tar xf ./sqlite-autoconf-3120200.tar.gz
cd sqlite-autoconf-3120200
./configure --prefix=~/opt/sqlite/sqlite3 --disable-static --enable-fts5 --enable-json1 CFLAGS="-g -O2 -DSQLITE_ENABLE_FTS3=1 -DSQLITE_ENABLE_FTS4=1 -DSQLITE_ENABLE_RTREE=1"
make
make install
mkdir ~/bin
ln -s ~/opt/sqlite/sqlite3/bin/sqlite3 ~/bin/sqlite
#到這裡就安裝好了,執行sqlite即可看到版本為3.12
#執行pragma compile_options;可見FTS4已開啟
#.quit退出sqlite
#安裝使用sqlite3.12的python2.7
wget https://www.python.org/ftp/python/2.7.14/Python-2.7.14.tar.xz
xz -d Python-2.7.14.tar.xz&&tar -xvf Python-2.7.14.tar
cd Python-2.7.14
LD_RUN_PATH=$HOME/opt/sqlite/sqlite3/lib ./configure LDFLAGS="-L$HOME/opt/sqlite/sqlite3/lib" CPPFLAGS="-I $HOME/opt/sqlite/sqlite3/include"
LD_RUN_PATH=$HOME/opt/sqlite/sqlite3/lib make
LD_RUN_PATH=$HOME/opt/sqlite/sqlite3/lib make install

使用virtualenv生成一個Synapse專用的虛擬環境。安裝Synapse時還會遇到Twisted版本過低,在虛擬環境下這樣操作一下:

wget https://twistedmatrix.com/Releases/Twisted/17.1/Twisted-17.1.0.tar.bz2
tar -jxvf Twisted-17.1.0.tar.bz2
cd Twisted-17.1.0
python setup.py install 
cd ..

配置nginx前置代理的時候,用letsencrypt的centbot各種失敗,最後還是用回ssl for free的笨方法。推薦使用letsencrypt的centbot,配好後非常省時省力。順便貼一下nginx配置:

server {
    listen 443 ssl;
    server_name YOURDOMIN;

    ssl_certificate     /etc/letsencrypt/live/YOURDOMIN/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/YOURDOMIN/privkey.pem;
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers         HIGH:!aNULL:!MD5;

    location /_matrix {
        proxy_pass http://localhost:8008;
        proxy_set_header X-Forwarded-For $remote_addr;
    }
}

由於使用了nginx做代理,所以8008端口的監聽範圍可以在homeserver.yaml中改成127.0.0.1。

最後跟着官方教程增加用戶,然後在Riot.im里勾上自定義服務器就可以聊天了。也可以參考下Run your end-to-end encrypted chat server using Matrix and Riot

Android我從F-droid下載的客戶端,沒有gcm,所以在後台時檢查消息的頻率可以自行設置,我設置的5分鐘,默認10分鐘。網頁端打開的時候有一點點慢,打開後就沒問題了。Fedora可以安裝taw/Riot的源,即

sudo dnf copr enable taw/Riot 
sudo dnf install -y riot --refresh

Fedora29的包taw還沒打,我們可以自己打:

sudo dnf install npm
git clone https://github.com/vector-im/riot-web.git
cd riot-web
npm install
cp config.sample.json config.json
#修改下面4處
    "default_hs_url": "https://YOURDOMIN",
    "default_is_url": "https://YOURDOMIN",
    "disable_guests": true,
    "features": {
        "feature_groups": "labs",
        "feature_pinning": "labs",
        "feature_rich_quoting": "labs",
        "feature_presence_management": "labs",
        "feature_sticker_messages": "labs",
        "feature_jitsi": "labs",
        "feature_tag_panel": "enable",
        "feature_lazyloading": "enable"
    }
#編譯
npm run build
#編譯獨立APP
npm install electron
#運行APP
npm run electron
#生成可執行文件
node_modules/.bin/build -l --x64
#可執行文件在electron_app/dist/linux-unpacked/

Synapse搬家

官方文檔並未給出具體備份與還原方法,經過摸索發現非常簡單。如果是按照我上面步驟安裝的,只需再新服務器上搭建好環境,然後複製如下文件到虛擬環境中就可以啟動了。

homeserver.yaml
YOURDOMIN.log.config   
YOURDOMIN.signing.key  
YOURDOMIN.tls.crt
YOURDOMIN.tls.dh
YOURDOMIN.tls.key
media_store
homeserver.db

Synapse重置用戶密碼

參考:reset password for matrix/synapse accounts

17121213

……有時候會聽到中國的音樂,間或有歌聲,始終重複有著細微變化的同一個旋律,節奏極其複雜穩定。在一個中國人家裡參加了小型私人聚會:狹小的前廳蹲著五名樂師,室內一直是燈火通明。每一幢中國人的房子裡,包括在妓院裡,正對大門的地方都有一座神龕,火燭閃爍,金光燦燦。麵包師和鞋匠在門洞大開的鋪子裡忙碌著,大多赤裸著上身。看到的中國人幾乎毫無例外服裝顏色單一、格調高雅,苦力身著短褲和敞著前襟的無袖短上衣,通常是用藍色麻布縫製,其他中國人大多穿著肥大、有光澤的黑褲子,怎麼看都好看。我把中國人分成兩類:一類微胖,臉龐像滑稽演員,透露著機敏和愜意;另一類則瘦削。他們全都很聰明,通常會讓人心生好感。人力車夫單純親切,愛笑,很有眼色。我們看見一……

1911年生活在斯里兰卡的岭南人,黑塞

17120820

至於熱帶自然風光,我看到的主要是原始森林,其次就是蘇門答臘島的河流,馬來海域的群島和錫蘭肥沃得流油的土地。就城市而言,新加坡和巨港尤為有趣。我接觸到的民族有馬來人、爪哇人、泰米爾人、僧伽羅人、日本人和中國人。對於中國人只能用“很了不起”來形容:一個令人欽佩的民族!其他大部分人都是某個古老的一度生活在伊甸園裡的民族遭受西方腐化和蠶食後餘留下來的可憐的後裔,他們是可愛的、馴良的、靈巧並且有天賦的原始族類,我們的文化卻把他們扼殺了。倘若西方人能夠更好地適應這裡的氣候並且能讓他們的孩子在這裡長大,或許就不會再有印度人了。

如今的國人,已經配不上黑塞的盛讚了