聚會時間公告: 因應COSCUP 2011, Kalug 8月份休會一次

十一月 20, 2016
» cups 與 pepperflashplugin 更新需要手動調整 (Chakra GNU/Linux)

我們將這些套件更新與剩下的那些分開,因為這兩個套件在打包方面做了一些改變,所以這個更新需要使用者手動處理。您可以預期後面還有兩個更新公告會很快的到來,一個是最新的 KDE Plasma、Applications 與 Frameworks,另一個則是核心套件更新,包含了 Linux 核心與顯示卡驅動程式更新。

cups-2.1.4-3

為了能夠讓使用者不使用 root 權限新增與移除印表機,我們加入了新的 lpadmin 群組。這代表您必須在更新後把您的使用者名稱手動加入到新群組以讓 cups 重新運作(將 USERNAME 取代為您的使用者名稱):
sudo gpasswd -a USERNAME lpadmin

若您遇到了任何問題,請在 gitlab 上對應的問題中回報。

pepperflashplugin 23.0.0.207-1

因為上游的打包方式改變了,所以我們將上游的來源從 Google Chrome 更換為 Adobe。您在嘗試更新時將會收到檔案系統中已有一樣的檔案的警告。為了單獨更新此套件,請使用下面的指令:
sudo pacman -Sy pepperflashplugin --force

若您遇到了任何問題,請在對應的論壇討論串中回報。

另外,libreoffice 更新到了 5.2.3。

請在 Pacman 詢問您是否要取代套件時一律回答 yes。我們大多數的鏡像可能需要12至24小時同步,同步完後,更新應該是相當安全的。我們也提供了一個簡單的鏡像狀態頁面來檢查您的鏡像在什麼時候與主伺服器同步。

新聞來源:Manual intervention needed for cups and pepperflashplugin updates

十一月 18, 2016
» calibre 2.72 釋出

自由的跨平臺電子書管理軟體,calibre 2.72 正式版釋出,此版本新增了幾個功能以及修正了 9 個 bug。
calibre 2.X 版本支援 Windows Vista~10 (皆含 32 位元及 64 位元版本)、Mac OS X 10.7 或更新、各種 Linux 發行版。若您的作業系統是 Windows XP 或是 Mac OS X 10.5、10.6,請繼續使用 1.48 版。

來源:http://calibre-ebook.com/whats-new

十一月 17, 2016

小惡魔AppleBOY
AppleBOY
小惡魔 – 電腦技術 – 工作筆記 – AppleBOY is about »

tag cloud

» 輕量級 Gofight 支援 Echo 框架測試

Go-brown-side.sh Gofight 是一套用 Golang 撰寫的輕量級測試工具,專門測試 Golang Web Framework API,可以參考之前一篇教學: 用 gofight 來測試 golang web API handler,在 Echo 框架發布 v3.0.0 之前,Echo 不支援 golang 標準的 http.Requesthttp.ResponseWriter,反倒是支援 fasthttp,所以我發了 Issue 希望作者可以支援原生的 http 標準,最後沒有得到回應。就在前幾天 Echo 在 v3.0.0 版本把 fasthttp 拿掉,這樣 Gofight 就可以移除特定函示,改用原生 http。

gofight v1 寫法 (舊式)

舊版 gofight v1 針對 Echo 框架測試寫法
func TestEchoPostFormData(t *testing.T) {
    r := New()

    r.POST("/form").
        SetBody("a=1&b=2").
        RunEcho(framework.EchoEngine(), func(r EchoHTTPResponse, rq EchoHTTPRequest) {
            data := []byte(r.Body.String())

            a, _ := jsonparser.GetString(data, "a")
            b, _ := jsonparser.GetString(data, "b")

            assert.Equal(t, "1", a)
            assert.Equal(t, "2", b)
            assert.Equal(t, http.StatusOK, r.Status())
        })
}

gofight v2 寫法 (新式)

新版 gofight v2 針對 Echo 框架測試寫法
func TestEchoPut(t *testing.T) {
    r := New()

    r.PUT("/update").
        SetBody("c=1&d=2").
        Run(framework.EchoEngine(), func(r HTTPResponse, rq HTTPRequest) {
            data := []byte(r.Body.String())

            c, _ := jsonparser.GetString(data, "c")
            d, _ := jsonparser.GetString(data, "d")

            assert.Equal(t, "1", c)
            assert.Equal(t, "2", d)
            assert.Equal(t, http.StatusOK, r.Code)
        })
}
可以看到只要取代底下 func 就可以無痛轉換
  • RunEcho => Run
  • EchoHTTPResponse => HTTPResponse
  • EchoHTTPRequest => HTTPRequest

載入新版方式

下載 Gofight v2

$ go get gopkg.in/appleboy/gofight.v2

載入 Gofight v2

import "gopkg.in/appleboy/gofight.v2"

後記

Gofight 有用 glide 做 vendor 套件控管,但是支援 Echo 框架後,發現測試突然壞了,產生了另外 Issue,如果是使用 go get -d -t ./... 安裝方式就沒有問題,之後再找時間解決此問題。

十一月 15, 2016

小惡魔AppleBOY
AppleBOY
小惡魔 – 電腦技術 – 工作筆記 – AppleBOY is about »

tag cloud

» 用 Docker 發送 Line 訊息

docker 今年各家網路公司 (Facebook, LineTelegram…) 分別推出 Bot 服務,看起來 Bot 會是未來趨勢,對 Bot 不是很了解的話,可以參考 Eric ShangKuan 寫了一篇: 關於寫對談機器人 (bot) 的兩三事。本篇會介紹如何透過 Docker 整合 Line Message API,下面所有指令都會跟 Docker 有關,但是程式碼都是用 Golang 撰寫,想說順便在台灣推廣 ^__^。就在今年四月 Line 推出第一版 SDK,但是到了九月,突然收到 Line 的通知,說舊版的不支援了,請大家換到新板 API,最近更動到新版本時,踩到官網 UI 的雷就是原來 Line 有分 Developer 跟一般帳號,這兩種差別就是在於有無主動 Push Message 功能,後來在 Line-Go-SDK 發問才找到解答。底下會一步一步教大家如何透過 Docker 發送 Line 訊息。

步驟一: 申請 Line Developer 帳號

如果已經有帳戶請略過此步驟。請先到 LINE Business Center,點選 Developer Trial,建立組織及建立帳號,如下圖 Screen Shot 2016-11-15 at 1.45.18 PM 完成後,點選 Line Manager,啟動 API Screen Shot 2016-11-15 at 1.50.52 PM 請務必啟動底下設定
  • Use webhooks
  • Allow Bot to join group chats
如果有看到 Usable APIs 包含底下:
  • REPLY_MESSAGE
  • PUSH_MESSAGE
PUSH_MESSAGE 權限,Bot 才可以主動發訊息給使用者

