我打算在Google Compute Engine上建置Redis Slave個體群組,並使用GCP的負載平衡服務來連接,但是碰到一個問題,Health Check永遠都是失敗,導致個體群組裡頭的VM一直被重建。
檢查了許多地方,確認Health Check的IP可以連進VM,從netstat -an也可以看到連線。使用nc -l -p 6379的確也能看到Health Check送進來的要求字串 PING\r\n,但是透過redis-cli下monitor指令卻沒看到。
我在Health Check設置的要求字串是 PING\r\n,檢查字串是 +PONG,用nc的確是看到傳進來的是PING\r\n....等等,換行字元應該不會顯示?然後又用PYTHON參考別人寫的範例做了一個TCP SOCKET SERVER,結果顯示出來的是 PING\\r\\n...... Orz。redis一定要接收到換行符號才算接收到指令,否則就會停在那裡。看起來GCE的Health Check會過濾特殊符號。
Google Groups上的GCE論壇也有人有相同的問題,Google的人回答都指向stackoverflow上的某個連結:
https://stackoverflow.com/questions/43228878/health-check-to-detect-redis-master-from-google-tcp-load-balancer
下面回答得很長,其實結論是在同一台VM裡頭去跑另一隻程式來處理Health Check請求與回傳結果,我最後是用PYTHON寫了一個TCP SOCKET SERVER,當Health Check傳入PING,就使用subprocess去跑redis-cli PING,然後把結果回傳。
2017年12月13日 星期三
2017年12月11日 星期一
在mora.jp買音樂
最近在玩人中之龍 極2的酒店經營部份,在編輯酒店小姐的裝扮時,總是會播放歌曲『As You Like』,還蠻好聽的。這首歌曲有收錄在 人中之龍 零 OST Side A 裡,查了一下只能買CD或者數位檔案,像KKBOX跟Spotify都沒有提供。整張專輯(Side A)要1500日圓,可是我只對這首歌有興趣,搜尋一下發現mora.jp有在賣單一曲目,便想試看看購買,果然一按下結帳就出現不開放日本以外購買的警告。
不過最後我還是購買成功了,我使用了以下的步驟:
不過最後我還是購買成功了,我使用了以下的步驟:
- 把瀏覽器的語言改成日文優先(這個可能不需要)
- 使用日本的IP進入mora.jp(VPN)
- 付款方式使用Amazon Pay(需要有日本Amazon帳號)
2017年11月11日 星期六
UAP接在MikroTik RB750Gr3後無法透過DHCP獲得IP的問題
最近借到一台RB750Gr3,想要取代我原本使用的ASUS RTN-56U。我的無線網路是使用UniFi UAP AC Lite。把RB750設置好之後,把UAP接上去卻發現手機平板都無法連接上,UniFi Controller也顯示adoption failed,而UAP的IP也跟DHCP設置的網段不同。
花了些時間搜尋資訊,發現三月就有人碰到同樣的問題,解法是在RouterOS的橋接設定,把STP改成none。
https://forum.mikrotik.com/viewtopic.php?t=116963&start=50
花了些時間搜尋資訊,發現三月就有人碰到同樣的問題,解法是在RouterOS的橋接設定,把STP改成none。
https://forum.mikrotik.com/viewtopic.php?t=116963&start=50
2017年10月30日 星期一
2017年10月26日 星期四
ZeroCat
用Django寫的仿雙葉系統的貼圖討論板,程式碼預計會在近日內公開。
Demo: https://zerocat.pastwind.org/
系統設置:
Demo: https://zerocat.pastwind.org/
系統設置:
- Ubuntu 16.04.2 @ Linode
- NGINX
- uwsgi
- virtualenvwrapper
- Python 3
- Django
- Bootstrap 4
- Sqlite
- 貼文者識別
- 張貼文章
- 張貼回覆
- 刪除文章與回覆
- 灌水限制
- 上傳檔案大小限制
- 依照設定的空間限制,自動刪除較舊的文章與圖檔
- reCaptcha
- ...還沒想到
2017年10月5日 星期四
ssh登入緩慢的問題
放個假回來系統又怪怪的... Orz
今天一進公司就發現要使用SSH連到伺服器變得很緩慢,要等很久才會顯示登入提示,輸入密碼後又要等很久才會到登入後的畫面,比較嚴重的情況還會出現連線逾時。
連線的client有Windows跟Linux,無論連線用的軟體都有一樣的情況。Server的部份主要是Debian 8跟Centos 7有這種情況,Ubuntu 14.04跟16.04都不會。比較有趣的是在Server端在同一個網段互相連線也不會有連線緩慢的情況,這讓我懷疑是DNS解析問題。
可是那些連入緩慢的設備,仔細檢查過DNS解析完全沒有問題,本來認為跟軟體更新有關,但是其中有一台已經五個月沒更新,安裝Centos 7的設備也有同樣的問題。
詢問Google大神後,其他人碰到這種情況就是去修改openssh server的設定檔,把UseDNS改成no(預設為yes),我試著這樣修改並重啟ssh後就恢復正常。
跟DNS有關聯的問題應該是這幾天的dnsmasq漏洞,可是我的Server是直接查詢Hinet DNS啊...。UseDNS選項是去反查連入IP的網域名稱,經測試Hinet DNS的IP反解析功能並沒有問題。
今天一進公司就發現要使用SSH連到伺服器變得很緩慢,要等很久才會顯示登入提示,輸入密碼後又要等很久才會到登入後的畫面,比較嚴重的情況還會出現連線逾時。
連線的client有Windows跟Linux,無論連線用的軟體都有一樣的情況。Server的部份主要是Debian 8跟Centos 7有這種情況,Ubuntu 14.04跟16.04都不會。比較有趣的是在Server端在同一個網段互相連線也不會有連線緩慢的情況,這讓我懷疑是DNS解析問題。
可是那些連入緩慢的設備,仔細檢查過DNS解析完全沒有問題,本來認為跟軟體更新有關,但是其中有一台已經五個月沒更新,安裝Centos 7的設備也有同樣的問題。
詢問Google大神後,其他人碰到這種情況就是去修改openssh server的設定檔,把UseDNS改成no(預設為yes),我試著這樣修改並重啟ssh後就恢復正常。
跟DNS有關聯的問題應該是這幾天的dnsmasq漏洞,可是我的Server是直接查詢Hinet DNS啊...。UseDNS選項是去反查連入IP的網域名稱,經測試Hinet DNS的IP反解析功能並沒有問題。
2017年9月22日 星期五
foobar2000使用usb dac播放音樂
因為最近買了KECES的DA151MK3,想研究一下怎樣的設置才能得到最好的效果。
軟體需求
軟體需求
- Windows 7以後的作業系統(其實是Vista以後,但是誰還用Vista?)
- foobar2000最新版
- WASAPI plugin
- 在Preference/Playback/Output/Device裡選擇『WASAPI (event):喇叭 (USB DAC)』。選擇DS (Direct Sound) 的話有可能會受Windows Mixer與Resampler影響,而WASAPI則是直接輸出未更動的位元流給USB DAC。WASAPI支援兩種模式:push跟event,音效裝置可能只支援其中一種方式,大多數裝置都支援event,如果不支援再改用push,可參考WASAPI plugin的文件。
- 下面的Output data format要依照硬體規格設置,否則會出現無法播放,格式不支援的錯誤。以DA151MK3為例,最大支援到16-bit。至於Dither是否要啟用,如果播放的音樂需要轉換,如24-bit->16-bit則可以開啟,但是HydrogenAudio的Wiki上則認為,大多數人其實聽不出來差異,是否需要開啟則是依照喜好決定。
- 在Playback/DSP Manager/Active DSPs裡,如果播放的音樂檔案格式硬體不支援,則需要啟用Resampler做轉換。以DA151MK3為例,播放格式為24bit/96kHz的檔案,就需要使用Resampler並設置為44或48kHz,否則同樣會出現音訊裝置無法支援的問題。以內建的Resampler來說,SSRC的品質比較好但是硬體需求較高,PPHS雖然比不上SSRC但是也比Windows的Resampler好太多。這部份也是依照喜好決定。如果不須轉換則無須使用,減少Resampler所帶來的影響。
2017年8月24日 星期四
[筆記] 從docker轉換到rkt
※下文完全是個人筆記,不保證其正確性與完整性。
docker images -> rkt image list
docker pull -> rkt fetch
example: rkt --insecure-options=image fetch docker://nodered/node-red-docker
如果要指定tag可以用 name:tag 的格式,如 rkt --insecure-options=image fetch docker://ubuntu:16.04
docker run -> rkt run
example: rkt run --port=1880-tcp:1880 registry-1.docker.io/nodered/node-red-docker:latest
在docker上,如果要做容器到主機的埠對應,是用-p HOSTPORT:EXPOSE,rkt的話則是看EXPOSE的設置加上通訊協定,像nodered使用tcp 1880,就會寫成--port=1880-tcp:1880,格式是--port=EXPOSE-PROTOCOL:HOSTPORT。
docker run -d -> systemd-run --slice=machine rkt run
example: systemd-run --slice=machine rkt run --port=1880-tcp:1880 registry-1.docker.io/nodered/node-red-docker:latest
因為rkt沒有實做daemon管理,沒辦法像docker一樣把服務放到背景執行,須使用作業系統的init daemon來管理。對於一般的開發者來說學習的成本比較高,但對於系統管理者來說有著穩定、易於管理與一致性的優點。如果要為執行的服務命名,而不是使用自動產生的名字,可加上--unit參數。如systemd-run --slice=machine --unit=nodered rkt run --port=1880-tcp:1880 registry-1.docker.io/nodered/node-red-docker:latest
docker ps -> machinectl list
在Ubuntu上要先安裝systemd-container才會有machinectl這個指令。有個奇怪的情況,安裝完後執行的pod才會列出,安裝前已經執行的pod不會列出。
docker ps -a -> rkt list
docker rm -> rkt rm
example: rkt rm e77323df
rm後面帶的是UUID,可以從rkt list看到。rkt的rm會把pod徹底刪除,不像docker只是從列表上隱藏。
docker stop -> rkt stop
example: rkt stop e77323df
stop後面帶的是UUID,可以從rkt list看到。
docker exec -> rkt enter
example: rkt enter e77323df /bin/bash
Q: 在rkt list看到已經啟動過的pod,可以像docker start一樣的方式再次啟動嘛?
A: 目前沒有實做此功能,但有考慮 issue:2087。
Q: 在pod裡頭掛載host的目錄?
A: 使用--volume與--mount,參考
example: rkt run --port=1880-tcp:1880 --volume data,kind=host,source=/tmp/123,readOnly=false --mount volume=data,target=/tmp/123 registry-1.docker.io/nodered/node-red-docker:latest
先用volume export一個目錄給pod,然後再用mount把volume掛載到特定目錄
docker images -> rkt image list
docker pull -> rkt fetch
example: rkt --insecure-options=image fetch docker://nodered/node-red-docker
如果要指定tag可以用 name:tag 的格式,如 rkt --insecure-options=image fetch docker://ubuntu:16.04
docker run -> rkt run
example: rkt run --port=1880-tcp:1880 registry-1.docker.io/nodered/node-red-docker:latest
在docker上,如果要做容器到主機的埠對應,是用-p HOSTPORT:EXPOSE,rkt的話則是看EXPOSE的設置加上通訊協定,像nodered使用tcp 1880,就會寫成--port=1880-tcp:1880,格式是--port=EXPOSE-PROTOCOL:HOSTPORT。
docker run -d -> systemd-run --slice=machine rkt run
example: systemd-run --slice=machine rkt run --port=1880-tcp:1880 registry-1.docker.io/nodered/node-red-docker:latest
因為rkt沒有實做daemon管理,沒辦法像docker一樣把服務放到背景執行,須使用作業系統的init daemon來管理。對於一般的開發者來說學習的成本比較高,但對於系統管理者來說有著穩定、易於管理與一致性的優點。如果要為執行的服務命名,而不是使用自動產生的名字,可加上--unit參數。如systemd-run --slice=machine --unit=nodered rkt run --port=1880-tcp:1880 registry-1.docker.io/nodered/node-red-docker:latest
docker ps -> machinectl list
在Ubuntu上要先安裝systemd-container才會有machinectl這個指令。有個奇怪的情況,安裝完後執行的pod才會列出,安裝前已經執行的pod不會列出。
docker ps -a -> rkt list
docker rm -> rkt rm
example: rkt rm e77323df
rm後面帶的是UUID,可以從rkt list看到。rkt的rm會把pod徹底刪除,不像docker只是從列表上隱藏。
docker stop -> rkt stop
example: rkt stop e77323df
stop後面帶的是UUID,可以從rkt list看到。
docker exec -> rkt enter
example: rkt enter e77323df /bin/bash
Q: 在rkt list看到已經啟動過的pod,可以像docker start一樣的方式再次啟動嘛?
A: 目前沒有實做此功能,但有考慮 issue:2087。
Q: 在pod裡頭掛載host的目錄?
A: 使用--volume與--mount,參考
example: rkt run --port=1880-tcp:1880 --volume data,kind=host,source=/tmp/123,readOnly=false --mount volume=data,target=/tmp/123 registry-1.docker.io/nodered/node-red-docker:latest
先用volume export一個目錄給pod,然後再用mount把volume掛載到特定目錄
2017年8月23日 星期三
為什麼PS4下載遊戲這麼慢?(以及可能的改善方式
原文:https://www.snellman.net/blog/archive/2017-08-19-slow-ps4-downloads/
很多PS4玩家都有一個疑惑,為什麼從PSN下載遊戲超慢,但是使用Local Proxy卻會變快?有人對此做了實驗,得到以下結論:
很多PS4玩家都有一個疑惑,為什麼從PSN下載遊戲超慢,但是使用Local Proxy卻會變快?有人對此做了實驗,得到以下結論:
- 作業系統本身會依照正在執行的遊戲或APP調整網路細部設置,這些調整只針對PSN下載,最少會慢5倍,最多會慢100倍,不管那些程式是跑在前景或背景都一樣。
- 休眠模式是否會全速下載要看是否在休眠時關閉遊戲與APP。
- 在下載PSN遊戲時關閉所有執行的程式,能夠確保系統以最高速度下載。但是PS4的界面不太容易讓使用者確認哪些程式跑在背景裡。
2017年8月16日 星期三
更新到Firefox 55反而變慢的情況
如果更新到Firefox 55之後出現開網頁停滯或變慢的情況,試試調整『偏好設定/一般』的效能選項,預設是使用推薦的效能設定,建議關閉並修改內容處理數量限制跟CPU核心數一致,如果是4核心CPU就選4。
2017年7月25日 星期二
UPS抱怨文(?)
前陣子週末午後下大雷雨時,我家連續跳電兩次。我有三台UPS,兩台是CyberPower CP1000AVRLCD,分別由兩套PC連接著。另一台是APC BC1100U-TW,只跟NAS接在一起。連續跳電兩次後,CyberPower還是正常運作,但是APC就當機了,蜂鳴器還發出了非常大的聲音,最後只能拆電池電源接頭才停止。
後來市電恢復後,重新把APC接上,還是能夠運作,但是發現APC運作時產生的廢熱溫度很高,CyperPower就只是溫溫的而已,真怪。
後來市電恢復後,重新把APC接上,還是能夠運作,但是發現APC運作時產生的廢熱溫度很高,CyperPower就只是溫溫的而已,真怪。
2017年7月24日 星期一
上週買了新電腦,做個紀錄
CPU: AMD RYZEN 7 1700 (使用盒裝風扇)
RAM: KINGSTON HyperX Fury 2400 16G (半年前買的)
M/B: ASUS B350M-A
SSD: INTEL 600P 256GB (半年前買的)
HDD: HGST 1TB (舊的)
VGA: ASUS STRIX GTX-1060-DC2OC 6G
CASE: Antec P50
POWER: COUGAR VTE 500
RAM: KINGSTON HyperX Fury 2400 16G (半年前買的)
M/B: ASUS B350M-A
SSD: INTEL 600P 256GB (半年前買的)
HDD: HGST 1TB (舊的)
VGA: ASUS STRIX GTX-1060-DC2OC 6G
CASE: Antec P50
POWER: COUGAR VTE 500
2017年7月20日 星期四
PlayStation Store潛規則
剛剛打電話去PSN客服才知道我的帳號被鎖了,我只是想買遊戲啊...
透過網頁版PlayStation Store使用信用卡購買遊戲或服務有極高可能被系統拒絕,要透過遊戲主機購買才能降低被拒絕的可能性。除此之外,被系統拒絕三次之後帳號就會被鎖定,無法使用信用卡購買,需要等待七天才會解除鎖定。
最扯的是以上的設計是『防止盜刷』,根本就是怠惰、推諉卸責的理由!
透過網頁版PlayStation Store使用信用卡購買遊戲或服務有極高可能被系統拒絕,要透過遊戲主機購買才能降低被拒絕的可能性。除此之外,被系統拒絕三次之後帳號就會被鎖定,無法使用信用卡購買,需要等待七天才會解除鎖定。
最扯的是以上的設計是『防止盜刷』,根本就是怠惰、推諉卸責的理由!
訂閱:
文章 (Atom)
-
前陣子Wyliodrin把他們的 開發環境 給開源了,因為想要修改程式碼,加上自訂的block。修改過的程式有可能用在商業用途,便找了他們的使用授權,上面這樣寫著: License This software is available under several lice...
-
使用Python的datetime產生的物件是不會包含時區資訊的,在網路上搜尋加上時區的方式,一般都是建議用pytz,大概類似以下的作法。 import datetime import pytz mytz = pytz.timezone('Asia/Taipei...
-
在Firefox 3正式發布前夕,Mozilla基金會成員之一的 Deb Richardson ,撰寫了一篇圖文並茂的 說明 ,讓你徹底了解Firefox 3的新功能。這些新功能與改進有些非常巨大,有些細微到你完全不會注意到,但是卻讓Firefox 3變得更簡單易用。就整體而言,...