分類
方法

Xperia X Compact with Android 8

請參考Root the Xperia X Compact來安裝Flashtool和Xperia X Compact驅動,安裝後就可以使用adb命令來調試手機了。

手機上開啟調試模式

設置/系統/關於手機/(最下方)Build number,點擊版本號7次即可開啟開發者選項。在系統菜單里,進入開發者選項,找到Debugging類目下的USB debugging開關,打開它。手機用USB連接電腦就可以了。注意此種模式連接電腦有被安裝病毒軟件風險,所以不要隨便以這種狀態連接任何不明設備。用完後記得關閉調試開關。

去除Wifi標誌上的叉號

出現叉號是因為谷歌的聯通性檢測網址無法被訪問。可以自行搭建一個這樣的服務,v2ex也有提供,這裡使用高通中國(https://www.qualcomm.cn/generate_204)聯通性檢測網址。

2021-10-26 開始高通中國的聯通性測試不行了,所以我自建了一個,順便還能檢查服務器是不是掛了。當然也歡迎大家使用,地址如下:(注意實際請求是到 Cloudflare 的服務器)

adb shell "settings put global captive_portal_https_url https://manchuria.eu.org/generate_204"
adb shell "settings put global captive_portal_http_url https://manchuria.eu.org/generate_204"

禁用或刪除不使用的自帶軟件

universal-android-debloater 提供了更加方便又安全的禁用自帶軟件的辦法,請先參考它。

如果root了,有很多軟件可以選擇,如link2sd。未root可以使用下面命令來實現,參考自:Which Apps are safe to remove after Root

#通過adb打開手機終端
adb shell
#查看所有app
pm list packages | more
#禁用startupflagservice,可以解決手機自動重啟
pm disable-user com.sonyericsson.startupflagservice
#禁用warrantytime,可以去掉開機後的狀態欄提示
pm disable-user com.sonyericsson.warrantytime
#更多可禁用app可參考上面鏈接
#查看已禁用的app
pm list packages -d
#退出終端
exit
#卸載What's New命令
adb uninstall --user 0 com.sonymobile.entrance

換機

大概去年 9 月份的時候,手機的移動信號忽然開始不穩定。一開始是偶爾沒有數據網絡,後來直接「無服務」了。我用聯通和電信卡做測試,以及重新刷機(原裝系統和第三方系統),都未能解決,所以判斷是硬件除了問題。於是又從網上買了一個 Xperia X Compact ,由於日版較港版便宜一些,於是這次買了日版,用了一年多了,也挺好的。沒有移動信號的手機則專門用來短期旅行的時候看地圖和紀錄 GPS 位置用,再也不用擔心手機沒電了。

由於是日版機,所以也就沒有 Root,但是微信和銀行應用又不得不用,好在有 Shelter 。Shelter 可以隔離您的老大哥應用,對於不常用的應用還可以方便的凍結掉。

順帶一提,之前的二手港版機大概是四百多塊,而這個日版大概是三百多塊。我和 Emanon 都是用這款小屏手機,目前都運行良好。之所以買這個手機其實有諸多考慮:比如這款手機屏幕小,4.6";拍照方便,有獨立對焦攝影鍵,視頻防抖也不錯;使用二手機可以為環保事業作出微弱貢獻;資料安全一丟丟,沒有百度等底層服務。不過從 DNS 記錄中可以看到,手機偶爾會連接索尼的服務器,域名包含 geoip、update 等字樣。我家以及我的手機有配置 dns-proxy,所以一些可疑的域名請求都被攔截了,如果是國內廠商,我就不知道該怎麼攔截了;當然還有一點就是能夠在網上買的到。這些電子垃圾從日本倒賣過來,應該是不合法的,隨着經濟下行政策收緊,不知道那家店能做到什麼時候。20200809

本文更新於 2024/04/02。

分類
软件

使用ExifTool處理文件元數據

ExifTool是一款由Phil Harvey開發的獨立於平台的命令行工具,用於處理文件的元數據,例如照片的拍攝日期等。Fedora可以通過下面命令安裝使用。

#安裝ExifTool
sudo dnf install perl-Image-ExifTool
#把DIR文件夾中的文件的拍攝日期增加4小時
exiftool "-DateTimeOriginal+=4" DIR
# -overwrite_original 可不產生.JPG_original原始文件
#修改後會產生.JPG_original原始文件,新文件較原始文件小是因為ExifTool壓縮了Exif信息
#如果修改日期有誤,可以通過這個命令恢復圖片原始文件
for file in *.JPG_original;do mv "$file" "$(basename "$file" .JPG_original).JPG"; done
#Linux重命名DIR文件夾中的名字為拍攝日期
exiftool -overwrite_original -d %y%m%d_%H%M%S%%-c.%%e "-filename<DateTimeOriginal" DIR
#Windows重命名DIR文件夾中的名字為拍攝日期
"D:\Program Files\portable\exiftool.exe" -d %y%m%d_%H%M%S%%-c.%%e "-filename<DateTimeOriginal" E:\Image\DIR
#Windows中重命名DIR文件夾中的mov視頻名字為拍攝日期
"D:\Program Files\portable\exiftool.exe" -ext mov -d %y%m%d_%H%M%S%%-c.%%e "-filename<DateTimeOriginal" E:\Image\DIR
#Windows中重命名DIR文件夾中的gopro拍攝的mp4視頻名字為拍攝日期
"D:\Program Files\portable\exiftool.exe" -ext mp4 -d %y%m%d_%H%M%S%%-c.%%e "-filename<MediaCreateDate" E:\Image\DIR

#查看MOV文件中的可用時間標籤
"D:\Program Files\portable\exiftool.exe"  -time:all -a -G0:1 -s  E:\Image_55\DIR\LA090570.MOV
#清除當前文件夾中所有exif數據
exiftool -all= *

##GPS 相關
#以 json 方式輸出所有 gps 相關標籤
exiftool -struct -j -a -n "-gps*" E:\Image\a.JPG
#把照片的位置設置爲 GCJ-02 座標系統,並指定經緯度
exiftool -exif:gpsmapdatum=GCJ-02 -exif:gpslatitude=22.12345 -exif:gpslongitude=114.12345 E:\Image\a.JPG

本文更新於 2021/05/10。

分類
软件

開放街圖與MAPS.ME

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

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

Maps 是 MAPS.ME 的一個複製,在原版的基礎上添加了路徑追蹤和自定義書籤功能。之前由於 MAPS.ME 拒絕在主要位置添加數據來源爲 OpenStreetMap 而被很多用戶投訴,這也是我使用 Maps 的一個原因,然而還是由於 MAPS.ME 的問題,Maps 現在的版本 10.2.0 有兩個很麻煩的問題。這兩個問題可以根據 App stuck in download at startup 的方法來解決,我簡單記錄下。

  1. 備份下儲存卡中的 /MapsWhithMe 文件夾,書籤與記錄都在這裡。
  2. 在手機的 設置->應用-> Maps 中,強制停止應用,然後清理數據和緩存。
  3. 前往 http://opensource-data.mapswithme.com/regular/weekly/ 下載所有的 .ttf 文件以及 World.mwm 和 WorldCoasts.mwm。我還需要廣東省地圖,所以還要下載 China_Guangdong.mwm 。
  4. 清空手機上的 /MapsWhithMe 文件夾,然後把剛剛下載的除了 China_Guangdong.mwm 之外的文件複製進去。
  5. 把 WorldCoasts.mwm 複製一份,並改名為 WorldCoasts_obsolete.mwm (同樣是放在 /MapsWhithMe 文件夾)。
  6. 啟動 Maps,給予權限後稍等片刻即可看到世界地圖已正確加載。
  7. 關閉 Maps,把需要的之前備份的 .kml 文件複製回 /MapsWhithMe 文件夾,書籤就回復了。另外可以看到 MapsWhithMe 文件夾中有了一以日期為名字的文件夾,把 China_Guangdong.mwm 放進去,就可以正常使用了。

另一問題是每次打開 Maps,都會有一個煩人的引導需要點擊一次。目前已知的一種辦法是安裝一下 MAPS.ME,點掉引導,卸載 MAPS.ME。之後 Maps 就也不會出現了。但是這個做法不是很理想,我沒有試,希望下個版本可以解決這個問題吧。

除了 Maps,其實還有一款離線地圖 OsmAnd~,但是 OsmAnd 的圖層顯示不如 MAPS.ME 的直觀,不知道是不是先入為主看習慣的原因。對於步行路線的規劃,無論是操作複雜程度以及規劃結果,感覺上也都不如 MAPS.ME。不過還是可以推薦大家試試,畢竟沒有 Maps 那樣需要複製來複製去的操作。

20210923 更新:MAPS.ME 後來被出售給了一家商業公司,新公司糟糕的運營導致 MAPS.ME 在谷歌市場惡評如潮。就我個人使用而言,幾乎已經無法繼續使用。在此期間,由於上游的變動 Maps 最終也停止更新了。OsmAnd 用了一段時間,但是還是覺得很多方面有待提高,尤其是徒步的導航。終於我發現 MAPS.ME 的開發者們開發了另一款離線地圖應用 Organic Maps,沒有任何廣告,尊重隱私,開源而好用的離線地圖又回來了!

本文更新於 2021/09/23。

分類
软件

ShareX

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

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

分類
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。

分類
软件

我的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。

分類
软件

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。