2019-05-13

讓老顯卡Geforce 210在Windows能支援2K解晰度(2560x1440)

有張華碩Gefroce 210(EN210 SILENT/DI/1GD3/V2(LP))裝在HP的2K顯示器上,因為解析度預設沒有2560x1440可選,但上華碩官網看最高解析度卻是有的:

D-Sub 最高解析度 : 2048x1536
DVI 最高解析度 : 2560x1600

Nvidia官網也是有寫:

Maximum Digital Resolution 2560x1600
Maximum VGA Resolution 2048x1536

上了一些論壇說要DVI才行,但實際上也是沒出現2K選項,後來發現其實不是DVI或HDMI或線材的問題,而是必須用自訂解析度的方式解決:

1.安裝Nvidia驅動,打開Nvidia控制面版,選擇解析度 --> 自訂

2.輸入2560x1440,「標準」選項(很重要!)請選擇「CVT」(有二個,我是選CVT reduced blank),不要用預設的自動

3.測試成功後,儲存,再選擇2560x1440解析度

還好,不然差點就要買新顯卡了...

ref:
https://www.notebookcheck.net/2560x1440-or-2560x1600-via-HDMI.92840.0.html

2019-05-08

Linux Mint (Ubuntu) 使用 NUT (Network UPS Tools)


因為舊的台達水瓶座UPS因為沒有Linux上可支援的軟體,因此改採買了一台科風WAR-1000AP(更新:用了二年多同時採購的二台同型號UPS板子都壞了,強列不建議購買),
不過科風的Linux軟體裝上去發現爛得可以(Linux UPSMON PRO),看起來用java7寫的,體積大不說,不但抓不到usb設備,一些test指令下了還會噴錯誤....因此用Linux作業系統的就不建議買科風了,當初是看它有支援Linux才買的,沒想到Linux軟體寫得這麼爛(科風工程師自已都沒先好好測過嗎?),早知就買台達的新型號UPS。

不過買都買了,要是沒法解決就要換貨了,還好看到NUT(Network UPS Tools)的相容列表對科風的支援好像還不錯:
因此就改用NUT來監視UPS,不過不得不說這軟體設定有夠囉嗦的...

2019-01-28

macOS 使用brew安裝 java8

以前可以從brew直接指定安裝jdk8:
brew cask install java8

不過目前沒法直接指定jdk版本,要安裝jdk8變這樣:
brew tap caskroom/versions
brew cask install java8

看一下目前有提供的java(或jdk):
brew search java
brew search jdk

目前都預設安裝jdk 11了:
brew cask info java
brew cask info adoptopenjdk
brew cask info oracle-jdk

2019-01-21

Linux Mint 建立 L2TP VPN CLIENT

由於Linux Mint預設並沒有L2TP VPN CLIENT,因此需手動新增必要的 package才有辦法達成,以下以Linux Mint 19連線QNAP的L2TP VPN SERVER為例:

  1. 二選一,可使用strongswan或libreswan

    使用strongswan(建議,可支援一些舊加密協定):
    sudo apt-get install network-manager-l2tp-gnome network-manager-strongswan libstrongswan-standard-plugins libstrongswan-extra-plugins

    使用libreswan:
    sudo apt install network-manager-l2tp-gnome libreswan
  2. 重開機,於「網路連線」新增L2TP VPN設定
  3. 輸入gateway及帳號密碼後,還需要依照以下圖示設定:
    其中Phase 1 & phase 2 Algorithms依照安裝的為strongswan或libreswan有所不同:

    strongswan :
    Phase1: aes256-sha1-modp1024,aes128-sha1-modp2048,aes128-sha1-modp1536!
    Phase 2 : aes256-sha1,aes128-sha1!

    libreswan:
    Phase1: aes256-sha1-modp1024,aes128-sha1-modp2048,aes128-sha1-modp1536
    Phase 2 : aes256-sha1,aes128-sha1

    (3des加密目前已證實有安全性問題並被廢棄支援,大多改採用aes128或aes256)

    image.png

    QNAP或SYNOLOGY的L2TP SERVER套件通常可設定為PAP或MS-CHAPv2驗證,一般是選MS-CHAPv2較安全
  4. VPN開始連線前,可使用 sudo journalctl -f 觀看log訊息以方便除錯,連線成功後可用ipsec statusall看連線所使用的方式及資訊,像連線到qnap l2tp,會發現是使用IKEv1, aes256-sha1-modp102去連線。
  5. 若要增加 Cisco VPN,可再安裝 network-manager-vpnc-gnome

ref:
https://community.ubnt.com/t5/UniFi-Routing-Switching/L2TP-VPN-on-Ubuntu-18-04-client/td-p/2492451
https://wiki.strongswan.org/projects/strongswan/wiki/IKEv2CipherSuites

2019-01-18

macbook 藍芽作動不正常問題排除


當macbook的藍芽符號出現灰色,或者無法配對、無法找到裝置…等等奇怪的問題,可以先從軟體方面先去解決看看:


  1. 刪除 /Library/Preferences/com.apple.Bluetooth.plist 並重開機
  2. 重置NVRAM
  3. 重置SMC
  4. 開機時按住D或Option + D,執行系統檢測,看是硬體或軟體問題
  5. 若檢測出是軟體問題,開機時按住CMD+R,重新安裝系統(安裝完使用者資料及程式會保留,不用擔心)

若是硬體問題,那麼可能就得更換藍芽零件,淘寶賣價大約是台幣三四百元。
拆的時候請使用尺寸適合的十字鏍絲起子,以免造成鏍絲崩牙而無法拆裝。
安裝完後若仍無法作動(前提是更換上的藍芽零件沒有問題),那麼重複前面123的步驟應該就可正常使用。

2018-07-17

python在virtual environment (venv) 環境時,vscode pylint會報import ... not found

在python的virtual environment工作時,vscode的pylint會說找不到套件,
因此我們要vscode的「Folder Settings」去指定 venv 下的pylint路徑,而不是global的pylint,
順便把python路徑也一起修改:

(Windows)
"python.pythonPath": "${workspaceFolder}/Scripts/python.exe"
"python.linting.pylintPath": "${workspaceFolder}/Scripts/pylint.exe"

(Linux)
"python.pythonPath": "${workspaceFolder}/bin/python"
"python.linting.pylintPath": "${workspaceFolder}/bin/pylint"


因外由於 pylint 對 python 3.7的支援性不太好(沒事就在噴runtime error錯誤),
我們可以安裝 preview version的pylint來解決:

pip install pylint astroid --pre -U

或改用flake8也行:
pip install flake8

用flake8記得修改vscode設定:
"python.linting.flake8Enabled": true
"python.linting.pylintEnabled": false
"files.trimTrailingWhitespace": true

2018-07-16

Python CGI on Apache & FASTCGI on NginX

在Apache2上修改http.conf,讓Apache能以CGI執行python:
==============================================
...
LoadModule cgid_module modules/mod_cgid.so
...
<Directory "/opt/bitnami/apache2/htdocs">
...
Options FollowSymLinks MultiViews +ExecCGI
AddHandler cgi-script .py
...
</Directory>
==========================================================
若是使用bitnami LAMP stack,需再同時修改 conf/bitnami/bitnami.conf,修改設定同上
==========================================================

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

==========================================================
在NginX上修改nginx.conf,加入以下片段,以fast-cgi執行python:
==========================================================
location ~ \.py$ {
    root html;
    fastcgi_read_timeout 300;
    #fastcgi_pass 127.0.0.1:10240;
    fastcgi_pass unix:/tmp/python-fcgi.sock; #使用.sock監聽
    fastcgi_index index.py;
    fastcgi_param SCRIPT_FILENAME $request_filename;
    include fastcgi_params;
}
==========================================================
若是使用bitnami,可以新建一個 conf/bitnami/pythonfastcgi.conf,加入如上設定,並修改 conf/bitnami.conf,加入:

include "/Applications/nginxstack-1.10.1-2/nginx/conf/bitnami/pythonfastcgi.conf";
==========================================================
然後python需安裝flup,用來當做fastcgi的gateway(即符合fastcgi協定的SERVER,這樣才能溝通):
pip3 install flup

然後寫一支 wsgi.py,並啟動(以/tmp/python-fcgi.sock監聽):
==========================================================
#!/usr/local/bin/python3
#coding=utf-8

from html import escape
import sys, os
from flup.server.fcgi import WSGIServer

def app(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/html')])
    yield '<h1>FastCGI Environment</h1>'
    yield '<table>'
    for k, v in sorted(environ.items()):
        yield '<tr><th>%s</th><td>%s</td></tr>' % (escape(k), escape(v))
    yield '</table>'

if __name__ == '__main__':
    # WSGIServer(app, bindAddress=('127.0.0.1',10240)).run()
    WSGIServer(app, bindAddress='/tmp/python-fcgi.sock').run()
==========================================================
修改為執行檔並執行,再執行nginx:
chmod +x wsgi.py
./wsgi.py
systemctl start nginx

uWSGI是一個軟體專案名稱,而flup本身就是一個架構在uWSGI專案之上的server,同時支援了:
wsgi-->可支援fastcgi
uwsgi-->python web server protocol
http協定
等,因此Nginx也可以改用uwsgi(設定uwsgi_pass)去執行,可參考下面最後一個鏈結

ref:
https://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html
https://httpd.apache.org/docs/2.4/howto/cgi.html
http://uwsgi-docs.readthedocs.io/en/latest/WebServers.html
https://segmentfault.com/a/1190000003993249
https://www.digitalocean.com/community/tutorials/how-to-serve-flask-applications-with-uwsgi-and-nginx-on-ubuntu-14-04