18060620

【字形本義】甲骨文「命」和「令」是同一個字,表示號令、指使的意思,金文、楚簡、小篆增益「口」旁,強調用口來發施號令。

【相關成語】「安身立命」:「安身」,居處得以容身。語出《呂氏春秋.有始覽.諭大》。「立命」,修身養性以奉天命。語出《孟子.盡心上》。「安身立命」指居處得以容身,生活便有著落,精神上亦有所寄託。


安身立命,何其难也。

網站搬家

用了兩年Hostodo,5月底收到郵件說要升級機房,將會提供更好的服務,盡量平滑升級不導致停機。升級後IP將會發生變化,如果想保留老IP可以來發ticket。實際情況是VPS忽然就關閉了,並且通過後台無法啟動。發ticket問IP的事情,得到的答覆是不能在不收費的情況下幫客戶保留舊IP。VPS一關就是2天,沒有任何辦法。第三天網站服務上了,說明VPS啟動了,但是中國並不能訪問,客服回復說不是被ban,是他們網絡還沒調好。然後又收到郵件說新的網頁後台可以看到新IP。打開之後登錄提示密碼錯,嘗試找回密碼提示郵箱不存在。這就這麼折騰着……

好在花落無聲兄弟再次慷慨相助,提供了Vesta空間給我寄存網站。由於原來也是用Vesta面板,搬家過程非常順利。而且新版Vesta面板集成了LetsEncrypt,一鍵即可獲得SSL證書方便的很。新服在香港,速度也有提升。遇到一點小問題是,搬過來後,中文url亂碼,只需要重新設置文字鏈接類型,再選回文章名格式就好了,不需要改動wordpress文件。

使用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

18050717

國家公園這個小鎮確實比較有旅遊景點的氣息,物價比其他地方貴。我們的兩張張電話卡,一張原生2度,一張香港漫遊都完全沒有網絡服務。住宿提供2GB流量的WiFi,速度和質量也都一般。比較驚喜的是火車站的餐館,口味非常不錯,每餐20塊在這裡真算是即合理又便宜,所以我們每天晚上都去吃,Dori魚真的很棒!另一個要吐槽的地方是這裡的穿梭巴士,基本都是單人30塊起,比如去最近的whakapapa,兩個人要75,所以我們本打算走著去,不過剛上路就碰到好心人主動停車詢問我們是否需要搭車,於是去程就坐到了順風車。走完兩個Tama lake回到whakapapa的遊客中心一問,回國家公園要50塊,心一橫走了回來。促使我們走回來的其中一個因素就是,火車站餐館那麼好吃才20……

除卻沒有網絡,物價偏高和沒有公共交通,這裡的景色絕對是值得的!火山、草原、森林、峽谷、湖泊都震撼人心,每一天都不虛此行!

python守護tomcat

下面腳本實現定時檢測tomcat是否還活着,如果死了就啟動它,如果活太久了(24小時)就殺掉再啟動。

#!/data/pythons/p35/bin/python
# -*- coding: utf8 -*-

#定時任務 /etc/crontab
#*/5 * * * * root (/data/pythons/p36/bin/python /data/pythons/scripts/serviceDeamon.py tomcat-8780)

import psutil,time,datetime,subprocess,sys

def log42(logFile,logText):
    ts = int(time.time())
    dt = datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S')
    with open("/tmp/"+dt[0:10]+logFile+".log", "a") as myfile:
        myfile.write(dt+" "+logText+"\n")
        
def startByCmdline(cmdlineKeyword): 
    command = 'export JAVA_HOME=/usr/local/java/jdk1.7.0_71;/bin/sh /data/web/'+cmdlineKeyword+'/bin/startup.sh'
    status,output = subprocess.getstatusoutput(command)
    log42('service'+cmdlineKeyword,"started"+ str(status))
    
def killByCmdline(cmdlineKeyword):    
    alive = False
    for proc in psutil.process_iter():
        try:
            pinfo = proc.as_dict(attrs=['pid', 'name','cmdline','create_time','ppid'])
        except psutil.NoSuchProcess:
            pass
        else:
            if any('/'+cmdlineKeyword in s for s in pinfo['cmdline']):
                alive = True
                aliveTime = time.time()-pinfo['create_time']
                if aliveTime > 60*60*24:        
                    log42('service'+cmdlineKeyword,"old enough "+str(aliveTime/60))
                    p = psutil.Process(pinfo['pid'])
                    p.kill()
                    time.sleep(3)
                    startByCmdline(cmdlineKeyword)
                else:
                    log42('service'+cmdlineKeyword,"too young "+str(aliveTime/60))
            else:
                pass
            
    if not alive :
        log42('service'+cmdlineKeyword,"died")
        startByCmdline(cmdlineKeyword)
                
if __name__ == '__main__':
    #'tomcat-8780'
    if str(sys.argv[1]).__contains__('tomcat') :
        killByCmdline(str(sys.argv[1]))
    else:
        log42('service',"wrong param")
        print('param like:tomcat-8780')

18041314

他的言談從容、耐心,甚至可以說專業。“我再重複一遍,我是美國人,職業是工程師。蘇聯政府熱情邀請了一批人來幫助修建莫斯科地鐵,其中就有我。我們大約有五十個人。那是九年或者十年前的事了。他們在1936年逮捕了我,堅信我是一個職業的外國間諜,判了我二十年。”他喝完咖啡。我們還像一對傻子一樣看著他。“我去還杯子,然後我們一起回營房吧。”


