Android套用日文字體

據說有的手機(三星,LG,HTC)可以直接選擇系統字體,真好,但是索尼不行。我只是修改了系統的字體配置文件,讓顯示簡體中文時,首先套用日語SomcUDGothic-Regular.ttf字體,如果沒有再用回原來的NotoSansCJK-Regular.ttc字體。這樣不會出現口口口,但時畢竟字體差異在那裡,如果追求完美顯示的話,這個方法是不合適的。

#備份原始文件
cp /system/etc/fonts.xml /system/etc/fonts.xml.bak
vi /system/etc/fonts.xml
#添加如下三行到<family lang="zh-Hans">前。
    <family lang="zh-Hans">
        <font weight="400" style="normal">SomcUDGothic-Regular.ttf</font>
    </family>
#重啟手機即可

python查詢aqicn的空氣質量數據

#!/data/data/com.termux/files/usr/bin/python
# -*- coding: utf8 -*-

#aqicn空氣質量 #https://aqicn.org/api/
import json,requests,sys

#token從https://aqicn.org/data-platform/token/獲取,只需郵箱即可
token = 'demo'
#預設為當前IP位置,可自行指定基站,幫助 --help
station = "here"

def getAqi(station):    
    aqiUrl = "https://api.waqi.info/feed/"+station+"/?token="+token
    try:
        res = requests.get(aqiUrl)
        a = res.json()
        if a['status']=="ok":
            return a
        else:
            res = requests.get(aqiUrl)
            a = res.json()
            return a
    except:
        return {"status":"net error"}

def searchStation(keyword):
    searchUrl = "https://api.waqi.info/search/?token="+token+"&keyword="+keyword
    try:
        res = requests.get(searchUrl)
        a = res.json()
        res = []
        if a['status']=="ok":
            for s in a['data']:
                resT={}
                resT['uid']=s['uid']
                resT['name']=s['station']['name']
                resT['aqi']=s['aqi']+" ("+s['time']['stime']+")"
                res.append(resT)
            return res
        else:
            return a
    except:
        return {"status":"net error"}
def processAqi(aqiJson):
    s=aqiJson
#     print(json.dumps(s, indent=4))
    res={}
    if s['status']=="ok":
        res['cityName']=s['data']['city']['name']
        res['time']=s['data']['time']['s']
        res['aqi']=s['data']['aqi']
        try:
            res['pm25']=s['data']['iaqi']['pm25']['v']
        except:
            res['pm25']="N/A"
        try:
            res['pm10']=s['data']['iaqi']['pm10']['v']
        except:
            res['pm10']="N/A"
        try:
            res['temp']=s['data']['iaqi']['t']['v']
        except:
            res['temp']="N/A"
        try:
            res['humidity']=s['data']['iaqi']['h']['v']
        except:
            res['humidity']="N/A"
        try:
            res['wind']=s['data']['iaqi']['w']['v']
        except:
            res['wind']="N/A"
    else:
        res=s
    return res

def main():
    global station
    if len(sys.argv)==1:
        res = processAqi(getAqi(station))
    elif len(sys.argv)==2:
        station = str(sys.argv[1])
        if station == "--help":
            res={"@5851":"根據觀測點編號查詢","Nanyang":"根據城市名稱查詢",
                 "here":"根據IP查詢","s shenzhen":"查詢深圳觀測點",}
        else:
            res = processAqi(getAqi(station))
    elif len(sys.argv)==3:
        res = searchStation(str(sys.argv[2]))
    
    print(json.dumps(res, indent=2, ensure_ascii=False))
    
if __name__ == '__main__':
    main()
    

前天迎來如秋後的第一場中度霧霾。

18081708

最近看到騰訊牽頭成立的微眾銀行,定期存款年利率最高可達4.875%,比普通理財產品都有高很多。於是決定試一試。在微信搜索微眾銀行可以方便進入其小程序,但小程序說完整功能請使用微眾銀行APP。通過微眾銀行公眾號的鏈接下載,跳轉瀏覽器,順利下載到了微眾銀行APP,不過我留意到下載鏈接竟然是http開頭的。安裝後打開,APP即提示有新版本,建議更新。點擊更新後不能安裝,因為下載到的新安裝包版本比現在安裝的還舊。於是通過微眾銀行官網的下載鏈接下載apk後安裝,獲得的仍然是舊版本,舊到不更新不能使用。多次嘗試無果後,將手機切換到電信網絡下,下來就是最新的APP了。