步驟二: 取 Line Token 和 Secret

回到 LINE Business Center 頁面,Tools 底下選 Line Developers,就可以看到 Channel SecretChannel Access Token,要取 Token 請點選右邊的 Issue 按鈕就可以顯示了 Screen Shot 2016-11-15 at 1.59.12 PM 表單內的 Webhooks URL 是要填寫 https 開頭的 URL,下個步驟會教大家如何透過 Docker 架設 Line Webhook 服務。

步驟三: 用 Docker 啟動 Line Webhook 服務

此步驟是教大家如何取得使用者 ID,前提是使用者必須加 Bot 為好友。要啟動 webhook 服務有兩種方式,一種是透過 docker,另一種則是透過 Golang 方式,我們先來試試看 Docker 方式。

下載程式碼

$ git clone https://github.com/appleboy/drone-line.git
$ cd drone-line

編譯 Docker Image

進入 example 目錄後,會發現有 server.go 跟 Dockerfile 兩檔案
$ docker build -t line example
上面的 line 可以自行換掉,換成自己想要的名字,接著啟動編譯好的 Image。

啟動 Webhook 服務

$ docker run --rm \
  -e CHANNEL_SECRET=xxxx \
  -e CHANNEL_TOKEN=xxxx \
  -p 8089:8089 \
  line
如果不是透過 Docker,請直接執行 Go 指令即可
$ go run server.go

用 ngrok 穿牆

這時候會發現系統聽 8089 port,接著透過 ngrok 來做穿牆,並且提供 https 服務
$ ngrok http 8089
Screen Shot 2016-11-15 at 4.08.47 PM 拿到 https://xxxx.ngrok.io 後,請到 Line Develop Console 填到 Webhook URL 欄位 (請填入: https://xxxx.ngrok.io/callback ),最後透過 QRCODE 加 Bot 為好友,並且發送訊息測試,可以發現在 Console 端會顯示:
2016/11/15 08:04:22 User ID is U77234666b0313021f873b85xxxxxxx
這就是您專屬的 User ID,請記錄下來。

步驟四: 用 Docker 主動發送 Line 訊息

透過 drone-line 包好的 Docker Image (appleboy/drone-line)來主動發送訊息,來到這邊,就是假設你已經取得 Line Secret, Token 及使用者 ID,透過下面 Docker 指令
docker run --rm \
  -e LINE_CHANNEL_SECRET=xxxxxxx \
  -e LINE_CHANNEL_TOKEN=xxxxxxx \
  -e PLUGIN_TO=xxxxxxx \
  -e PLUGIN_MESSAGE=test \
  appleboy/drone-line
其中 LINE_CHANNEL_SECRET, LINE_CHANNEL_TOKENPLUGIN_TO 請填入相對應設定。如果覺得指令太長,也可以把設定包在 .env 檔案內
LINE_CHANNEL_SECRET=xxxxxxx
LINE_CHANNEL_TOKEN=xxxxxxx
PLUGIN_TO=xxxxxxx
PLUGIN_MESSAGE=test
請務必將檔案放在執行指令的目錄底下,接著透過底下指令發送訊息
docker run --rm \
  -e ENV_FILE=your_env_file_path \
  -v $(pwd):$(pwd) \
  -w $(pwd) \
  appleboy/drone-line

總結

本來 drone-linedrone ci server 的 plugin,用來完成測試後,通知相關開發者,當然要整合其他 CI 像是 Jenkins 也是可以的,基本上都包成指令了,只要有 Bash 環境都可以運作。老實說 Line 的開發網站,介面不是很人性化,很多功能都不知道在哪邊,也蠻亂的,另外 Line Developer 也有提供綁定 Server IP 才可以發送訊息,這功能不是很即時性,所以大家盡量不要去用。目前也只有 Line 有提供這功能,應該是要避免 Token 跟 Secret 被偷走。最後要注意的是免費的 Developer 帳號一次只能發五則訊息。超過五則訊息,則會吐出底下錯誤:
[messages] Size must be between 1 and 5
怎麼發送多個訊息呢?請用 , 來分隔 (不要超過 5 個喔)
docker run --rm \
  -e LINE_CHANNEL_SECRET=xxxxxxx \
  -e LINE_CHANNEL_TOKEN=xxxxxxx \
  -e PLUGIN_TO=xxxxxxx \
  -e PLUGIN_MESSAGE=我,愛,你\
  appleboy/drone-line

十一月 10, 2016
» 0 A.D. Alpha 21 Ulysses 釋出

0 A.D. 團隊在2016年11月8日釋出了他們的第 21 個開發版本,Alpha 20 Timosthenes,此版本包含了以下的改進與新功能:

  • 11 張新的隨機地圖與 2 張新的遭遇戰地圖!
  • 弒君戰:您開始遊戲時會擁有一個英雄,當他/她被殺死時,您就輸了。
  • 最後生還者:一開始您可以與其他玩家結盟,但是當越多玩家被擊敗,您就會被迫與您的盟友交戰,最後一個活下來的玩家獲勝。
  • 加入巡邏功能。
  • 多了許多可以升級的單位與建築物。
  • Windows 版本現在支援使用超過 2G 的記憶體,這應該可以讓程式當掉的機會變少。
  • 以及其他新功能,請見官方公告。


新聞來源:New Release: 0 A.D. Alpha 21 Ulysses

十一月 3, 2016
» LibreOffice 5.2.3 釋出

LibreOffice 5.2.3 已經釋出,這是 5.2 系列的的第三個錯誤修正版本。
對於企業使用者,文件基金會建議在有認證專家做為後盾的情形下部署 5.1 系列到大型企業及組織,以提供額外的加值服務。

新聞來源:Announcement of LibreOffice 5.2.3

十月 28, 2016
» LibreOffice 5.1.6 釋出

LibreOffice 5.1.6 已經釋出,這是 5.1 系列的的第六個錯誤修正版本。
對於企業使用者,文件基金會建議在有認證專家做為後盾的情形下部署 5.1 系列到大型企業及組織,以提供額外的加值服務。

新聞來源:LibreOffice 5.1.6 available for download

十月 14, 2016
» calibre 2.70 釋出

自由的跨平臺電子書管理軟體,calibre 2.70 正式版釋出,此版本新增了幾個功能以及修正了 5 個 bug。
calibre 2.X 版本支援 Windows Vista~10 (皆含 32 位元及 64 位元版本)、Mac OS X 10.7 或更新、各種 Linux 發行版。若您的作業系統是 Windows XP 或是 Mac OS X 10.5、10.6,請繼續使用 1.48 版。

來源:http://calibre-ebook.com/whats-new

十月 13, 2016

小惡魔AppleBOY
AppleBOY
小惡魔 – 電腦技術 – 工作筆記 – AppleBOY is about »

