fla文件損壞

端午節的第一天,Emanon在家用Flash畫了一天動畫線稿。晚上去吃了樓下新開的小火鍋店,口味一般。吃完飯感覺外面空氣不錯,還去深大湖邊遛了一圈。

回家後發現flash卡的不幸,幾乎無法動彈。Emanon有隨時保存文件的習慣,所以打算關掉Flash但是關閉也沒反應。等了一會兒,有反應了,彈出提示詢問是否保存,在本能的點擊“保存”按鈕後Flash又回到了假死狀態,期間又有過彈窗詢問是否關閉程序,選了關閉。

使用Win10的這兩個月,給我倆帶了無盡的痛苦,比如開機後時間總是不對,比如無線網卡總是總是莫名其妙斷線,比如顯示器完全隨機的出現黑屏……這些問題在另一塊硬盤的Ubuntu上都沒有出現,我只能懷疑win10。至於上面導致電腦卡的動不了,甚至文件管理器和關機都卡到爆的原因,也是windows在執行一個Antimalware Service Executable的進程,占滿了CPU。由於最後一次保存失敗,所以之前的fla文件只寫入了七百KB就斷掉了,fla文件便損壞了。

在網上找到一些搶救fla文件的方法都失敗了,因為我這種是損壞的太嚴重了。搶救方法有:讓朋友用高版本Flash打開,如果能打開則可另存檔案後發回來。或者複製一個fla文件,變更fla文件後綴名為zip,然後解壓開後嘗試找到並修正其中xml文件的錯誤。除了上面的方法還搜索到有種軟件號稱可以把swf轉換成fla,病急亂投醫,不僅沒有把fla轉會來反而中了使Win10感染了病毒。這裡要嚴重吐槽下Win10自帶的病毒防護軟件Windows Defender,我即使進行了全盤掃描,也未能根除感染的病毒。雖然雙系統重裝Windows比較麻煩,但這已經無法阻擋我返回Win7的決心了。

最後把線稿的輸出放上來緬懷下(手機應該是看不了swf):

未備案域名被拒絕解析緊急處理

未備案域名的80端口被停止解析,業務被中段。緊急將域名指向香港服務器,並在香港服務器nginx做如下轉發即可:

server {
    server_name manage.wupo.info;
    location / {
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://1.2.3.4:8888;
    }
    access_log logs/manage.wupo.info_access.log;
}

如果目標地址仍是80,需要注釋掉proxy_set_header Host $host;這句,否則還是訪問不了。

nginx記錄特定請求的日誌

通過nginx的access log可以記錄訪問日誌,如果只想記錄特定的某條請求,例如所有以/get開頭的請求,可以這麼配置:

map $request $loggable {
    ~/get* 1;
    default 0;
}

server {
        listen 8085;
        server_name 127.0.0.1;
        charset utf-8;

        access_log logs/flask.access.log combined if=$loggable;
        location /  { try_files $uri @yourapplication; }
        location @yourapplication {
                include uwsgi_params;
                uwsgi_pass 127.0.0.1:3031;
        }
}

如果要排除,只記錄以/get開頭的請求,map可以這麼寫

map $request $loggable {
    ~/get* 0;
    default 1;
}

修改之後可以通過 tail -f ../logs/flask.access.log實時查看log的變動。

Flask簡易搭建

最近用python寫了個小服務,既然都用python寫了,不如順便用python的服務器來運行,簡單搜索後決定用Flask+uwsgi+nginx來實現。virtualenv的安裝就不多說了。

#新建一個python3虛擬環境emailApp
mkdir pythons
cd pythons
virtualenv --python=/usr/local/bin/python3.5 emailApp
source emailApp/bin/activate
#安裝uwsgi和Flask
pip install uwsgi Flask
cd emailApp
#新建emailApp1.py
#!/root/42/pythons/emailApp/bin/python
# -*- coding: utf8 -*-

from flask import Flask,request
import json

app = Flask(__name__)

def getTS():
    TS={}

    nowTS=int(time.time())
    TS['当前时间戳']=str(nowTS)
    localTimeString=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(int(nowTS)))
    TS['服務器時間']=str(localTimeString)
    gmtTimeString=time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(int(nowTS)))
    TS['GMT時間']=str(gmtTimeString)
    localTSToday=int(time.mktime(time.strptime(localTimeString[:10], '%Y-%m-%d')))
    TS['服務器今天時間戳']=str(localTSToday)
    print('服務器今天時間戳'+str(localTSToday))
    TS['GMT今天時間戳']=str(localTSToday+time.timezone)

    return TS