所以我粗略判斷,天威網絡緩存了微眾銀行的舊版本包,導致用戶無法升級。作為金融類APP,安裝包居然是明文傳輸,這就是國內一線大企業的做法。

般若波羅蜜多心經

《般若波羅蜜多心經》 唐·三藏法師玄奘譯

觀自在菩薩,行深般若波羅蜜多時。照見五蘊皆空,度一切苦厄。舍利子,色不異空,空不異色,色即是空,空即是色。受想行識,亦復如是。舍利子,是諸法空相,不生不減,不垢不凈,不增不減。是故空中無色,無受想行識,無眼耳鼻舌身意,無色聲香味觸法,無眼界,乃至無意識界。無無明,亦無無明盡,乃至無老死,亦無老死盡。無苦集滅道,無智亦無得,以無所得故。菩提薩埵,依般若波羅蜜多故,心無罣礙,無罣礙故,無有恐怖,遠離顛倒夢想,究竟涅盤。三世諸佛,依般若波羅蜜多故,得阿耨多羅三藐三菩提。故知般若波羅蜜多,是大神咒,是大明咒,是無上咒,是無等等咒,能除一切苦,真實不虛故。說般若波羅蜜多咒,即說咒曰:揭諦、揭諦、波羅揭諦,波羅僧揭諦,菩提薩婆訶。


bō rě bō luó mì duō xīn jīng


guān zì zài pú sà,xíng shēn bō rě bō luó mì duō shí。
zhào jiàn wǔ yùn jiē kōng,dù yī qiē kǔ è。
shè lì zǐ,sè bù yì kōng,kōng bù yì sè,sè jí shì kōng,kōng jí shì sè。
shòu xiǎng xíng shí,yì fù rú shì。
shè lì zǐ,shì zhū fǎ kōng xiàng,
bù shēng bù miè,bù gòu bù jìng,bù zēng bù jiǎn。
shì gù kōng zhōng wú sè,wú shòu xiǎng xíng shí,
wú yǎn ěr bí shé shēn yì,wú sè shēng xiāng wèi chù fǎ,
wú yǎn jiè,nǎi zhì wú yì shí jiè。
wú wú míng,yì wú wú míng jìn,nǎi zhì wú lǎo sǐ,yì wú lǎo sǐ jìn。
wú kǔ jí miè dào,wú zhì yì wú dé,yǐ wú suǒ dé gù。
pú tí sà duǒ,yī bō rě bō luó mì duō gù,xīn wú guà ài,
wú guà ài gù,wú yǒu kǒng bù,yuǎn lí diān dǎo mèng xiǎng,jiū jìng niè pán。
sān shì zhū fó,yī bō rě bō luó mì duō gù,dé ā nòu duō luó sān miǎo sān pú tí。
gù zhī bō rě bō luó mì duō,shì dà shén zhòu,shì dà míng zhòu,
shì wú shàng zhòu,shì wú děng děng zhòu。néng chú yī qiē kǔ,zhēn shí bù xū gù。
shuō bō rě bō luó mì duō zhòu,jí shuō zhòu yuē:
jiē dì jiē dì, bō luó jiē dì, bō luó sēng jiē dì, pú tí sà pó hē。

1808111345

中午的酸菜炒飯真是好吃!可惜我不是美食家,也不是作家,無法將它到底有多好吃描述出來。我只能說它好吃到我幾乎要哭出來,如果有一天我離開了這個城市,這個國家,這個世界,我一定會懷念這家的炒飯!希望,我能繼續像以前一樣,每週去吃一次。

使用GnuPG加密文件

GnuPG加密情景

42想發送一條消息給55,並且這條消息只有55能看到。首先42和55都用GnuPG生成自己的公鑰和私鑰。然後55把公鑰交給42,公鑰怎麼傳遞都行,不需要保密。42使用自己的私鑰和55的公鑰來把消息加密,生成加密的消息發給55。55拿到加密的消息後用自己的私鑰解密即可看到原始消息。

安卓使用OpenKeychain

F-Droid或Google Play下載OpenKeychain,導入已有證書(公鑰私鑰均可導入)或生成新的證書。然後通過二維碼或你喜歡的其他方式分享公鑰。發送者使用接收者的公鑰和自己的私鑰加密文件,然後發送加密文件給接收者,接收者用自己的私鑰解開文件。使用OpenKeychain,不僅可以方便的加密與解密文件和文本,更可與K-9 Mail搭配實現加密的郵件。

命令行使用GnuPG

Fedora似乎時預裝了GnuPG和GnuPG2,我們可以用gpg和gpg2來使用它。Termux可以使用pkg install gunpg,用法是一樣的,而且版本是最新版。Fedora26比最新版還差一個小版本。我樂於追新,所以這裡都用gpg2。順便提一下,GnuPG念做“格努皮即”。關於GNU有興趣的朋友可以到GNU作業系統與自由軟體運動了解下。

##生成一對密鑰
gpg2 --full-generate-key
#密鑰種類默認RSA和RSA即可
#RSA密鑰長度默認2048即可
#過期日期默認0即永久,後面會講撤銷方法
#繼續輸入名字、郵箱和注釋
#然後就開始生成密鑰了,這時可以做些移動鼠標敲擊鍵盤的動作幫助程序獲取隨機數
#Termux可能要一兩分鐘,Fedora貌似20秒就搞定了
##導入導出刪除撤銷密鑰
#列出已有的密鑰
gpg2 --list-keys
#列出密鑰的指紋
gpg2 --fingerprint
#為密鑰生成撤銷證書
gpg2 --gen-revoke fred42 > revoke_fred42.txt
#導出一把公鑰,-a表示轉換為可打印字符
gpg2 --export -a fred42 > public.key
#導出一把公鑰,-a表示轉換為可打印字符
gpg2 --export-secret-key fred42 > private.key
#導入一把密鑰
gpg2 --import public.key
#刪除一把公鑰
gpg2 --delete-key fred42
#刪除一把私鑰
gpg2 --delete-secret-key fred42
##使用密鑰服務器上傳搜索與下載公鑰
#Please blame the wall

我的公鑰指紋:E7F7 D0FE C38C 3975 67AA 3FC1 1168 09F0 24AF 514A和公鑰:

-----BEGIN PGP PUBLIC KEY BLOCK-----

mQENBFs9g5gBCADaGfBtFMSsNeGDhej021SuvCWOQUFbLnBxkNUIuolcy564AlA6
AqX4R/HC286Yy3Si4m4bJsNjDQASl79sE99DBi4nL66gko6R+5/o62b/QfuZ0R1N
sUGHNSyfzM65zqTeAcow7ukzRe67q1fMDKMr1/R4uXlpXhTMmVJ9mTvO8zy7hX7B
NT77wdLIP2m/ywI2l2LmeoQMkxzKNWwDa8I1OY36NLrpWd4F4vVIg3MMwazMeHGe
CkWMq60oEkfcy/VSiVxF+4XTv97IZ7/xSi+NzNvt56AJr/VbSMvIyQLkNtIotH4A
3+l3h9ckFwhUr+0DgLzoLWLc0BV215zSYu+hABEBAAG0JmZyZWQ0MiAoRnJlZCBa
ZW5nKSA8aW5uZXI0MkBnbWFpbC5jb20+iQFOBBMBCAA4FiEE5/fQ/sOMOXVnqj/B
EWgJ8CSvUUoFAls9g5gCGwMFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AACgkQEWgJ
8CSvUUohnQgAoXrDgRKN4+NLmX3o2Jlr89TzfgTnS5mr/COEOBQX60rk6AGhXRN6
xH7TXz8DW84JjgWHl5GHuso2qlsdl565KjzaisV3KyVdD/f4wZae2uDnnzkrmQcR
SuusV1iqWaNdArOEi1WC5MDsfCVP8ulILI8rK6YAOwp6Fj/5BGBm2V9gSfjB3eat
WaSoDTeCwoHVcpXtBbFZ8wDiy9IfW9YT7HPmIhwn+pevE6QfBLDseajklvSNgupR
1dp/mXTSlbcTqVMn1hR4yByeiFF5MXakPF0O9bSQLwx0RkybLUychcjoecmT3iIZ
Xm2PCaic3j/XwXsqbsqL5OxoCi3B6Fyrk7kBDQRbPYOYAQgAq73LJIbu24l73zLF
XQfH8XVuRCe94qjKuNYdaJRqd3FJqkNFnIJG1E2hhaXj2z869QNsqcRUXr0R0y6k
vayRZLWQhn/jM99kuCioRKt2X8eak+M8kGip94jaqwNpJbiJa2iJjCnMEgTC/6Cm
R8q37m3/EjIMRRVUFxezkZWWNWo3qklIcPatc92aCOEu3ztZ/xvF/E93CDRl//+p
FPLdO8ba/iVcJszQp8S6opRu8moTz6qEzA70hldv0IZC1/syWAjliFBa9P8Xpq5e
cEoGvaBPgXG6MENeI8j5sv8m9abtHtmZZtGt2MyVKNAbz30cJ8t2k6+fG1Jl3W3q
gi31NQARAQABiQE2BBgBCAAgFiEE5/fQ/sOMOXVnqj/BEWgJ8CSvUUoFAls9g5gC
GwwACgkQEWgJ8CSvUUqY0QgAm3ldNHrdv1LIhP/J3WJgqlWK4/aW4p/hgtfJSlje
2N9Kgs5CeBdW3m9AdgGQNfpmXPDaRM5EaaNo87QH6z8BLfxtCltEhmiMfy1CjEG3
Hu/gPcQ+thwHQwH+7ejmafQAGmljDgjyB+ZMUej2nwLagh2uGhsls/xGI2EJxw8l
W/Gk8sh3Fqir2mqoK4/OcFzdvo4MhoT2m8zjEH3OVTjyNzekL5FNLhb61RL2aAsV
mgA7d0YXIh/OJ9dEVMLy7xr0eP+UD7Mr/zJjX18+egDjdfMAfM7XERyq9OPiCdpt
v67laBzdE3m99lgFkqwap9O6lzIdV06LPx6oXZzpbJq9ww==
=vA+d
-----END PGP PUBLIC KEY BLOCK-----