tag cloud

» 用 Yarn 取代 Npm 管理 JavaScript 套件版本

yarn-kitten-full 新一代戰神 Yarn 終於在昨天出爐了,Yarn 跟 Npm 一樣都是 JavaScript 套件版本管理工具,但是 Npm 令人詬病的是安裝都是非常的慢,快取機制用起來效果也不是很好,所以 Yarn 的出現解決了這些問題,透過 Yarn 安裝過的套件都會在家目錄產生 Cache (目錄在 ~/.yarn-cache/),也就是只要安裝過一次,下次砍掉 node_modules 目錄重新安裝都會從 Cache 讀取。Yarn 詳細的功能架構可以參考 Facebook 發表的 Yarn: A new package manager for JavaScript,本篇不會教大家怎麼使用 Yarn,因為指令實在是太容易了,可以參考官方提供的如何從 npm 轉換到 yarn,底下則是來測試比較兩者安裝套件的速度。

前置準備

你可以用任何機器會筆電來做底下測試,或者是直接拿此 Dockerfile 在個人環境先產生乾淨的 Image,Dockerfile 內容很短,也可以從底下複製
FROM node:6.7.0

RUN curl -o- -L https://yarnpkg.com/install.sh | bash && \
  echo "" >> ~/.bashrc && \
  echo 'export PATH="$HOME/.yarn/bin:$PATH"' >> ~/.bashrc

CMD /bin/bash
請準備好底下版本
  • node version: v6.7.0
  • npm verison: 3.10.3
  • yarn verison: 0.15.1
可以自己拿任何專案的 package.json 或是下載我放在 Github 的 package.json 來做測試。

測試 package 安裝速度

第一階段就是沒有任何 Cache 之下來測試安裝速度
$ npm cache clean
$ npm install
結果: 93.00 秒
$ yarn cache clean
$ yarn install
結果: 42.80s 第二階段就是保留 node_modules 目錄,在下一次安裝
$ npm install
結果: 13.00 秒
$ yarn install
結果: 0.16 秒 (注意連 1 秒都不到 XD)

結論

npm yarn
install without cache 93000ms 42800ms
install with cache 13000ms 160ms
上面表格將數據整理好,如果要搞 Devops 至少可以省下將近 13 秒的時間,如果是 Local 團隊開發省下的時間更多了。結論就是大家趕快從 npm 轉到 yarn 吧,yarn 出來不到一個禮拜已經超過 1 萬多個 Star 了,看到開發團隊內包含了許多 Google 前端大神,這讓我更放心的轉換到 Yarn。寫完本篇才發現官方也有提供效能比較表。本文提到的數據及檔案都有一併放到 Github Repo

十月 9, 2016

小惡魔AppleBOY
AppleBOY
小惡魔 – 電腦技術 – 工作筆記 – AppleBOY is about »

tag cloud

» 申請 Let’s Encrypt 免費憑證讓網站支援 HTTP2

Letsencrypt 寫這篇最主要推廣讓網站都支援 HTTPS 加密連線HTTP2 協定,對於網站為什麼要支援 HTTP2,可以直接參考 ihower 寫的說明文章,最近在玩 Facebook, Line, Telegram Bot 時,填寫 Webhook URL,都強制要填寫 https:// 開頭,所以更不能忽略 HTTPS 了。,去年底寫了一篇 Let’s Encrypt 開放申請免費 SSL 憑證 推廣 Let’s Encrypt 的貢獻,讓買不起憑證,又想玩看看 HTTP2 的開發者可以用很簡單的方式來安裝及自動更新憑證,而 gslin 大為了推廣 HTTPS 也做了一個網站教學,文章寫得相當清楚,支援 ApacheNginx 設定。

安裝方式

如果主機是使用 Amazone EC2,可以直接用 AWS Certificate Manager,用 AWS 的好處就是只要透過後台介面搭配 ELB 就可以直接設定好 HTTPS 對應到 EC2 主機,壞處就是直接被綁死,將來如果不要使用 AWS,要轉移機器會相當痛苦。所以本篇會紀錄如何用 Nginx 搭配 Let’s Encrypt。為了方便部署機器,我們選用 dehydrated 來設定 Let’s Encrypt,好處就是不用安裝 Python 套件,官方網站提供的安裝方式需要安裝 Python 相關環境。透過 wget 將 dehydrated 安裝到 /etc/dehydrated/ 底下
$ mkdir -p /etc/dehydrated/
$ wget https://raw.githubusercontent.com/lukas2511/dehydrated/master/dehydrated -O /etc/dehydrated/dehydrated
$ chmod 755 /etc/dehydrated/dehydrated

建立設定檔

建立 dehydrated config 設定檔
$ echo "WELLKNOWN=/var/www/dehydrated" > /etc/dehydrated/config 
$ mkdir -p /var/www/dehydrated
Nginx 設定,先在 80 port 的 Server section 內寫入底下設定:
location /.well-known/acme-challenge/ {
  alias /var/www/dehydrated/;
}
可以先丟個檔案到 /var/www/dehydrated/ 確定網站可以正常讀取檔案,接著透過 dehydrated 指令產生 SSL 設定檔
$ /etc/dehydrated/dehydrated -c -d fbbot.wu-boy.com
執行上述指令會看到底下結果
# INFO: Using main config file /etc/dehydrated/config
Processing fbbot.wu-boy.com
 + Signing domains...
 + Generating private key...
 + Generating signing request...
 + Requesting challenge for fbbot.wu-boy.com...
 + Responding to challenge for fbbot.wu-boy.com...
 + Challenge is valid!
 + Requesting certificate...
 + Checking certificate...
 + Done!
 + Creating fullchain.pem...
 + Done!
最後在設定一次 nginx
server {
  # don't forget to tell on which port this server listens
  listen 80;

  # listen on the www host
  server_name fbbot.wu-boy.com;

  # and redirect to the non-www host (declared below)
  return 301 https://fbbot.wu-boy.com$request_uri;
}

server {
  listen 0.0.0.0:443 ssl http2;
  server_name fbbot.wu-boy.com;

  location /.well-known/acme-challenge/ {
    alias /var/www/dehydrated/;
  }

  ssl_certificate /etc/dehydrated/certs/fbbot.wu-boy.com//fullchain.pem;
  ssl_certificate_key /etc/dehydrated/certs/fbbot.wu-boy.com/privkey.pem;
  location / {
    proxy_pass http://localhost:8081;
  }
}
上面是將 80 port 自動轉到 https,如果下次要重新 renew 的時候才不會又要打開 80 port 一次。

加入 Cron 設定

每天半夜可以自動 renew 一次,請參考 https://letsencrypt.tw/ 最後章節
0 0 * * * root sleep $(expr $(printf "\%d" "0x$(hostname | md5sum | cut -c 1-8)") \% 86400); ( /etc/dehydrated/dehydrated -c -d fbbot.wu-boy.com; /usr/sbin/service nginx reload ) > /tmp/dehydrated-fbbot.wu-boy.com.log 2>&1