那些在森林裡工作的人對我們的新特殊待遇表示強烈不滿。他們不止一次地問我:怎麼能允許自己為俄國士兵做滑雪板?但我從來沒有爭辯什麼。我自己的感覺是,在一個西伯利亞的營地裡,你敢的任何事在某種程度上都是為蘇聯服務,因此你也可以在能做的工作中選擇自己最感興趣的。感興趣是一方面,當然,待遇也不錯。由於麵包在我們的生活中佔據的高貴地位,要是那些未受優待的大多數沒有敵對的議論,反而才不正常呢。我把多得的菸絲分了,又拿了一些多得的麵包給了病人。很多做滑雪板的其他囚犯也這麼做了。單數,不滿還在繼續。很奇怪,這反映了一個無階級社會的主要倡導者們竟然這麼早就成功地把工人分成了兩個階級,並且通過對一個階級的物質獎勵,清楚地標識出這種差異。


而這些藏書中的驕傲,是《偉大的布爾什維克共產黨黨史》,精裝兩卷本,以及一本完整版的俄國憲法。我花了很長時間饒有興趣地讀了這兩部作品,然後得出結論:哪怕二十五年之後,我改信俄國的共產主義這類信仰的機率也很渺茫。


我用俄語跟其中一個人交談。他可能有六十歲,但也很難說,畢竟他們是蒙古人種。他告訴我,紅軍士兵找到了他們的冬營,要他們趕這趟路,其實他們不願意來。他估計,他們快速行進了將近一百英里才跟我們碰上頭。他們拉著士兵一起來的,每架雪橇兩個。他給我講馴鹿,說不能騎在背上,因為那個部位很虛弱,但脖子和肩部很壯,一個奧斯加克人可以撐長桿——就是他們趕雪橇用的那種柔韌的刺棒——跳上起,騎在上面,這樣牲畜就不會有負擔,也不易疲勞。他告訴了我他的名字,但是在我這個只熟悉西方和俄國名字的腦袋裡沒有留下任何印象。


我們拖着沉重的步子走出了這片淺凹地,選定了一顆大樹的基部作為休息地。我們把雪挖掉,直挖到樹根,打掃出一塊幾碼見方的空地。我們用旁邊的雪壘起一道堅固的矮牆。科勒門諾斯用斧子砍了些樹枝,我們用樹枝在上空排成密密麻麻交織的網狀,再堆上雪,屋頂便完成了。這是我們再西伯利亞一路艱苦學來的一堂課:避開風,因為風就是殺手。那位奧斯加克老人告訴過我:“雪?誰怕雪啊?只要讓它環繞着你,你就可以暖暖和和地睡啦,就像睡在羽絨床上。”


……膀放在樹根底下,往上頂,但是連他也無法把鹿角弄出來。最後,他又拔出了斧子,把鹿頭砍了下來。我們把鹿身拖到一塊空地上,將它剖開,小心地剝皮。

事情發生得非常快,一陣忙亂地又殺又切,我們都沒顧上說幾句話。最後,馬科夫斯基對我們大家說,眼睛卻盯着史密斯先生:“我們要怎麼處理這塊大東西?”我雙手直到胳膊都沾滿了血。聽他這樣問,我才停下切一條後腿的手頭工作,站起來。“我們最好開個會。”美國人說。

會議一開始,史密斯先生表示,我們帶不了所有的肉,也仍不起任何一點兒。所有人腦子裡都在想,我們當天還有計劃好的二三十英里路要走。我們試着估算能帶走的最大肉量,但似乎還是無法全部帶走。馬欽科瓦斯提出了一個顯而易見的解決辦法。“我們一定不能浪費食物。”這個立陶宛人說,“所以我們只有一個解決辦法。我們必須在這裡待上二十四小時,能吃多少肉就吃多少。剩下的我們應該能帶得了。”扎勒舔着嘴唇,放言自己相當確定能夠幫助大家減輕負擔。“都同意嗎,先生們?”史密斯先生問。大家齊聲贊同。

帕魯舍維奇自己忙着收集木頭、堆柴、生火,我們其餘人則搭起一個庇護所,並完成了屠宰。一個小時之後,我們眼前便出現了穿在木頭烤棒上、在火苗上烘烤的上等鹿肉塊。融化了的冰水和麥糊粥加了少許的肝和嫩肉,冒着熱氣,散發出陣陣香味。我們等不及整塊肉烤熟了。我不停地把一片片肉切下來,大家傳着吃。肉嚼起來有點費勁,但是很好吃。帕魯舍維奇沒有牙,就借了我的刀子,把他那份切成小塊,後來我們還讓他第一個喝稀粥。我們吃得停不下嘴。肉上的油淌下來,流到鬍子里。我們……


以上均節選自波蘭作家斯拉沃米爾·拉維奇的《回來的路》(Slavomir Rawicz The Long Walk:The True Story of a Trek to Freedom

18040614

這很荒謬。阿伽·加安無法相信這一切是真的。這是他的村莊。他的家人葬在這裡。他們為何如此對待他?革命使人們最糟的一面顯露出來。你無法再相信任何人,甚至包括兄弟姐妹。他讀過很多關於國王生活的書,所以知道這種人一直存在。背叛和邪惡是人類本性的一部分。

《大巴扎》