使用GnuPG生成隨機密碼

生成一個16位的隨機密碼

gpg2 --gen-random -a 0 16 | head -c 16

也可將下面代碼存為password.sh,運行./password.sh 16來獲得。

#!/bin/bash
if [ $# -eq 0 ]
then echo "請指定待生成密碼的長度"
else gpg2 --gen-random -a 0 $1 | head -c $1
echo ""
fi

18070313

儘管有機器縫製的靴子並且價格低廉,鞋匠在村裡卻依然站得住腳,顧客還為數不少。在地裡幹活的人需要防水的靴子,所以必須要手工縫製。鞋匠在勞動者之中生活了一輩子,比那些城裡的手藝人更明白他們想要的是什麼,也更明白如何用釘子撐起鞋底,如何給鞋掌和後跟釘上金屬片——靴子最後被弄得簡直如甲胄一般。就連這裡的小孩子也穿靴子,不過以他們的個頭而言,靴子過於沉重了。很多自己做工的農場主也會把自己的靴子送到鞋匠這裡來修。和村裡的鞋匠打交道時未已需要記得的一點就是:你若是想要一雙靴子,需要提前六個月定製,否則一定會失望而歸的,因為他做雙鞋的時間比得上船工造船的時間那麼久。


……己的一整套獨特的音節,它唱出的每個音符都有着明顯不同的含義,可以輕易區別開來。

它的哨音覆蓋了各個音域,從尖利、刺耳的高音到低沉、空洞的低音。它能唱出完整的全音階,既有“顫音”、囀聲,也有回蕩不已的震顫音,花樣繁多。它用一種獨特的咯咯聲作裝飾音,那聲音就好像是從它的胸腔深處發出來的,此時它筆直地站立在煙囪邊上,不停地撲騰着翅膀。別的鳥兒唱歌似乎單純為了享受唱歌的愉悅,最多不過是想吸引那些藏在灌木叢裡的異性同伴。但八哥會對着它的同伴滔滔不絕——我覺得這樣說沒錯,八哥在視線之內沒有同伴,孤單一人時從不唱歌。它真的是在和它的同伴說話。我幾乎可以聽懂那些對話並大致猜出意思。


到了傍晚,夜色漸濃的時候,草地上也陷入一片寂靜,這時候兔子就會出來與同伴追逐嬉戲。兩隻兔子相互玩鬧時,有一隻會猛竄出去十一二碼遠的距離,然後低頭開始吃草,好像完全不在意另一隻兔子似的。第二隻兔子也開始吃草,但同時偷偷地向前移動——不是直線移動,而是斜插過去,一邊假裝吃草一邊朝第一隻兔子摸過去。突然,它猛地向前一撲,但是第一隻兔子實際上一直在用眼角的餘光偷偷瞥視,見狀就風一般地跑掉了。有時,它也會轉過來面對第二隻兔子,平地彈跳起一尺來高,乾淨利落地從後者上方跳過去。有時候,兩隻兔子甚至一同歡快地蹦跳起來。

《維爾特郡的鄉野生靈》——[英] 理查德·傑弗里斯