@app.route('/')
def hello_world():
    return 'Good luck!'

@app.route('/taskCms/service/getTS')
def checkTS():
    TS = getTS()


    return json.dump(TS)
            
if __name__ == '__main__':
#     app.debug = True
#     app.run(host='0.0.0.0',port=8080)
    app.run()
#此時執行
python emailApp1.py
#即可在本地http://127.0.0.1:5000/訪問到服務了。
#Ctrl+C關閉測試,新建nginx站點配置文件emailApp.conf
#nginx站點配置通常在/etc/nginx/conf.d
server {
        listen 8042;
        server_name 127.0.0.1;
        charset utf-8;

        location /  { try_files $uri @yourapplication; }
        location @yourapplication {
                include uwsgi_params;
                uwsgi_pass 127.0.0.1:3031;
        }
}
#測試nginx配置文件是否有誤
nginx -t
#重新加載nginx
nginx -s reload
#此時訪問你的ip加端口號8042,出現502 Bad Gateway則證明nginx已配置好
#若出現訪問超時則可能是有防火牆阻擋
#接下來在項目目錄下新建config.ini作為uwsgi的配置文件
[uwsgi]
socket = 127.0.0.1:3031
chdir = /root/42/pythons/emailApp
master = true
binary-path = /root/42/pythons/emailApp/bin/uwsgi
virtualenv = /root/42/pythons/emailApp
module = emailApp1:app
processes = 2
threads = 4
#使用uwsgi運行Flask程序
/root/42/pythons/emailApp/bin/uwsgi --ini /root/42/pythons/emailApp/config.ini
#如果遇到uwsgi: error while loading shared libraries: libpcre.so.1可嘗試
ln -s /usr/local/lib/libpcre.so.1 /lib64
#正常的話此時應該能通過8042訪問到服務
#開機啟動我使用的centos6自帶的Upstart
nano /etc/init/uwsgi.conf
# simple uWSGI script

description "uwsgi tiny instance"
start on runlevel [2345]
stop on runlevel [06]

respawn

exec /root/42/pythons/emailApp/bin/uwsgi --ini /root/42/pythons/emailApp/config.ini

最後可以通過screen執行uwsgi,然後退出服務器。這樣就完成了一個簡單Flask項目的搭建。Flask就是簡單快速。

如果是通過Upstart自動啟動的,可以通過initctl reload uwsgi和initctl restart uwsgi來重啟uwsgi。


Connection reset by peer鏈接被中斷

過了幾天發現接口不穩定,有時能正常返回數據,有時出現Connection reset by peer鏈接被中斷。從firebug里看發現數據返回有時是先返回個0,就是什麼也沒有然後真是數據才回來,這是瀏覽器已經報錯了。此時可嘗試在uwsgi配置中增加buffer-size=65535和post-buffering = 1。以及在nginx的conf中設置

http{
    ...
    keepalive_timeout  0;

    uwsgi_read_timeout 86400;
    uwsgi_send_timeout 86400;
    ....

}

意大利簽證

意大利簽證中文官網里詳細的申請步驟、所需材料和所需材料格式(如保險單的要求),不必去旅遊網站亂搜。

條件方面簡單概括下要求就是要有一份穩定的工作和足以支付本次旅行的資金,行程單要認真寫。首次辦理申根簽證需要在簽證中心錄十指指紋,所以沒有錄過指紋的就不要想代辦了。辦理順序就是自己根據所需資料準備材料》去簽證中心遞交材料並錄指紋》等待大使館發回簽證到簽證中心》領取簽證。順便一提,夫妻通行也是和單個辦理是一樣的,各自準備自己的結婚證複印件,即使是相同的材料也都需要各有一份。

我們的簽證辦理的挺順利的,雖然中間接到電話調查有點怕怕,但還好順利出簽。電話調查的應對秘訣就是誠實。

…… 2/16/2017.(到簽證中心交材料錄指紋)

Visa application ref no. SHEZ/xxxxxx/xxx/xx is being processed at the Italy Embassy/Consulate on 2/17/2017.(材料送抵大使館)

Visa application ref no. SHEZ/xxxxxx/xxx/xx – Your application has been processed and is in transit to the Italy Visa Application Centre on 2/22/2017.(大使館處理完畢)

Visa application ref no. SHEZ/xxxxxx/xxx/xx – Your processed passport has been dispatched to the Italy Visa Application Centre on 2/24/2017 and is ready for collection.(簽證送抵簽證中心)