後記

除了這方法之外,也可以使用 Certbot 來自動更新憑證,但是這方式就是要安裝 Python 環境,不過也不是很難就是了,可以直接參考這篇『NGINX 使用 Let’s Encrypt 免費 SSL 憑證設定 HTTPS 安全加密網頁教學』。結論就是你可以在網路上找到超多種方法來申請 Let’s Encrypt 憑證,就找到自己覺得不錯的方法即可,而我是認為不用安裝 Python 環境的方式最適合部署了。

十月 5, 2016

小惡魔AppleBOY
AppleBOY
小惡魔 – 電腦技術 – 工作筆記 – AppleBOY is about »

tag cloud

» SSH agent forwarding 教學

2016.11.13 Update: SSH Agent Forwarding 有安全性問題,請用 ProxyCommand 取代,請參考 SSH Agent Forwarding considered harmful Screen Shot 2016-10-05 at 9.26.13 AM SSH agent forwarding 可以讓開發者將 Local 端的 SSH Key Pair 帶到另外一台機器進行傳送,也就是說你不用將 SSH Key 複製到遠端 Server 再進行跳板動作,原本在 AWS 維護多台 EC2 主機,都會固定有一台跳板機,大家都把自己需要登入遠端機器的 SSH Key 複製到跳板機,這做法其實沒有很安全,又需要多下一個指令進行跳板。

個人電腦 —-> EC2 跳板機 —-> EC2 Server
大家都會把 Key Pair 存放到跳板機,安全性堪憂,只要這台主機被 Hack,或者是內部員工登入,拿別人的 Key Pair 登入其它主機,不就可以搞破壞?所以此篇教學主要教大家如何設定 SSH agent forwarding,讓憑證只存放在自己電腦,而不需上傳到 EC2 跳板機。這樣跳板機就真的只是跳板機,不需要存放任何憑證資料,每小時設定清空 Ubuntu User 家目錄,避免內部員工放個人資料或憑證,提升主機安全性。

將 Key Pair 放到清單

透過 ssh-add 指令將 Private Key Pair 加入清單
$ ssh-add ~/.ssh/keys/labs.pem
透過底下指令可以看到清單列表
$ ssh-add -L
這邊注意可以將所有機器的 key pair 都放到 ~/.ssh/keys 目錄,並且設定 400 權限

設定 ~/.ssh/config

方法一: 設定 ~/.ssh/config 檔案,每個 Host 都加上 ForwardAgent yes 參數 (此方法並不安全,請參考 SSH Agent Forwarding considered harmful)
Host aws
  HostName 10.130.xxx.xxx
  User ubuntu
  ServerAliveInterval 60
  ForwardAgent yes
  UseRoaming no
  IdentityFile ~/.ssh/keys/aws.pem
最後執行底下指令就可以直接跳到您要的 EC2 Server
$ ssh -t aws 'ssh example.inc'
方法二: 也是設定 ~/.ssh/config,但是透過 ProxyCommand 而不是 ForwardAgent yes (建議使用此方法)
Host hosta
  User userfoo
  Hostname 123.123.123.123

Host hostb
  User userbar
  Hostname 192.168.1.1
  Port 22
  ProxyCommand ssh -q -W %h:%p hosta
  IdentityFile ~/.ssh/keys/xxxx.pem
ProxyCommand 也不用將 pem 透過 ssh-add 匯入,省下一步指令,接著執行底下指令就可以 ssh 到指定機器,跟方法一比起來更安全又快速
$ ssh hostb
不用再跳板機多下一個 SSH 登入指令,蠻方便又安全。內部 Host Name 可以透過設定 AWS Private Hosted Zones

九月 30, 2016
» calibre 2.69 釋出

自由的跨平臺電子書管理軟體,calibre 2.69 正式版釋出,此版本新增了幾個功能以及修正了 10 個 bug。
calibre 2.X 版本支援 Windows Vista~10 (皆含 32 位元及 64 位元版本)、Mac OS X 10.7 或更新、各種 Linux 發行版。若您的作業系統是 Windows XP 或是 Mac OS X 10.5、10.6,請繼續使用 1.48 版。

來源:http://calibre-ebook.com/whats-new

» LibreOffice 5.2.2 釋出

LibreOffice 5.2.2 已經釋出,這是 5.2 系列的的第二個錯誤修正版本。
對於企業使用者,文件基金會建議在有認證專家做為後盾的情形下部署 5.1 系列到大型企業及組織,以提供額外的加值服務。

新聞來源:LibreOffice 5.2.2 available for download

九月 19, 2016
» LibreOffice Confernece 2016 過程與心得

Day 0

今年(2016年)的 LIbreOffice Conference 在捷克共和國 (Czech Republic) 的布爾諾 (Brno) 於 9/7~9/9 舉辦,我們(我跟 Franklin Weng)在臺灣桃園機場搭乘晚上七點半,國泰航空的班機,先飛往香港國際機場,讓我覺得蠻特別的是,這班飛機上的飛機餐是起司雞肉捲,而不是之前我印象中都是裝成一盤一盤的那種類型的飛機餐,在香港國際機場轉機時,在候機長廊上看到一家名稱就叫作「臺灣牛肉麵」的店家,但是仔細一看發現他們的牛肉麵一碗要價88元港幣XD,雖然說這個價格在機場這種地方應該算是蠻正常的價位,不過我還是覺得頗貴Orz,經過了約莫一個小時的等待後,我們就搭上了飛往法國巴黎戴高樂機場的法國航空班機,不過這班比較久一點,單程約莫是13個小時左右,所以這班飛機提供了兩餐的餐點,但是第一份上來的時間已經是 UTC+8 時區的大約11點多12點左右的時間,以時間來看比較像是在吃宵夜而非晚餐,餐點也算是中規中矩,不過空服員都還算蠻親切的XD,然後飛機上的安全宣導影片也挺有趣的,讓人不得不佩服法國航空在這方面的用心,中間經過了大約8到9個小時的睡眠後(其實沒那麼久,因為在飛機上並不好睡),空服員會在快抵達戴高樂機場前約一小時推出早餐(其實不管以 UTC+8 或是法國當地時間我都不覺得那是早餐就是了......,因為當時如果是用法國當地時間計算的話是約凌晨4點多快5點,若是用 UTC+8 的時間來看也早上10點多快11點了)而到達巴黎戴高樂機場已經是當地時間快早上6點了,這次轉機時間也不久,但是我還是在登機門旁的休息區照了夜晚的機場(順帶一提,因為我沒有調整相機的時間,所以相片上的時均是 UTC+8 時區的時間),順帶一提,可能是因為先前恐攻的關係,這裡的安檢明顯比其他機場要嚴格很多。

DSCI0075
夜晚的巴黎戴高樂機場

Day 1

再來就是搭乘法國航空往捷克布拉格機場的班機,不過這班比較小一點,大約只有兩百人的座位,不過飛行時間也只有兩個半小時左右,而且上面提供的是麵包(只有兩種),大概是因為航班的時間並沒有碰到早餐或是午餐的時間吧?到了布拉格機場後,一路上入境都蠻順利的(順帶一提,因為捷克有簽署申根協定,所以我們在法國的時候就已經先過了一次海關,故視為已在申根區內,不需要在布拉格再次通過海關,所以速度快很多),不過機場內的外幣兌換的匯率真的不是很好,一歐元只換得到約22捷克克朗,在其他地方換都可以換到約26到27左右,所以如果火車票等等都是事先買好的話,其實在機場只要換到足夠坐 Airport Express 的錢就好了,不必一次換太多。再來我們就搭機場外的 Airport Express 接駁車到布拉格火車站,這裡約莫也要半個多小時的時間,然後到了火車站稍事休息後又要搭兩個半小時的火車到布爾諾火車站,順帶一提,因為是我們的火車票是中午12點接近1點的時間,所以我們在布拉格火車站裡的漢堡王吃了一餐,再度抱怨歐洲的物價真的是蠻貴的XD。
DSCI0089
到布爾諾的最後半小時車程
到了布爾諾後,我們又換乘當地的輕軌電車(布拉格與布爾諾的電車其實都很密集)到本次旅館的所在地,再走一小段路便到達旅館,在旅館裡比較讓我驚訝的是,這裡其實是沒有飲水機的,直接裝自來水就可以喝了。另外,這一天傍晚我們也在布爾諾的市中心稍微走走晃晃了一下,其實這整個城市也是蠻漂亮的,以復古的建築物為主,現代化的基礎設施為輔,融合出一種微妙的古城風情。此外,布爾諾這裡的代表物是一隻稱為布爾諾龍 (Brno Dragon) 的鱷魚,傳說這個布爾諾龍是在中古世紀危害布爾諾當地,而後被聰明的旅人以石灰與牛皮解決掉的一隻巨獸。我們這天出來也看到了很多其他的東西,就不一一敘述了。
DSCI0096
被稱為布爾諾龍 (Brno Dragon) 的鱷魚
不過這天晚上我睡得並不是很安穩,不知道是因為時差的關係還是其他原因。

Day 2

這天我因為睡不著,所以一大早就起來了(捷克當地時間早上4點多......),大約6點半時到飯店樓下吃了早餐,其實還算蠻多樣化的,再來10點時我就和 Mark Hung 一起出去布爾諾火車站附近走走逛逛,順便去前一天沒上去看過的教堂看了一下,中間也經過了孟德爾的博物館。
DSCI0107
中午就在附近解決了,下面這一份餐點149捷克克朗,其實以歐洲的物價來說算是很便宜的。
DSCI0130
吃完飯後就搭電車到會場(布爾諾科技大學的其中一個校區)了,不過報到處的工作人員說我們太早到了,叫我們先去旁邊坐一下XD,這個校區我覺得算是還蠻漂亮的。
DSCI0134
再來就是參加下午的 Community Workshop 了,不過真的不得不說全英文溝通讓我有點不太適應......,其中也是討論到蠻多的問題就是了,結束之後我們就去對面的咖啡廳參加這次的 Welcome Party,小點心蠻多的XD。

Day 3

這天開始就都是整天的議程了,今天早上基本上就是聽 The Document Foundation 的工作人員開場並介紹專案目前的狀況,接著是 Sponsor Keynotes,下午的話,因為除了社群軌的前兩場以外我都不太想聽,所以就又自己跑去布爾諾火車站附近逛了逛,順便在紀念品店買了一些東西,包含了明信片、鑰匙圈與撲克牌,才又搭電車回飯店跟 Franklin Weng 與 Mark Hung 會合,一起去 HackNight 的場地,也就是 Red Hat 在捷克的分公司,在當地的科技園區處,在那裡與開發者討論某個 Calc 的日期相關問題要怎麼修復等,不過因為我懶得帶筆電去,所以就只是去吃吃喝喝跟看別人打撞球XD。

Day 4

這天終於換到我要上臺了,所以早上也就待在 Community Track 那一間作簡報方面的最後衝刺,順便聽聽其他人的議程,這天不少其他議程也是與在地化等等議題相關的議程,不只是我這場,但是輪到我的時候,還是覺得很緊張,所以自己感覺也沒有講出所有該講的東西,還讓 Franklin Weng 幫我補充東西,講完也匆匆忙忙的收拾東西下臺,還花了一點時間修不知道發生什麼事的 Plasma 工作空間......。
DSCI0145
我也去聽了 Franklin Weng 的兩場議程,不過正好都跟我在不同間場地,雖然就在隔壁而已XD,也參加了下午的幾場 Workshop,不過除了最後一場的 Marketing Workshop 以外其實都不太有趣......。
晚上就到當地在火車站附近的 Charlie's Square 參加 Conference Party,不過當時有聊到天的人不多就是了QQ。

Day 5

這天的議程也不少,其中有一個說到了 LibreOffice 相關的 E-learning,不過受限於我的英語聽力,所以也聽得不是很懂,另外也有幾場與日本目前的自由軟體環境相關的議程,以及一些與學校和政府等公部門或教育相關的單位的議程,下面這張照片是其中一個我覺得蠻有趣的句子:
DSCI0165
至於下午就是關於遷移到自由軟體的議程與另一個建立與發展在地化社群的議程,不過我個人認為裡面並沒有說到什麼詳細的資訊QAQ,再來就是閉幕了,TDF 的工作人員也出來了不少啊XD。

Day 6

這天等 Franklin Weng 吃完飯我們就從飯店出發去火車站了,畢竟是9點半多一點的火車,不過我們到火車站的時間其實才大約9點而已,還在車站內逛了逛,看到了一家二手書店竟然有在賣一些大概2009以前的微軟技術書籍XD,不過我們要搭的這班火車也延誤了10分鐘......,在月臺上有點無聊XD。
DSCI0167
布爾諾火車站的月臺
12點多時終於到了布拉格火車站,因為已經中午了,所以又在第一天的那間漢堡王吃午餐,隨後就去售票處買了往機場的 Airport Express 車票,不過讓我覺得比較奇怪的一點是,第一天我們買的車票一張要 60 捷克克朗,但是這天在售票處竟然只要 37 捷克克朗?!而且竟然還能上車......,我實在是搞不懂這裡的售票機制啊......,總而言之,我們還是順利坐上車到了機場,在機場又把捷剋剋朗換回歐元,不過機場的匯率真的很差,來的時候一歐元只換得到22捷克克朗,但是換回去卻要30捷克克朗才能換到一歐元......,其實這匯差也蠻大的,不過也算是一次經驗這樣啦,從布拉格到阿姆斯特丹飛機航程才一個多小時,不過是一百多人座的小飛機,在阿姆斯特丹停留稍微久了一點,所以就在候機長廊裡的商店買了一些紀念品,本來考慮蠻久的,有一些東西不知道該不該買,後來想說反正帶回去也是被匯差吃掉,不如在這裡多花一點,然後就上了回臺灣的飛機了,不過這班飛機其實終點是馬尼拉,到臺北(其實是到桃園機場,不過國外的機場都是寫到 Taipei XD)算是中轉站?在飛機上我那個座位的機上娛樂系統一直當掉,空服員久久才幫我重開一次,不過沒想到他們的機上娛樂系統竟然是用 Linux 當核心XD,看來把別人的系統搞掛也是有好處的(?),飛了十多個小時後終於抵達桃園機場了,在領完行李,並與 Franklin Weng 分道揚鑣後,我也搭上了往高鐵站的接駁車,然後搭上了高鐵回到家了,不得不說,這次到捷克真的讓我感覺到不同地方文化有多麼的不同。

最後還是要感謝舉辦這次 Conference 的所有工作人員!

九月 17, 2016

小惡魔AppleBOY
AppleBOY
小惡魔 – 電腦技術 – 工作筆記 – AppleBOY is about »

tag cloud

» 在 Travis 實現 Docker Cache

docker 前一篇寫了『用 Travis 自動上傳 Docker Image』,Travis 跑完測試成功後才自動編譯 Docker Image 並且上傳到 Docker Hub。在每次 commit 後,Travis 執行 docker build 時間總是非常長,當然原因很多。如果選用的 Docker base image 非常肥,指令非常多,每次編譯都要重新下載及執行指令,所以執行時間就是這麼長。本篇就是想辦法減少 Travis 編譯 Image 時間,就像把 node_modules 壓縮起來,下次執行測試前先解壓縮再安裝,可以大幅減少 npm install 時間(可以參考之前的『用一行指令加速 npm install』)。這邊我們就需要用到 Travis 的 Cache 功能

啟動 Travis Cache 快取服務

啟動方式如下:
cache:
  directories:
    - ${HOME}/docker
假設有其他目錄需要 cache,像是 npmnode_module 或是 Laravelvendor,都可以透過此方式設定。

讀取 Docker Cache 快取

before_install 內透過 docker load 指令讀取 cache 資料
before_install:
  - if [ -f ${DOCKER_CACHE_FILE} ]; then gunzip -c ${DOCKER_CACHE_FILE} | docker load; fi
其中 DOCKER_CACHE_FILE 可以定義在 env 內
env:
  global:
    - DOCKER_CACHE_FILE=${HOME}/docker/cache.tar.gz

儲存 Docker Image cache 快取

經過測試及編譯 Image 後,就可以進行 儲存 Docker 快取
script:
  # 進行測試
  - make test
  # 編譯 Image
  - make docker
  # 儲存快取
  - if [ "$TRAVIS_BRANCH" == "master" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ]; then
    mkdir -p $(dirname ${DOCKER_CACHE_FILE});
    docker save $(docker history -q appleboy/drone-line:latest | grep -v '<missing>') | gzip > ${DOCKER_CACHE_FILE};
    fi
透過 docker save 指令將 Image 存起來,這樣下次再執行編譯 Image 時,就會先找看看是否有快取。上面設定只有 master branch 才會儲存快取,但是在任何一個 branch 都可以享受到快取的服務喔。

» 用 Travis 自動上傳 Docker Image 到 Docker Registry

docker 在今年七月寫了一篇『在 Travis 升級 Docker 和 docker-compose 版本』,就在上個月底 Travis 終於將 Docker 預設版本換成 1.12.x 版本,並且將 docker-compose 也一併升級到 1.8.0,這樣就可以不用手動升級了。那這篇會紀錄如何用 Travis 自動編譯 Docker Image 並且上傳到 Docker Hub。Docker Hub 提供兩種方式讓開發者上傳 Image,第一種是透過 Command line 下指令手動上傳,另外一種則是在 Docker Hub 後台指定 Dockerfile 路徑及需要執行編譯的分支,這樣只要 Push commit 到 Github,Docker Hub 就會根據 Dockerfile 來自動編譯 Docker Image。本篇會介紹如何透過 Travis 服務來自動上傳 Dokcer Image,像是 Golang 的部屬方式通常是編譯出 Binary 執行檔後,將此執行檔加入 Image 最後才上傳。

在 Travis 啟動 Docker Service

啟動方式非常簡單,只要加入底下程式碼到 .travis.yml
services:
  - docker

準備 Dockerfile 編譯 Image

我們用 Golang 為例,底下是 Dockerfile 範例
FROM alpine:3.4

