2017年12月13日 星期三

GCE的TCP Health Check不支援換行符號

我打算在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月11日 星期一

在mora.jp買音樂

最近在玩人中之龍 極2的酒店經營部份,在編輯酒店小姐的裝扮時,總是會播放歌曲『As You Like』,還蠻好聽的。這首歌曲有收錄在 人中之龍 零 OST Side A 裡,查了一下只能買CD或者數位檔案,像KKBOX跟Spotify都沒有提供。整張專輯(Side A)要1500日圓,可是我只對這首歌有興趣,搜尋一下發現mora.jp有在賣單一曲目,便想試看看購買,果然一按下結帳就出現不開放日本以外購買的警告。

不過最後我還是購買成功了,我使用了以下的步驟:
  1. 把瀏覽器的語言改成日文優先(這個可能不需要)
  2. 使用日本的IP進入mora.jp(VPN)
  3. 付款方式使用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

2017年10月26日 星期四

ZeroCat

用Django寫的仿雙葉系統的貼圖討論板,程式碼預計會在近日內公開。
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反解析功能並沒有問題。

2017年9月22日 星期五

foobar2000使用usb dac播放音樂

因為最近買了KECES的DA151MK3,想研究一下怎樣的設置才能得到最好的效果。

軟體需求
  • Windows 7以後的作業系統(其實是Vista以後,但是誰還用Vista?)
  • foobar2000最新版
  • WASAPI plugin
foobar2000的設置說明
  1. 在Preference/Playback/Output/Device裡選擇『WASAPI (event):喇叭 (USB DAC)』。選擇DS (Direct Sound) 的話有可能會受Windows Mixer與Resampler影響,而WASAPI則是直接輸出未更動的位元流給USB DAC。WASAPI支援兩種模式:push跟event,音效裝置可能只支援其中一種方式,大多數裝置都支援event,如果不支援再改用push,可參考WASAPI plugin的文件
  2. 下面的Output data format要依照硬體規格設置,否則會出現無法播放,格式不支援的錯誤。以DA151MK3為例,最大支援到16-bit。至於Dither是否要啟用,如果播放的音樂需要轉換,如24-bit->16-bit則可以開啟,但是HydrogenAudio的Wiki上則認為,大多數人其實聽不出來差異,是否需要開啟則是依照喜好決定。
  3. 在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掛載到特定目錄

2017年8月23日 星期三

為什麼PS4下載遊戲這麼慢?(以及可能的改善方式

原文:https://www.snellman.net/blog/archive/2017-08-19-slow-ps4-downloads/
很多PS4玩家都有一個疑惑,為什麼從PSN下載遊戲超慢,但是使用Local Proxy卻會變快?有人對此做了實驗,得到以下結論:
  •  作業系統本身會依照正在執行的遊戲或APP調整網路細部設置,這些調整只針對PSN下載,最少會慢5倍,最多會慢100倍,不管那些程式是跑在前景或背景都一樣。
  • 休眠模式是否會全速下載要看是否在休眠時關閉遊戲與APP。
  • 在下載PSN遊戲時關閉所有執行的程式,能夠確保系統以最高速度下載。但是PS4的界面不太容易讓使用者確認哪些程式跑在背景裡。
使用Local Proxy會變快的原因,是因為被調整的網路設置其中一項變數就是網路延遲,延遲越低下載越快。速度的調整當然是有意為之的,目的是避免PSN下載影響遊戲或APP。但是作者也挑明說SONY的作法很爛,而且都已經四年了居然沒有任何改善。

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就只是溫溫的而已,真怪。

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

2017年7月20日 星期四

PlayStation Store潛規則

剛剛打電話去PSN客服才知道我的帳號被鎖了,我只是想買遊戲啊...

透過網頁版PlayStation Store使用信用卡購買遊戲或服務有極高可能被系統拒絕,要透過遊戲主機購買才能降低被拒絕的可能性。除此之外,被系統拒絕三次之後帳號就會被鎖定,無法使用信用卡購買,需要等待七天才會解除鎖定。

最扯的是以上的設計是『防止盜刷』,根本就是怠惰、推諉卸責的理由!