幾天前更新 High Sierra 10.13.3 補充更新後,重開機登入畫面變成英文的了。隨手搜尋了一下好像沒看到有人遇到一樣的問題。
解決方法是到「系統偏好設定」→「語言與地區」新增英文語系,並把英文設為預設後(拉到最上面)重開機。重開機回來以後再到一樣的地方把繁體中文設為預設,再重開機就好了。
若觀看本部落格造成您身體不適,請左轉出口離開,謝謝合作
幾天前更新 High Sierra 10.13.3 補充更新後,重開機登入畫面變成英文的了。隨手搜尋了一下好像沒看到有人遇到一樣的問題。
解決方法是到「系統偏好設定」→「語言與地區」新增英文語系,並把英文設為預設後(拉到最上面)重開機。重開機回來以後再到一樣的地方把繁體中文設為預設,再重開機就好了。
目前這個部落格是放在東京 Linode 主機上,最近遇到的問題是 nginx 每天都會自動死掉,每天都得要 ssh 進去 restart nginx service,實在有夠麻煩。再加上我有用 Let’s Encrypt,每 90 天都要更新憑證。乾脆一不做二不休的把 web server 換成會自動更新憑證的 caddy,以下這篇記錄轉換的過程。
以下參考這份文件
安裝 caddy 很簡單,直接在 shell 下執行:
curl -s https://getcaddy.com | bash -s personal
使用 personal license 來安裝 caddy
然後建立必要的目錄
sudo mkdir /etc/caddy && sudo chown -R root:www-data /etc/caddy
建立空白的 caddy 設定檔
sudo touch /etc/caddy/Caddyfile
建立給 caddy 使用的 ssl 目錄
sudo mkdir /etc/ssl/caddy sudo chown -R www-data:root /etc/ssl/caddy sudo chmod 0770 /etc/ssl/caddy
從官方 repository 下載 caddy.service
sudo curl -s https://raw.githubusercontent.com/mholt/caddy/master/dist/init/linux-systemd/caddy.service -o /etc/systemd/system/caddy.service
讓 systemd 發現新下載的 caddy.service
sudo systemctl daemon-reload
Enable caddy.service
sudo systemctl enable caddy.service
建立 /var/www/index.html
echo '<h1>Hello World!</h1>' | sudo tee /var/www/index.html
編輯 /etc/caddy/Caddyfile 設定檔
http:// { root /var/www gzip }
然後啟動 Caddy server
sudo systemctl start caddy
之前用 nginx 當作 web server 的時候,是搭配 uwsgi 來把 request 傳到 django 內。而 Caddy 雖然有 plugin 可以支援 uwsgi,但是需要自己編 Caddy,所以在這裡我改用 gunicorn。
sudo apt install -y runit sudo -H pip install gunicorn sudo service runit start
設定 runit,${project_name} 為您的專案名稱
mkdir /etc/sv/${product_name}/ touch /etc/sv/${project_name}/run chmod u+x /etc/sv/${project_name}/run vim /etc/sv/${project_name}/run
編輯 /etc/sv/${project_name}/run
#!/bin/sh # gunicorn 執行檔位置 GUNICORN=/usr/local/bin/gunicorn # Django 專案位置 ROOT=/var/www/my_django_project # 執行時的 pid 位置 PID=/tmp/my_django_project.pid # Django 專案的 wsgi.py 位置 APP=my_django_project.wsgi if [ -f $PID ]; then rm $PID; fi cd $ROOT exec $GUNICORN -c $ROOT/gunicorn.conf.py --pid=$PID $APP --group www-data
再來設定 django 專案,在專案根目錄中新增 gunicorn.conf.py,內容如下
# 用本機的 8000 port bind = "127.0.0.1:8000" # gunicorn 的 pid file,和前面 runit 設定檔內相同 pidfile = "/tmp/my_django_project.pid" # 設定要用幾個 worker 來執行 workers = 1 timeout = 90
再來讓 runit 把 gunicorn 跑起來
ln -s /etc/sv/${project_name} /etc/service/${project_name}
如果到這邊都有做對,當你建立好 symbolic link 後執行 ps -aux | grep gunicorn,就會看到 gunicorn 的 process 跑起來了
設定 Caddy
最後設定 Caddy 把 request 丟給 gunicorn 處理,編輯 /etc/caddy/Caddyfile,加上
my_django_project.fykuan.tw { root /var/www/my_django_project proxy / 127.0.0.1:8000 { transparent except /static } tls ${your_email_address} }
然後重新啟動 Caddy
sudo service caddy restart
就可以用瀏覽器打開 https://my_django_project.fykuan.tw 試試看了
原本在 Firefox 57 之前,有 Hide Unwanted Results of Google Search 這個 Firefox 附加元件可以用。但是在 Firefox 57 以後,因為不再支援傳統附加元件了,所以就得要找替代方案。
目前我在用的方案是用 Violent Monkey 附加元件加上 Google Hit Hider by Domain 這個 Script。
依照順序,先安裝好 Violent Monkey 後再到 Google Hit Hider by Domain 按「Install this script」,裝好以後打開 Google 搜尋結果頁面,就會在每筆搜尋結果的旁邊出現一個「block」按鈕,按下去之後,以後搜尋結果如果有這個站,就會自動隱藏。你就再也看不到騙點擊數的內容農場文在搜尋結果內了。
我的 iPhone 6 Plus 不小心把觸控螢幕面板摔破了,想說反正也用的夠久了,暫時先用備用機等到 iPhone X 發售就直接換新機,而且我有用 iCloud 隨時備份,直接從備用機拉備份應該可以直接無縫接軌到備用機上。
結果就爆炸了
Google Authenticator 並不會把 OTP 密碼資料備份到 iCloud 上,所以換了新機後從 iCloud 拉備份以後,打開 Google Authenticator 發現裡面是一片空白,同時我的臉也都白了。
那只能從螢幕爆掉的舊 iPhone 6 Plus 上想辦法了,這時候想到的解決方法是:
結果一接上電腦,隱隱約約可以從破掉的 iPhone 螢幕上看到要我輸入密碼解鎖螢幕才能進行備份,但是螢幕破了,數字九工格的右邊一半沒辦法點。努力的這邊壓壓那邊壓壓,看看會不會讓我硬點出一個數字,但試了一個晚上還是點不出來那唯一一個在右邊的數字。
要解決這個問題,就只好把螢幕修好、讓我可以解鎖手機用 iTunes 備份。於是跑去外面的維修中心、告訴對方我只需要能把螢幕解鎖備份資料就可以了,其他功能如果有問題沒有關係,然後我就跑到附近去等對方工程師幫我處理。
沒多久接到電話,對方表示換了螢幕面板以後,看起來應該沒問題了,可是如果要備份資料的話,因為之前(也就是前一天在想辦法按出密碼鎖數字的時候)密碼輸入太多次,螢幕顯示已鎖定,這樣就備不出來了,只能還原原始設定。
但是不信邪的我還是請他不要幫我還原,我回家再想辦法惡搞看看,於是我回家做了以下的事:
這次經驗給我幾個教訓: