開放街圖與MAPS.ME

OpenStreetMap是由製圖者社群所建立,他們提供及不斷更新包括有關世界各地的道路、路徑、咖啡館、火車站等等的資料。地方知識、社群推動、開放資料是它的特點。得益於社群推動,OpenStreetMap很可能擁有更新更準確的資訊,這點我在深圳、香港、日本、意大利旅行時有深切的感受。如果沒有OpenStreetMap我的多數旅行都不可能那麼順利而有趣!有興趣參與的朋友可以參考learnOSM的教程。

MAPS.ME是一款開源的離線地圖應用,地圖數據來自OpenStreetMap。有蘋果版和安卓版供下載。由於OpenStreetMap並不提供移動客戶端,所以我之前都是使用MAPS.ME,預先將目的地的地圖下載好就可以使用了。它提供的路徑規劃功能雖不能說完美,但是已經很不錯了,步行和騎行路徑還有海拔變化,對於行山真的很有用。MAPS.ME提供了簡單的添加地點的功能,登入OpenStreetMap賬號即可為OpenStreetMap作貢獻,不過如果想專業地添加地理資訊,還是通過網頁版OpenStreetMap來操作比較好。

Maps是MAPS.ME的一個複製,在原版的基礎上添加了路徑追蹤和自定義書籤功能。

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/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 ~/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=/home/42/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的笨方法。

最後跟着官方教程增加用戶,然後在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

在安卓手機上使用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 卡, 然後假裝讓它讀它, 它不能找到它剛剛寫過的東西, 這勢必會導致麻煩, 可能會比你剛拒絕它的時候更麻煩。

我的Git命令記錄

在服務器上初始化項目

cd /temp
git clone --bare /home/fred/Documents/workspace/amazon/.git amazon.git
scp -P 2009 -r amazon.git root@127.0.0.1:/data/42/git

在本地添加遠程項目

git remote add origin ssh://root@127.0.0.1:2009/data/42/git/amazon.git
git remote -v
#推送
git push origin master
#下載更新
git clone ssh://root@127.0.0.1:2009/data/42/git/unlock.git

Android下可用的SQL Client

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

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