Birkhoff's Blog

Thoughts and technologies.

ghost

用 Docker 架設 Ghost 部落格系統:從 Ghost(Pro) 遷回自己的主機

前幾天 Ghost(Pro) 又開始催繳了,付款畫面上沒寫多少錢,發了封郵件問了一下結賬金額是多少。不問不知道,一問不得了,一年居然要 $96!當下看到這個數字我嚇到吃手手,想了一下還是遷回自己的主機比較實在,便宜又好管理。下面將記錄我遷回來的過程。 拿回部落格檔案 首先,進入舊的 Ghost 後台,選擇左側的 Labs,接著按下 Export your content 旁的按鈕,即可取回部落格的所有檔案(除了媒體、主題檔案)。 點選左側的 Design,然後將你要保留的主題下載回來。 寫信至 Ghost(Pro) 客服中心,要求取回 image files。客服會打包成 .zip 丟到 Dropbox 然後給你連結。

tutorial

第一次用 Docker 自架 v2ray + shadowsocks 翻牆伺服器就上手

How It Works 我們接下來將使用 v2ray 架設使用 VMess 與 ShadowSocks 協議翻墻的伺服器。我們主要將使用 VMess 進行翻墻,ShadowSocks 僅作為備用。 VMess 部分我們將將流量偽裝成正常的 https 流量並使用 WebSocket 進行與 nginx-proxy 的通訊,由 nginx-proxy 進行 reverse proxying,SSL 憑證由 jrcs/letsencrypt-nginx-proxy-companion 自動向 Let's Encrypt 申請並套用。 ShadowSocks 部分則使用原版協定,且不使用混淆參數。(v2ray 目前尚未實作這些部分,希望未來可以看到) 本文示範環境 使用系統為

docker

解決 apt-get dist-upgrade 並 reboot 之後 Docker daemon 無法啟動的問題

發現問題 剛剛在更新自己的 Ubuntu Server 的時候遇到的問題。跑了 sudo apt-get dist-upgrade -y; reboot 之後,再跑 sudo service docker start 就失敗了。 看了一下 sudo journalctl -u docker.service,跑出下面的 log: Apr 21 15:10:47 docker-node-01 systemd[1]: Starting Docker Application Container Engine... Apr 21 15:10:47

javascript

ES6 Class Importing & Exporting

最近在搞 blizzard_forum.js,打算寫 ES6 語法來學學新知。因為 Node.js 還沒原生支援 ES6 syntax,就順便用用看 Babel 囉。 今天寫 ES6 class import/export 遇到了一些問題,在網上找好久找不太到答案(明明就是你懶得仔細看官方 doc),在這邊筆記一下。 export class class.js: export class i_am_the_class_name { bar () { console.log("foobar") } } import.

tutorial

在 macOS Sierra 10.12.2 上編譯 Caffe 並使用 DIGITS

最近在玩 Machine learning,編譯 caffe 跟啟動 DIGITS 的時候遇到一些瓶頸,在這裡記錄下解決方案並分享給需要的人。過程中發生錯誤都可以在下面留言詢問喔! 這邊因為我 training 的量比較少,我就沒有用 GPU,因此這篇不會教怎麼裝 n 卡的驅動程式,不過這邊有教學,在設定 Makefile.config 的時候也記得去掉 USE_CUDNN := 1 最前面的 #,這樣應該就可以了,其他部分跟本教學通用。 homebrew install 如果已經安裝過 homebrew 則可以跳過此步驟。 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.

windows

Windows Subsystem for Linux (WSL) 安裝教學 & 初體驗

八月二日時微軟釋出了 Windows 10 年度更新版(組建 14393),其中已經添加了流傳已久的 Bash for Windows(其實組建 14316 就有了)。小弟早就迫不及待想嘗試一下了,在這裡寫個教學記錄一下。 首先你要知道:這不是虛擬機器,也不是容器,也不是專門為 Windows 編譯的 Linux binary(像是 cygwin)。[1] 你可以想象它是 Wine 的相反——Ubuntu 的 binaries 在 Windows 上原生實作。Ubuntu 官方提到[2]: A team of sharp developers at

