分類
软件

ShareX

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

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

分類
软件

Termux是個好軟件

Termux是一個無需 root 權限和複雜安裝步驟的安卓終端模擬器和 Linux 環境軟件。推薦使用 F-Droid 安裝 Termux,如果用谷歌市場(谷歌市場版本已廢棄),有些插件要付費,而開源平台 F-Droid 則不必。如果你要用 GUI 插件,那麼你需要從 Github 下載安裝 Termux,F-Droid當前的包有點問題。另一個很厲害的東西就是,它可以玩Python(嘗試自己編譯失敗,源里編譯好的可用)。

使用內部儲存空間

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

常用軟件

nano python openssh wget

別名文件位於 ~/.bash_profile ,新建別名後可以方便的執行複雜的命令。

alias d1='/data/data/com.termux/files/home/scripts/dns.sh 1'

配置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。

配置額外按鍵

命令行經常用的Ctrl、Alt、上下左右方向鍵,都可以通過編輯~/.termux/termux.properties來自定義,比如我的就是

extra-keys = [ \
 ['ESC','/','_','HOME','UP','END','PGUP'], \
 ['TAB','CTRL','ALT','LEFT','DOWN','RIGHT','PGDN'] \
]

使用 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 [text]
#獲取剪切版內容
termux-clipboard-get
#拍攝一張照片
#默認0是主攝像頭
termux-camera-photo [-c camera-id] output-file 

#錄音15秒
termux-microphone-record -d -l 15 -f audio.aac
#結束錄音
termux-microphone-record -q

使用 Termux Widget

Widget 可以方便的從桌面執行腳本,只需要手指一點,輕鬆方便。

從F-Droid安裝插件,然後在把要執行的腳本放在 ~/.shortcuts/~/.shortcuts/tasks ,前者會打開新窗口運行,後者在後臺運行。如果失敗的話,看看文件夾是不是 700 的權限。

安裝 exiftool

exiftool處理多媒體視頻Exif信息的得力工具。

#從ExifTool主頁下載安裝包,假設下載的文件是Image-ExifTool-11.37.tar.gz,下載到了Downloads文件夾。
cd Downloads
gzip -dc Image-ExifTool-11.37.tar.gz | tar -xf -
cd Image-ExifTool-11.37
perl Makefile.PL
make install
chmod +x /data/data/com/com.termux/files/usr/bin/exiftool
#然後就可以使用exiftool來處理媒體文件了
#刪除temp文件夾中所有文件的exif信息
exiftool -all= temp
#卸載exiftool
cd Downloads
make uninstall

使用 crontab 定時執行

pkg install cronie termux-services
# restart termux session
sv-enable crond 
crontab -e 

本文更新於 2022/08/09。

分類
Linux 软件

在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

如果傳送文件時提示文件大小超過限制,多半是nginx給擋下了,可以在nginx配置文件的http段里添加下面兩行來解決:

    sendfile        on;
    client_max_body_size 40M;

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/

##升級##
cd riot-web
git fetch origin
git reset --hard origin/master
npm install
npm run build
npm install electron
node_modules/.bin/build -l --x64

Synapse搬家

官方文檔並未給出具體備份與還原方法,經過摸索發現非常簡單。如果是按照我上面步驟安裝的,只需再新服務器上搭建好環境,然後複製如下文件到虛擬環境中就可以啟動了。如果文件路徑有變化,則需要修改homeserver.yaml和YOURDOMIN.log.config這兩個配置文件。

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

Centos7上裝Synapse

大致一樣啦。sqlite3還是要自己安裝,系統帶的不行。python可以用3了。Twisted要裝17.9.0。

本文更新於 2018/12/26。

分類
方法 软件

在安卓手機上使用xprivacy保護隱私

使用xprivacy需要root權限和xposed框架。獲取root權限和安裝xposed框架請參考https://forum.xda-developers.com/

以下內容機翻自yannick.12的貼子,原文地址https://forum.xda-developers.com/showpost.php?p=68744809&postcount=7

讓我們舉一個簡單的例子, 比如位置。

首先, 讓我們假設第二列是未選中的。這是最容易理解的情況。然後會發生什麼取決於第一列。

第一列-如果它選中, 那麼xprivacy將始終拒絕訪問的位置, 並把xprivacy里設置的假冒資訊給應用程式。

然而, 如果第一列沒有被選中, 那麼應用程式將能夠獲取您的實際位置。

這就是你對一個應用程式權限做出的回答, 它的答案是 "可以使用這個許可權嗎?" 總是相同的 (無論是 "總是" 還是 "從不")。第二列未選中, 第一列選項告訴應用程式是或否。

第二列控制您在xprivacy中看到的彈窗。如果選中第二列, 您將得到一個彈窗, 詢問是否允許該應用程式獲得許可權 (是否選中了第一列)。

彈窗有四種情況-"允許", "拒絕", "不知道", "哎呀我超時"。

"哎呀, 我超時了" 將給app第一列的答案。

如果您在彈窗中按一下 "允許", 然後 xprivacy 取消勾選設置中的第二列, 再取消勾選第一列, 並讓應用程式訪問您的真實位置。除非重新勾選 xprivacy 設置中的第二列, 否則彈窗不會再次出現。

如果你點擊 "拒絕" 然後 xprivacy 取消勾選第二列, 勾選第一列並給應用程式假位置。然後, 你將不會看到彈出。

如果您按一下 "不知道", 那麼我認為 * xprivacy 拒絕訪問 (無論第一列是否未選中), 並將第二列保留為選中狀態, 因此下次將再次詢問。

我怎麼發現的?嗯, 我不是從常見問題解答中讀到的!我昨天剛剛下載 xprivacy , 我發現它令人難以置信的困難。最後, 我下載了一個應用程式, 它顯示出你的 gps 位置, 沒有別的, 我只是測試。以上是我的總結。我希望它能幫助別人, 因為我希望我昨天讀過這個帖子。

請注意, 其他許可權的工作方式可能稍有不同。例如, 它不可能完全虛擬一整套互聯網資訊。您可以通過查看 xprivacy 設置來快速瞭解哪些資料可以偽造。例如, 你可以偽造你的電話號碼和你的 MAC 位址。但正如我已經說過, 你不能假冒你的互聯網, 你也不能偽造你的存儲-這是一個很好的主意, 因為如果你假裝讓一個應用程式寫到您的 SD 卡, 然後假裝讓它讀它, 它不能找到它剛剛寫過的東西, 這勢必會導致麻煩, 可能會比你剛拒絕它的時候更麻煩。


2021年更新:由於維護一個安全的 root 過的安卓系統越來越困難,而我也隨著年齡的增加而喪失了一部分好奇心,所以我現在使用開源應用 Shelter 來將自己不信任的應用隔離到獨立的區域。Shelter 雖不如 xprivacy 功能強大,但對於基本的隱私防護(通訊錄、地理位置、手機內的文件資料、避免應用後台運行)是沒有問題的。安裝使用也非常簡單方便,推薦大家試用。

本文更新於 2021/02/05。

分類
软件

我的Git命令記錄

把本地項目傳到 Gitea

首先在 Gitea 新建項目,輸入項目名 YOUR_PROJECT_NAME,其他都不用動。

然後根據 Gitea 的提示,在本地執行下列命令:

#創建說明文檔
touch README.md
#創建忽略文檔,下面有個示例
touch .gitignore
#初始化 git 並推送至服務器
git init
git checkout -b main
(或 github 的 git branch -M main)
git add *
git commit -m "first commit"
git remote add origin https://git.disroot.org/user/YOUR_PROJECT_NAME.git
git push -u origin main

.gitignore 示例

# Django #
*.log
*.pot
*.pyc
__pycache__
db.sqlite3
/app1/migrations
/app1/profile_dir/*
*.lock

#mysite/settings.py
*.env
*.env_1
media
/static

# Backup files # 
*.bak 
*.log
*.log.*

# Eclipse # 
.project
.pydevproject

在服務器部署和更新 Git 代碼倉庫中的代碼

#Clone 項目到服務器
git clone https://git.disroot.org/user/YOUR_PROJECT_NAME.git
cd YOUR_PROJECT_NAME
#拉取代碼倉庫的更新
git fetch
git checkout origin main
[code]

<h3>?</h3>
<p>在服務器上初始化項目</p>
[code language="bash"]
cd /temp
git clone --bare /home/fred/Documents/workspace/amazon/.git amazon.git
scp -P 2009 -r amazon.git [email protected]:/data/42/git

在本地添加遠程項目

git remote add origin ssh://[email protected]:2009/data/42/git/amazon.git
git remote -v
#推送
git push origin master
#下載更新
git clone ssh://[email protected]:2009/data/42/git/unlock.git

本文更新於 2023/11/25。

分類
软件

Android下可用的SQL Client

SQL Client是一個可以在安卓手機上鏈接MySQL數據庫的應用,界面挺漂亮。如果偶爾要用手機檢查一下數據庫的資料,那麼基本的查詢功能是可以滿足的,看介紹說還能導出cvs文件。不足之處也不多:1,無法通過ssh連接數據庫,只能通過數據庫的地址和端口連接。2,每條SQL都保存爲一條記錄,好像會產生很多記錄。一些複雜的操作還是通過JuiceSSH進服務器執行吧。

電腦上一直在用MySQL Workbench,感覺還可以。

分類
软件

ssh connecting

記錄下ssh連接服務器的幾種方式:

linux to linux

直接打開終端,以帳號密碼方式登錄,如下:

ssh -l root -p 2016 123.159.181.162

如果厭倦了每次都要輸密碼,可以通過證書方式登錄,還能增加安全性。設置方法可以參考SSH Passwordless Login Using SSH Keygen in 5 Easy StepsSSH/OpenSSH/Keys,寫的很詳細。

還是不犯懶大概抄寫一下:

#本地,如果你沒有公鑰文檔~/.ssh/id_rsa.pub,就用如下命令生成一個
ssh-keygen -t rsa
#遠程,如果沒有ssh文件夾,則創建一個
mkdir -p .ssh
#本地,把本地id_rsa.pub添加到.ssh/authorized_keys文檔中,如
cat .ssh/id_rsa.pub | ssh user@remoteServer 'cat >> .ssh/authorized_keys'
#遠程,檢查文檔權限,如果不是,則改為
chmod 700 .ssh
chmod 640 .ssh/authorized_keys
#完成

android to linux

ConnectBot是一款簡單、強大、開放原始碼的SSH用戶端。增強鍵盤中方向鍵和Ctrl、Tab等鍵用起來很方便。而且它還能連local,就當作一個本地的Terminal了。

另一個選擇是JuiceSSH。其實呢從個方面(更強大的鍵盤和更便利的剪切板操作)我都覺得JuiceSSH比ConnectBot厲害,但是我還是要在一開始推薦一下開源軟件。

Termux是安卓下的另一個選擇,它不僅可以作為ssh client還可以作為ssh server哦。Termux的sshd端口為8022,只能通過密鑰登錄。

windows to linux

其實比putty厲害的軟件也有很多,但我只用過putty。

ios to linux

能用錢解決的問題都不是問題?

本文更新於 2018/02/02。