RUN apk update && \
  apk add \
    ca-certificates && \
  rm -rf /var/cache/apk/*

ADD drone-line /bin/
ENTRYPOINT ["/bin/drone-line"]
接著透過底下指令編譯出 Dokcer Image
$ docker build --rm -t $(DEPLOY_ACCOUNT)/$(DEPLOY_IMAGE) .
DEPLOY_ACCOUNT 是 Dokcer hub 帳號,以我的帳號為例就是 appleboyDEPLOY_IMAGE 則是 Image 名稱。請將這指令寫道 .travis.yml 內的 script
script:
  # 執行測試
  - make test
  # 通過測試後開始編譯 Image
  - docker build --rm -t $DEPLOY_ACCOUNT/$DEPLOY_IMAGE .
最後一道指令就是上傳了

上傳 Image 到 Docker Hub

由於上傳到 Docker Hub,需要登入帳號密碼,而 Travis 提供兩種方式讓開發者設定 Private global value,你不會想把帳號密碼用明碼方式寫在 .travis.yml 吧。在早期 Travis 只提供一種方式就是透過 travis 指令來新增,詳細指令可以參考這文件,這邊就不教大家指令了,而另一種方式就是到 Travis 管理頁面直接進到 settings 設定即可 Screen Shot 2016-09-17 at 3.03.12 PM 將帳號密碼設定完成後,請在 after_success 加上上傳指令
after_success:
  - if [ "$TRAVIS_BRANCH" == "master" ] && [ "$TRAVIS_GO_VERSION" == "1.7.1" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ]; then
    docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD";
    make docker_deploy tag=latest;
    fi
上面表示只要是 master 分支,測試環境為 Golang 1.7.1 且不是在 Pull Request 狀態就執行登入,並且上傳,其中 make docker_deploy tag=latest 代表意思如下 (我把指令寫在 Makefile 內):
docker tag $(DEPLOY_ACCOUNT)/$(DEPLOY_IMAGE):latest $(DEPLOY_ACCOUNT)/$(DEPLOY_IMAGE):$(tag)
docker push $(DEPLOY_ACCOUNT)/$(DEPLOY_IMAGE):$(tag)
上面步驟完成,之後只要 commit 到主分支,Travis 就會自動編譯 Image 並且上傳到 Dokcer Hub,蠻方便的。

九月 16, 2016
» calibre 2.68 釋出

自由的跨平臺電子書管理軟體,calibre 2.68 正式版釋出,此版本新增了幾個功能以及修正了 11 個 bug。
calibre 2.X 版本支援 Windows Vista~ 10 (皆含 32 位元及 64 位元版本)、Mac OS X 10.7 或更新、各種 Linux 發行版。若您的作業系統是 Windows XP 或是 Mac OS X 10.5、10.6,請繼續使用 1.48 版。

來源:http://calibre-ebook.com/whats-new

九月 14, 2016
» 應用內政部20公尺網格數值地形模型資料

政府開放資料的挑戰

2016/09/09 台灣政府內政部發布開放全臺及澎湖地區的20公尺網格DTM,這真是政府開放地理資訊之一大里程碑!

在此筆資料發布之前,台灣政府已經陸陸續續發布了相當多以 WMSKML、GeoJSON 等格式的地圖資料集,特別是七月底發布的經建版地形圖數值檔 (比例尺為2萬5千分之1、5萬分之1及10萬分之1),一舉將原本每幅圖檔收費150元(非加值型)、600元(加值型)改成以政府資料開放授權條款散布!

內政部部國土測繪中心的「經建版地形圖數值資料檔(比例尺為二萬五千分之一、五萬分之一及十萬分之一)」前經「105年行政院資料開放諮詢小組第2次會議」列為甲類資料,並經本部105年7月26日台內地字第1051306149號令修正發布「國土測繪成果資料收費標準」第2條附表附件2,開放資料供免費下載使用,授權條款採用行政院「政府資料開放授權條款-第1版」

這批 2016/07/28 釋出的圖檔包括二萬五千分之一經建版地形圖計262幅、五萬分之一經建版地形圖計80幅及十萬分之一經建版地形圖計7幅,共計349幅。

不含等高線圖層,但是包含水系、道路、行政界線、鐵道、高壓線、建築區等圖層,及圖例、中文註記等向量圖層。

雖然這批經建版地形圖數值檔的部份圖檔年代久遠,座標系統部份因為製圖時偏好,選用了 TWD67(119分帶)TWD67(121分帶)TWD97(121分帶) 等等不同的座標系統,格式也是需要私有軟體 AutoCAD 2013/2014 的 AC1027,實務上仍需要整理之後才有使用價值。

但是這項開放政策代表政府機關終於願意改變預設立場,將此圖資所能帶來的歲入財源,換取開放資料活化應用的經濟價值。而這種預設立場是過往法條的規範所造成的,例如規費法第7條與第8條明定:「為特定對象之權益辦理下列事項,應徵收行政規費;交付特定對象或提供其使用下列項目,應徵收使用規費。」,在「特定對象」的授權前提下,依據規費法所定義的各種政府資料管理辦法就會變成

  • 限制利用目的;
  • 禁止將資料或加值/衍生產品自由移轉、散布;
  • 要求利用人之委託人管制資料的利用。

以至於降低各種資料再度利用的可能性。如果今天這筆資料沒有以政府資料開放授權條款發布,我也無法依照測繪圖資供應收費基準透過購買加值型授權後,將資料初步處理後開放給 OSM 社群再產製程其他格式的地圖。

社群交流

這不是一夜之間發生的事情,前前後後有來自不同的非營利組織的許多專家、學者與政府官員開會交流。

以開放街圖社群為例子,社群代表早在 2014 年中開始與行政院接觸,前前後後開了不少次會議

這些會議的主題基本圍繞著

目的是逐一針對釋出資料的可行性等等討論。

最初的會議相當令人挫折,很多時候會由於雙方對於期待「開放」的程度不同,討論難以有交集,加上具體需要調適的繁複法規,以及對於變動政策後難以預期的民意反應等等,往往讓進度難以快速推進,所幸一直有積極的政務官支持推進。

即使有最高層級的官員支持,從願意採納意見到實際釋出資料,還要好長一段時間。

這些工作包含要調適法規,包含釋出的資料必須仍在個人資料保護法、著作權法之下,以及行政罰法、規費法等等都會影響各機關的支持度。法規不甚完備,加上政府機關的缺乏積極動機,維持資料正確與即時性需要透入預算與資源,但是政府機關往往並非資料利用的受益者,公開資料只會帶來違法的風險。

數值地形模型資料的應用

其實內政部100公尺網格數值地形模型資料是最早開放的資料,但是 100 公尺的精度缺乏實用價值,且早在 2011 年就有學者建議國安單位應該逐步開放更高精度的 DTM 資料。許多使用開放圖資的用戶使用 NASA Shuttle Radar Topography Mission (SRTM) 的 DEM 資料,它的理論精度是 1 arc/second (30公尺),但由於它是插點處理,仍有缺陷。但是那是一般研究單位或是 OpenStreetMap 可以拿到的免費資料,也因此許多拿 OpenStreetMap 為底圖做戶外運動的使用者會拿 SRTM 作為等高線地形圖的參考資料。

作為一個以登山為主要應用的開放街圖使用者,在 2014/07/27 在行政院開的第一次會議上,我就提議將數值地形模型優先開放。

第一次會議後足足過了兩年,終於等到這筆20公尺網格DTM數值地形模型

這批資料的 HDR 資料顯示是 2006 年測製,由財團法人成大研究發展基金會使用 5M 網格資料疏化重製 20M 網格資料。座標系統則是 TWD97 / TM2 zone 121DTM數值地形模型 不只是可用於產製等高線 (Contour lines) 與彩色暈渲圖 (Hillshade map),尚可用於工程模擬、地形查詢、立體地形圖、坡度計算等等。

以目前台灣的登山社群而言,可以立刻用於取代原本的 SRTM 地圖資料。
例如地圖產生器在 v4.02 即已經使用此數據作為地形高度查詢的參考資料
也可以用於產生 Mapsforge 離線向量圖資,目前台灣社群已經長期供應的有 Jing 的 ASTER.OSM綠野遊蹤離線圖資來源。這些圖資將可以用於手機的 OsmAndLocus MapOruxMaps綠野遊蹤等軟體。

也可以產製成 Garmin 裝置所需的地圖格式,台灣有 ASTER.OSM台灣登山地圖 – Taiwan TOPO 等。

由於這批資料的座標系統是 二度分帶(TWD97,中央經線121度),為了使用方便,我將原始的 GeoTIFF / ASCII gridded XYZ raster datasets 一律轉成 WGS84,以方便再度後製使用。

目前轉好的格式有

  • GeoTIFF 與 LZW 壓縮版 GeoTIFF。可用於產生彩色暈渲圖、地形查詢等。
  • Shapefile – 分成 10公尺、20公尺、50公尺、250公尺間距的等高線向量圖。可用於 QGIS 或其他 GIS 軟體。
  • Postgres/PostGIS SQL – 分成 10公尺、20公尺、50公尺、250公尺間距的 MULTILINESTRING 等高線圖層。可以用 PostgreSQL/PostGIS 接上 QGIS 顯示,或是透過 mapnik/CartoCSS 等工具輸出成圖磚 (slippy map).
  • SRTM HGT – 由於 HGT 格式需求此為 downsampling 成 3601×3601 版本。可以放進手機,部份軟體支援直接畫出等高線或地形圖。由於是縮減取樣處理,不建議作為再產製原料。
  • OSM PBF – 10 公尺間距的等高線資料。可以用於合併 OSM 圖資,生成手機用的離線 Mapsforge 圖資或是 Garmin 版本地圖。

相關格式的圖資以及轉換的命令語法,請於此下載 http://goo.gl/Wku11y

如果有圖資應用上的問題,歡迎到 OpenStreetMap台灣 社群討論。如果有手機使用此版圖資的問題,可以洽詢手機GPS登山推廣計畫及其經驗交流聯誼會,或是別讓自己迷失(手機GPS應用)以及正在籌備成立的福爾摩沙山難預防協會

此資料集以 CC0 授權。使用者利用此資料,受有損害或損失,或致第三人受有損害或損失,而遭求償者,不負任何賠償或補償之責。

圖資預覽

目前已知的幾個問題,一是外海部份由於有負數高程,導致海岸線出現方框或人工痕跡。另外無論是分幅雲林縣資料或不分幅全台資料,在 (120.682650, 23.608483) 與 (120.682283, 23.604167) 兩處有高達六千公尺的奇怪外星建築。

外星建築

與 SRTM 比對發現可用性高很多。以往 SRTM 圖資精度不足,使許多河谷的等高線錯誤,容易將河谷誤判為稜線。

SRTM 版本

內政部版本

以下與 2001 的經建三版兩萬五千分之一紙圖比對。可能很多山友會在登百岳的時候購買上河文化的地圖,或是在爬中級山的時候,使用地圖產生器印出經建三版的紙本地圖,然後用膠帶防水貼好帶上山。

經建三版套疊等高線

透過內政部這次釋出的資料搭配 OSM 的山岳路線,山友將可以搭配使用產生出具備高即時性,使用便利的手機或專業手持衛星定位裝置離線地圖。

感謝這一路以來,努力謀求共識的各位政府機關、專家朋友們!

九月 13, 2016

小惡魔AppleBOY
AppleBOY
小惡魔 – 電腦技術 – 工作筆記 – AppleBOY is about »

tag cloud

» Drone CI Server 搭配 Atlassian Bitbucket Server (前身 Stash)

Screen Shot 2016-09-13 at 10.36.58 AM 目前團隊是使用 Atlassian Bitbucket 搭配 Bamboo,雖然 Bamboo 搭配自家的 Bitbucket (前身是 Stash Server) 整合得相當不錯,但是個人覺得設定上蠻複雜的,所以才想測試看看其他家 CI Service 對團隊學習及設定上更容易。最近找到一套用 Golang 寫的 CI Server 就是 Drone,Drone 線上文件提供了 Github, Gitlab, Gogs, Bitbucket (Stash) 等整合。在整合 Drone 搭配 Bitbucket 時,文件寫得不是很清楚,尤其是在 Bitbucket 建立 Application Link 遇到許多問題,官方文件也沒寫得很清楚,故寫此篇記錄如何將 Drone 服務整合 Bitbucket 伺服器。

建立 Application Link

Screen Shot 2016-09-13 at 10.59.51 AM 表單需要注意的地方是 Customer KeyShared Secret 這兩欄位請直接到 Drone 設定檔內找到
DRONE_SECRET: "replace-this-with-your-own-random-secret"
DRONE_STASH_CONSUMER_KEY: "AppleBoy46"
最下面的 Create Incoming Link 要勾選,完成後按下一步會出現底下畫面 Screen Shot 2016-09-13 at 11.07.59 AM 這邊要注意的是我們尚未建立 Public Key,所以請繼續看底下如何建立。

建立 Private Key File

要跟 Bitbucket 的 OAuth 建立連線,則需要 private 跟 public RSA certificate,底下是建立 private certificate
$ openssl genrsa -out /etc/bitbucket/key.pem 1024
上面會建立一把 private key 存放到 mykey.pem,下一個指令則是產生 public certificate
$ openssl rsa -in /etc/bitbucket/key.pem -pubout >> /etc/bitbucket/key.pub
完成後,請打開 /etc/bitbucket/key.pub,將內容複製到上述表單內 public key 欄位。另外要將 /etc/bitbucket/key.pem 位置設定在 Drone config 內。
DRONE_STASH_CONSUMER_RSA: "/etc/bitbucket/key.pem"
完成後就可以看到底下畫面 Screen Shot 2016-09-13 at 11.21.24 AM 看到這畫面算是大功告成了。送了新 PRDrone 官方團隊,今天寫文件才知道之前送的 PR 有錯誤。

參考

九月 12, 2016
» Plasma 5.7.4 與其他許多重要的套件已經可用 (Chakra GNU/Linux)

KDE Plasma 的最新更新現在都已提供給所有的 Chakra 使用者,也包含其他大部份在 core 套件庫中的重要套件。另外,我們現在也在套件庫中提供 Vulkan API 相關的套件與驅動程式。

Plasma 5.7.4 則提供了錯誤修復與新翻譯,其中大部份的變動都在 Plasma 桌面與工作空間套件上。

其他值得注意的套件更新包含了:

[core]

  • systemd 231
  • mesa 12.0.1
  • vulkan API 套件
  • intel-ucode 20160607
  • libinput 1.4.0
  • xf86-input-libinput 0.16.0
  • libpng 1.6.24
  • fontconfig 2.11.94
  • rust 1.11.0

[desktop]
  • libreoffice 5.2.1

[lib32]
  • wine 1.9.18

請在 Pacman 詢問您是否要取代套件時一律回答 yes。若您有任何的疑問或是遇到關於此更新的任何問題,請在對應的論壇貼文詢問或回報。

我們大多數的鏡像可能需要12至24小時同步,同步完後,更新應該是相當安全的。我們也提供了一個簡單的鏡像狀態頁面來檢查您的鏡像在什麼時候與主伺服器同步。

新聞來源:Plasma 5.7.4 and several important package updates available in Chakra

support:

biggo.com.tw

A Django site.