security

在 OS X 上攔截 Genymotion 模擬器的所有 http/https 封包

OWASP ZAP 是一套開源且免費的滲透安全測試軟體,由非常多的志工打造而成,適合開發者或安全測試人員使用。要抓 Genymotion 模擬出的 Android device 的 http/https 封包時就非常適合用它。 Environment OS X 10.11.5 OWASP ZAP 2.5.0 Genymotion 2.7.2 Emulated Android 5.0.0 Step 1 打開 OWASP ZAP,在彈出的「Do you want to

在 Docker 上架設 ownCloud
docker

在 Docker 上架設 ownCloud

ownCloud 是一套自由且開放原始碼的雲端儲存解決方案,即俗稱之「雲端硬碟」。其分為伺服器與客戶端,且開發已行之有年,支援十分完整,包括 Windows、macOS、Linux、Android、iOS 以及 WebDAV 等。 因其分為伺服器與客戶端,我們需要先架設伺服器端才可使用 ownCloud 的客戶端。 部署 ownCloud 請在你裝有 Docker daemon 的伺服器上執行以下指令,其中「<MYSQL_ROOT_

單元測試簡介以及在 Docker 上部署 Drone 並連結至 GitHub
installation

單元測試簡介以及在 Docker 上部署 Drone 並連結至 GitHub

Unit Test 開發專案時,我們常需要確保其中的功能或函式能夠達到我們預期的效果而進行測試, 但是遇到大型專案時我們通常無法手動進行它們的測試, 於是就有了「單元測試」(Unit Test)這個東西的誕生。 單元測試是什麼? 當我們寫好每個功能或函式時,我們會需要幫他寫一個單元測試的程式。 你可以上 GitHub 看看,很多大型專案可能都有 /test 這個資料夾, 點進去之後一般來說裡面都是單元測試的程式。 舉例來說 ... 今天有一段 Node.js code 長這樣: function testMe () { if (no_

如何自動化專案在伺服器上的部署過程
tutorial

如何自動化專案在伺服器上的部署過程

如今 Docker 正夯,已經是伺服器部署專案時的首選工具了。 只要寫好 Dockerfile 就可以 build 出一個 image,從而就可以在 Docker daemon 上執行這個 image 的 container。 這樣做不但方便部署,而且還方便維護伺服器。 但是上面的步驟你看出來了嗎?你大概會需要做這些事情: $ docker build -t foo/dockerized-bar ./ $ docker run foo/dockerized-bar

在 Docker 上安裝 Redmine 並套用 Dwarf 佈景主題
docker

在 Docker 上安裝 Redmine 並套用 Dwarf 佈景主題

Redmine 是一套開源的線上專案管理系統,它以 Ruby on Rails 框架寫成,在資訊界可說是一套值得信賴的專案管理系統。 Redmine 官方對其功能的粗略介紹: 支援多專案管理 彈性化的權限管理系統 彈性化的 issue 追蹤系統 支援甘特條狀圖、行事曆 管理新聞、文件以及檔案 Feed 以及 email 的通知 每個專案都有自己的 wiki、forum 時間追蹤 內建支援版本管理系統,如:SVN、

Telegram 中文化教學

近期風靡的 Telegram 並沒有支援正體中文語系,若你需要將其更換為中文,可以參考以下教學! iOS 請打開 Telegram 中文化頻道,並點選下載最新的「iPhoneTW.strings」檔案。 待下載完成後,請再次點選該檔案。此時會跳出一個選單,請點選「Apply localization file」選項以套用語系檔案。 Android 請打開 Telegram 中文化頻道, 並點選下載最新的「AndroidTW.strings」檔案。 待下載完成後,請點擊該檔案右上角之「...」圖樣, 並點選「Apply localization file」選項以套用語系檔案。 進入「語言」設定畫面後,點選「正體中文」選項, 即可套用正體中文語系檔案。