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

五月 6, 2016
» LibreOffice 5.0.6 釋出

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

新聞來源:LibreOffice 5.0.6 available for download

五月 5, 2016

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

tag cloud

» Golang 套件管理工具 Glide

Go-brown-side.sh 套件版本管理已經是各大語言不可或缺的工具,像是 Node.jsnpmPHPComposerRubyRVM 等…,都已經發展很成熟了,但是在 Golang 語言呢,在 Go 1.5 以後的版本,可以透過 GO15VENDOREXPERIMENTGlide 來管理套件版本,在 Go 官方網站也有整理一份 Wiki,開發者可以選一套適合自己的來使用,而今天要介紹這套 Glide,在開始之前,大家先來了解 Go 提出的 vendor experiment

vendor experiment

Golang 1.5 版本提出 vendor experiment 功能,讓每個 Package 都可以擁有自己的 vendor 目錄,當 compiler 要找尋 import package 時,會預設先從 vendor 目錄找起,如果沒有的話就會繼續找 $GOPATH 最後找 $GOROOT。底下來看一個 Project 範例。

example

- $GOPATH/src/github.com/example/foo
  |
  -- main.go
  |
  -- vendor/
       |
       -- github.com/example/bar
在這範例可以看到有主程式 main.go,在 main.go 內 import github.com/example/bar,系統就會把相關 import package 都下載到 vendor 目錄,取代原本會下載到 $GOPATH 目錄,這邊要注意的是,開發中的專案目錄(在這範例是 github.com/example/foo),務必要放在 $GOPATH 目錄內。如果你還在用 go 1.5 版本,請記得加上環境變數 GO15VENDOREXPERIMENT=1,1.6 版本已經預設將 GO15VENDOREXPERIMENT 設定為 1 了,不知道環境變數可以透過 go env 看看目前 go 變數狀態。

Glide 套件管理

Glide 是 golang 套件管理工具,用來管理專案的 vendor 目錄,開發者可以透過 Glide 建議各專案的 glide.yaml 設定檔,並且定義相關套件版本資訊,Glide 會負責將套件下載到 vendor 目錄內。底下是 Glide 安裝方式。

安裝 Glide

安裝 Glide 非常簡單,可以直接到 Github 下載 Binary 執行檔,或者是透過 go 來安裝
$ go get github.com/Masterminds/glide
$ cd $GOPATH/src/github.com/Masterminds/glide && make install

使用 Glide

在專案內直接執行底下指令來建立 glide.yaml 設定檔
$ glide init
# 或
$ glide create
產生出來的 glide.yaml 格式如下
package: github.com/appleboy/gorush
import:
- package: gopkg.in/yaml.v2
- package: gopkg.in/redis.v3
- package: github.com/Sirupsen/logrus
  version: v0.10.0
- package: github.com/appleboy/gin-status-api
- package: github.com/fvbock/endless
- package: github.com/gin-gonic/gin
- package: github.com/google/go-gcm
- package: github.com/sideshow/apns2
  subpackages:
  - certificate
  - payload
- package: github.com/stretchr/testify
- package: github.com/asdine/storm
- package: github.com/appleboy/gofight
- package: github.com/buger/jsonparser
如果原本專案內就有使用 Godep, GPM, or GB 等套件管理,Glide 會自動把該套件無痛整合進來。完成後可以透過 glide upglide install 來安裝相關套件。兩個指令差別在哪?如果專案內沒有 glide.lock 檔案,當您執行 glide install 後,其實系統會先執行 glide up 產生 glide.lock 檔案,glide.lock 內記錄了所以套件版本資訊。你可以把 glide.lock 想像成 PHP 的 composer.lock
hash: 4e05c4dd1a8106a87fee3b589dd32aecc7ffeb1246bed8f8516b32fe745034d6
updated: 2016-05-04T14:26:47.161898051+08:00
imports:
- name: github.com/alecthomas/kingpin
  version: e1543c77ba157565dbf7b3e8e4e15087a120397f
- name: github.com/alecthomas/template
  version: a0175ee3bccc567396460bf5acd36800cb10c49c
  subpackages:
  - parse
也就是專案內使用了 A 套件,A 又使用了 B,這樣 Glide 會把套件 hash 值記錄在 glide.lock 檔案內,其他開發者下載您的專案後,只需要下 glide install 就可以開始 build binary 了。如果要安裝單一套件呢,可以使用 glide get 指令,該指令會將新的套件寫入 glide.yaml 設定檔。
$ glide get --all-dependencies -s -v github.com/gin-gonic/gin
  • --all-dependencies: 下載相依套件全部的 dependencies
  • -s: 下載後刪除 .git 目錄
  • -v: 移除 Godeps/_workspace 等相關目錄
當然你也可以指定套件版號
$ glide get --all-dependencies -s -v github.com/gin-gonic/gin#v1.0rc1
如果是想更新全部 dependencies 寫到 glide.lock,可以直接下底下指令,Glide 會把套件 dependencies 全部下載到 vender 內,就好比執行 go get -d -t ./... 指令一樣。
$ glide update --all-dependencies --resolve-current

結論

使用套件管理後,務必將 glide.lock 加入版本控制,更新時請務必看看各套件的 Changelog,並且將測試寫完整。如果是 API 測試,可以參考之前寫的一篇測試工具 用 gofight 來測試 golang web API handler

四月 29, 2016
» calibre 2.56 釋出

自由的跨平臺電子書管理軟體,calibre 2.56 正式版釋出,此版本新增了幾個功能以及修正了 7 個 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

» Plasma 5.6.3、Applications 16.04.0 已經可用 (Chakra GNU/Linux)

KDE Plasma 與 Applications 的最新更新已提供給所有 Chakra 的使用者,也包含了其他套件的更新。這次更新需要手動干預,因為有一個先前存在的檔案被丟棄後又移動到其他套件中。要正確地執行本次更新請見下列說明:
$ sudo pacman -Syu → 這裡應該會有錯誤
$ sudo pacman -S kde-runtime --force → 這可以繞過這個問題
$ sudo pacman -Syu → 像平常一樣繼續更新

Plasma 5.6.3 包含了新翻譯與錯誤修復,其變動主要是關於 plasma 桌面與工作空間、kwin 與 addons。

Applications 16.04 包含了移植到 Frameworks 5 的 kcolorchooserkfloppykmahjonggkrdc。新的音樂應用程式也被引入,其稱為 minuet許多臭蟲已被修正,同時也加入了許多新功能到套件中,像是 kontact 套裝軟體、kdenlivearkokularkhelpcenter 以及 kleopatra

其他較重要的套件更新:
  • exiv2 0.25 與 libgit2 0.24 都收到了會破壞相容性的更新。如果您有依賴於它們的本機套件或是從 CCR 安裝的套件,請重建它們。
  • digikam 5.0.0-beta6
  • openjdk 8.u92
  • hugin 2016.0.0
  • kdevelop 4.90.91-1
  • zanshin 0.4.0-1
請在 Pacman 詢問您是否要取代套件時一律回答 yes。若您有任何的疑問或是遇到關於此更新的任何問題,請在對應的論壇貼文詢問或回報。

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

新聞來源:Plasma 5.6.3 and Applications 16.04.0 by KDE now available

四月 28, 2016

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

tag cloud

» Git Flow 與團隊合作

branching-illustration@2x 本月最後一篇投影片來介紹 Git Flow 流程該如何導入團隊,之前寫過一篇 Git branch model 文章,裡面提到該如何正確使用 branch,但是現在回想起來要導入團隊內真的是有點麻煩,也遇到蠻多問題的,後來最後只採用 Github Flow,簡單又容易理解,如果開發者很常在 Github 活動,相信對於此方法並不會很陌生。

投影片大綱

Git flow 與團隊合作 from Bo-Yi Wu

四月 26, 2016

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

tag cloud

» 來聊聊 PHP & JavaScript & CSS 的 Coding Style

Screen Shot 2016-04-20 at 11.47.45 PM 專案開始前,要決定好前端或後端各用什麼語言及制定符合團隊的 Coding Style,統一團隊 Style 是非常重要的,尤其是專案需要經過 Code Review 步驟,不要造成 Reviewer 困擾。底下寫了一份投影片介紹 PHP & JavaScriptCSS 的基本 Coding Style 及該如何透過工具來改善 Coding Style。

大綱

  • 為什麼要制定團隊 Coding Style
  • PHP 語言的 Coding Style 及工具
  • PostCSS 簡介
  • JavaScript ES5 Style Rule
  • 開始寫 JavaScript 2015
PHP & JavaScript & CSS Coding style from Bo-Yi Wu

四月 24, 2016

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

tag cloud

» 在 linkit smart 7688 寫 golang

7688_7688duo 很高興 Mediatek 在去年推出 linkit smart 7688 開發版,你可以把 7688 想成是一台迷你型 Router,如果不來拿開發,也可以當家用 Router 也是不錯的。7688 讓開發者可以在上面寫 Node.js, Python 及 Native C,光是聽到 Node.js 就很興奮,用 JavaScript 控制硬體。但是本篇要介紹如何在 7688 執行 Golang 程式,其實不難,只要把 OpenWrt 支援 gccgolibgo 即可。底下步驟同步於我的 Github Repo

用 Docker 安裝 7688 環境

我建立了一個 Dockerfile,讓開發者可以透過 Docker 快速在任何作業系統產生開發環境,安裝步驟如下:
$ git clone https://github.com/appleboy/linkit-smart-7688-golang.git 
$ cd linkit-smart-7688-golang && docker build -t mt7688 .
開啟 7688 terminal 環境
$ docker run -ti --name 7688 mt7688 /bin/bash

啟動 gccgo 和 libgo

底下步驟教您如何打開 gccgo 及 libgo 選單。打開 package/libs/toolchain/Makefile 找到
define Package/ldd
在前面插入
define Package/libgo
$(call Package/gcc/Default)
  TITLE:=Go support library
  DEPENDS+=@INSTALL_GCCGO
  DEPENDS+=@USE_EGLIBC
endef

define Package/libgo/config
       menu "Configuration"
               depends EXTERNAL_TOOLCHAIN && PACKAGE_libgo

       config LIBGO_ROOT_DIR
               string
               prompt "libgo shared library base directory"
               depends EXTERNAL_TOOLCHAIN && PACKAGE_libgo
               default TOOLCHAIN_ROOT  if !NATIVE_TOOLCHAIN
               default "/"  if NATIVE_TOOLCHAIN

       config LIBGO_FILE_SPEC
               string
               prompt "libgo shared library files (use wildcards)"
               depends EXTERNAL_TOOLCHAIN && PACKAGE_libgo
               default "./usr/lib/libgo.so.*"

       endmenu
endef
找到
define Package/libssp/install
在前面插入
define Package/libgo/install
    $(INSTALL_DIR) $(1)/usr/lib
    $(if $(CONFIG_TARGET_avr32)$(CONFIG_TARGET_coldfire),,$(CP) $(TOOLCHAIN_DIR)/lib/libgo.so.* $(1)/usr/lib/)
endef
找到
$(eval $(call BuildPackage,ldd))
在前面插入
$(eval $(call BuildPackage,libgo))
打開 toolchain/gcc/Config.in 最後面插入
config INSTALL_GCCGO
    bool
    prompt "Build/install gccgo compiler?" if TOOLCHAINOPTS && !(GCC_VERSION_4_6 || GCC_VERSION_4_6_LINARO)
    default n
    help
        Build/install GNU gccgo compiler ?
打開 toolchain/gcc/common.mk 找到
TARGET_LANGUAGES:="c,c++$(if $(CONFIG_INSTALL_LIBGCJ),$(SEP)java)$(if $(CONFIG_INSTALL_GFORTRAN),$(SEP)fortran)"
取代成
TARGET_LANGUAGES:="c,c++$(if $(CONFIG_INSTALL_LIBGCJ),$(SEP)java)$(if $(CONFIG_INSTALL_GFORTRAN),$(SEP)fortran)$(if $(CONFIG_INSTALL_GCCGO),$(SEP)go)"
打開 Kernel Configuration
$ make menuconfig
  • Target System: Ralink RT288x/RT3xxx
  • Subtarget: MT7688 based boards
  • Target Profile: LinkIt7688
啟動 gccgo
-> Advanced configuration options
-> Toolchain options
-> Select Build/Install gccgo
-> C library implementation
-> Use eglibc

撰寫 golang hello world

Go-brown-side.shalias 設定 mips gccgo 路徑
alias mips_gccgo='/root/openwrt/staging_dir/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_glibc-2.19/bin/mipsel-openwrt-linux-gccgo -Wl,-R,/root/openwrt/staging_dir/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_glibc-2.19/lib/gcc/mipsel-openwrt-linux-gnu/4.8.3 -L /root/openwrt/staging_dir/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_glibc-2.19/lib'
hello world 程式
package main

import "fmt"

func main() {
  fmt.Println("hello world")
}
編譯執行檔
$ mips_gccgo -Wall -o helloworld_static_libgo helloworld.go -static-libgo
在 7688 裝置內執行 helloworld_static_libgo
root@mylinkit:/tmp/7688# ./helloworld_static_libgo 
hello world
以上步驟就可以完成 hello world 程式,詳細步驟都記錄在 linkit-smart-7688-golang

四月 22, 2016
» Linux 核心與顯示卡驅動程式更新進入穩定套件庫 (Chakra GNU/Linux)

本次更新包含了我們的核心套件庫的許多更新,包含了 Linux 核心、顯示卡驅動程式,以及其他許多套件。

為了避免複雜化更新過程,讓潛在的故障排除變得不易,Plasma 5.6.3Applications 16.04 將會在接下來的幾天內才進到穩定套件庫。這些都已經提供給我們的測試員了,他們協助我們在把套件移動至穩定套件庫前抓出大部份可能的臭蟲。改善了所有 Chakra 使用者的體驗。

核心:

  • linux 4.5.1
  • linux-lts 3.14.66
顯示卡驅動程式:
  • mesa 11.2.1
  • xf86-video-amdgpu 1.1.0
  • xf86-video-ati 7.7.0
  • xf86-video-intel 2.99.917+544+g8b8c9a3
  • nvidia 364.16
  • nvidia-340xx 340.96
  • nvidia-304xx 304.131
其他套件:
  • primus 20151110
  • phonon 4.9.0
  • btrfs-progs 4.5.1-2
  • intltool 0.51.0
  • rust 1.8.0
  • samba 4.3.8
  • sqlite3 3.12.1
  • wine 1.9.8

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

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

新聞來源:Updated linux kernel and graphics packages available


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

tag cloud

» Docker 基礎介紹與實戰

docker 在個人開發環境或者是部署上,Docker 已經是不可或缺的工具,尤其是團隊開發上,如何用 Docker 統一團隊開發環境,減少團隊成員浪費在環境建置及開發上互不影響,底下來看看投影片大綱:

投影片大綱

Docker 基礎介紹與實戰 from Bo-Yi Wu
強烈推薦大家將 Docker Best Practices Cheat Sheet 圖表 印出來貼在座位前面

四月 15, 2016
» calibre 2.55 釋出

自由的跨平臺電子書管理軟體,calibre 2.55 正式版釋出,此版本新增了幾個功能以及修正了 13 個 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

四月 9, 2016

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

tag cloud

» 在 WordPress 內寫 Markdown 語法

Markdown-mark.svg

Markdown 還沒出來之前,要寫一篇部落格教學真的非常麻煩,尤其是要學習 html 語法及如何引用程式碼在文章內,Markdwon 的出現,改變了整個工程師寫 Blog 的習慣,現在不管使用任何網站,沒有支援 Markdwon 語法,真的就不太想留言或發文了。最早以前自己的部落格是用 WP-Markdwon 這套 Plugin,但是這套 Plugin 在整合 SyntaxHighlighter Evolved 的時候根本無法使用,需要特定的語法才可以使用。WP-Markdwon 有個好用的工具那就是 editor tool bar,幫你省下製作 hyperlink 的時間,會自動幫忙編號,如果沒有 SyntaxHighlighter 需求,我個人是推薦用 WP-Markdwon。

golang 範例

package main 

import ( "fmt" ) 

func main() { 
  fmt.Println("Welcome Golang World") 
}

為了解決 SyntaxHighlighter 問題,後來換到 jetpack plugin,這套 Plugin 蠻強大的,內建一堆好用的工具,像是會自動分析每天來造訪你的 Blog 有哪些人。所以推薦大家用 jetpack。最後要學習 Markdown 語法,可以直接參考這網站教學

四月 7, 2016
» LibreOffice 5.1.2 釋出

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

新聞來源:LibreOffice 5.1.2 available for download

四月 6, 2016

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

tag cloud

» 用 gofight 來測試 golang web API handler

Go-brown-side.sh 身為一位後端工程師,如果專案初期階段不導入測試,等到專案越來越大時,您就會發現,解了一個 bug,又產生好多個額外 bug,讓產品一直處於不穩定狀態。後端最主要提供前端或手機端 RESTFul API,所以今天來介紹一套 gofight 工具,用來測試 Golang 的 http handler,讓開發者可以送 Form, JSON, Raw 資料,後端處理後,可以拿到 response 資料,透過 Testify 來測試資料是否符合需求。 目前大部份的 Golang Web Framework 都可以透過 gofight 來測試,除非作者有把 ServeHTTP 改成自己定義 Response,不然基本上都是可以支援的,我自己測試了 Gin, Mux, HttpRouter 都是可以使用的,底下來看看 gofight 該如何使用。

安裝方式

$ go get -u github.com/appleboy/gofight
-u 代表將 local 端程式碼更新到最新

使用方式

不多說直接先看例子,用 golang 基本的 http handler
package main

import (
  "io"
  "net/http"
)

func BasicHelloHandler(w http.ResponseWriter, r *http.Request) {
  io.WriteString(w, "Hello World")
}

func BasicEngine() http.Handler {
  mux := http.NewServeMux()
  mux.HandleFunc("/", BasicHelloHandler)

  return mux
}
撰寫測試
package main

import (
  "github.com/appleboy/gofight"
  "github.com/stretchr/testify/assert"
  "net/http"
  "testing"
)

func TestBasicHelloWorld(t *testing.T) {
  r := gofight.New()

  r.GET("/").
    // trun on the debug mode.
    SetDebug(true).
    Run(BasicEngine(), func(r gofight.HTTPResponse, rq gofight.HTTPRequest) {

      assert.Equal(t, "Hello World", r.Body.String())
      assert.Equal(t, http.StatusOK, r.Code)
    })
}

自訂 header

透過 SetHeader 可以自訂 Request header
func TestBasicHelloWorld(t *testing.T) {
  r := gofight.New()
  version := "0.0.1"

  r.GET("/").
    // trun on the debug mode.
    SetDebug(true).
    SetHeader(gofight.H{
      "X-Version": version,
    }).
    Run(BasicEngine(), func(r gofight.HTTPResponse, rq gofight.HTTPRequest) {

      assert.Equal(t, version, rq.Header.Get("X-Version"))
      assert.Equal(t, "Hello World", r.Body.String())
      assert.Equal(t, http.StatusOK, r.Code)
    })
}

自訂 Form Data

透過 SetFORM 來傳送 Form Data
func TestPostFormData(t *testing.T) {
  r := gofight.New()

  r.POST("/form").
    SetFORM(gofight.H{
      "a": "1",
      "b": "2",
    }).
    Run(BasicEngine(), func(r HTTPResponse, rq HTTPRequest) {
      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.Code)
    })
}

自訂 JSON Data

透過 SetJSON 來傳送 JSON Data
func TestPostJSONData(t *testing.T) {
  r := gofight.New()

  r.POST("/json").
    SetJSON(gofight.D{
      "a": 1,
      "b": 2,
    }).
    Run(BasicEngine, func(r HTTPResponse, rq HTTPRequest) {
      data := []byte(r.Body.String())

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

      assert.Equal(t, 1, int(a))
      assert.Equal(t, 2, int(b))
      assert.Equal(t, http.StatusOK, r.Code)
    })
}

自訂 RAW Data

透過 SetBody 來傳送 RAW Data
func TestPostRawData(t *testing.T) {
  r := gofight.New()

  r.POST("/raw").
    SetBody("a=1&b=1").
    Run(BasicEngine, func(r HTTPResponse, rq HTTPRequest) {
      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.Code)
    })
}
更多測試可以直接參考 gofight_test.go 程式碼

四月 4, 2016
» Plasma 5.6.1、Frameworks 5.20 以及其他重大套件更新 (Chakra GNU/Linux)

我們很高興的宣佈全新的 Plasma 5.6 系列版本。更準確的來說是 Plasma 5.6.1,現在已在我們的穩定套件庫中可用。這個快速更新是隨著 5.6 釋出後提供給 Plasma 使用者的第一個錯誤修復版本,此外也有許多變動在 Plasma 5.6 中被引入以改善使用者體驗。



Frameworks 5.20 則包含了對 breeze 圖示、kio、kactivities、plasma-frameworks 等框架的更新。

這次的釋出最明顯的更新即為 Qt 5.6,以及其他許多核心套件群組的更新。有超過 900 個套件更新至最新版本或是對它們的依賴關係的最新版本重建,以下是較重要的:

  • openjdk 8.u77 
  • python3 3.5.1 
  • python2 2.7.11 
  • octopi 0.8.1 
  • hplip 3.16.3
  • otter-broeser 已經被引入至官方套件庫中以取代 opera
  • qupzilla 2.0.0 已切換至 qtwebengine,但您也可以在套件庫中找到 qupzilla-webkit 套件
  • ntfs-3g 2016.2.22
  • boost 1.60.0
  • icu 56.1
  • krb5 1.14.1
  • libsasl 2.1.26

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

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

新聞來源:Big update includes Plasma 5.6.1, Frameworks 5.20.0 and important package groups

四月 1, 2016
» 0 A.D. Alpha 20 Timosthenes 釋出

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

  • 10 張新的隨機地圖!
  • 可使用盟友的資源放置點:在研發技術後,您現在可以將資源放到盟友的資源放置建築物中,但盟友必須在每個您要使用的建築物上設定允許您使用。
  • 數個新的科技。
  • 許多的顯示改進。
  • 以及其他新功能,請見官方公告。


新聞來源:New Release: 0 A.D. Alpha 20 Timosthenes

» calibre 2.54 釋出

自由的跨平臺電子書管理軟體,calibre 2.54 正式版釋出,此版本新增了幾個功能以及修正了 7 個 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

三月 20, 2016

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

tag cloud

» Docker 實用指令及 Best Practices Cheat Sheet 圖表

docker

在網路上看到有人提供 DockerCheat Sheet,裡面整理了很多常用的指令,建議剛入門 Docker 的初學者務必把底下指令學完,底下就是 Cheat Sheet

Docker-cheat-sheet-by-RebelLabs

點我大圖

container 放大架構圖

Screen Shot 2016-03-20 at 1.11.30 PM

基本指令

下載映像檔

$ docker pull image_name

啟動或關閉 container

$ docker [start|stop] container_name

建立 -> 啟動 -> 執行指令 (-ti 參數)

$ docker run -ti --name container_name image_name command

建立 -> 啟動 -> 執行指令 -> 刪除 container (-rm 參數)

$ docker run --rm -ti image_name command

file system 及 port 對應 (-v-p 參數)

$ docker run -ti --rm -p 80:80 -v /your_path:/container_path -e PASSWORD=1234 image_name

Docker 清除 (cleanup) 指令

刪除所有正在執行的 container

$ docker kill $(docker ps -q)

刪除 dangling 映像檔

docker rmi $(docker images -q -f dangling=true)

刪除全部已停止的 container

docker rm $(docker ps -a -q)

Docker machine 指令

啟動 machine

$ docker-machine start machine_name

指定 machine 來設定 docker

$ eval "$(docker-machine env machine_name)"

與 container 互動指令

在 container 內執行指令

$ docker exec -ti container_name command

線上觀看 container logs

$ docker logs -ft container_name

儲存正在執行的 container 成 image 檔案

$ docker commit -m "message" -a "author" container_name username/image_name:tag

docker compose 格式

docker-compose.yml 格式如下

version: "2"
service:
  container_name: "hello-world"
  image: golang
  command: "go run hello-world.go"
  ports
    - "80:8080"
  volumes:
    - /hello-world:/root/hello-world
redis:
  image: redis

建立 -> 執行 container

$ docker-compose up

以上是常用的 docker 指令,初學者務必學習。

三月 13, 2016
» calibre 2.53 釋出

自由的跨平臺電子書管理軟體,calibre 2.53 正式版釋出,此版本新增了幾個功能以及修正了 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

三月 11, 2016
» LibreOffice 5.1.1 釋出

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

新聞來源:LibreOffice 5.1.1 released

三月 10, 2016

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

tag cloud

» 用 Docker 取代 Laravel Homestead 開發環境

docker

新手第一次接觸 Laravel,我都會推薦使用 Homestead 來解決開發環境的困擾,但是我發現 Homestead 對於第一次接觸 Virtualbox 及指令的初學者,設定還是比較複雜,造成很多新手光是在這邊就卡關了,有沒有什麼辦法可以解決這煩人又複雜的 Homestead 設定,剛好今天在 Github 上看到 laraedit-docker 專案,此專案是把 Homestead 轉換成用 Docker 來跑,這樣只要您的環境有支援 Docker,就可以快速設定好環境含 MySQL, Redis …等

建立 Laravel 專案

透過 Composer 指令建立 Laravel 專案

$ composer create-project --prefer-dist laravel/laravel blog

先假設 blog 目錄路徑為 ~/git/blog,此路徑底下會用到

使用 Docker

首先從 Docker hub 下載 laraedit-docker 映像檔

$ docker pull laraedit/laraedit

完成下載後,就可以直接啟動專案

$ docker run -d --name laravel -p 8082:80 -p 3307:3306 -v ~/git/blog:/var/www/html/app laraedit/laraedit

參數說明

--name: 啟動後服務名稱
-p: 啟動外面的 port 對應到 container 內部 port
-v: 目錄掛載

laraedit 預設將 80, 443, 3306, 6379 port 開出來,所以如果外部要直接存取,請使用 -p 參數來設定。

登入 Docker Shell

要透過 ssh 連入 Docker 請透過底下指令

$ docker exec -it laravel /bin/bash

其中 laravel 就是最上面 --name 設定,執行指令後,你就會進入 Shell 模式,可以進行 DB 操作記錄,執行 DB Migration 等…

進入 MySQL Console

上面我們將 3307 port 對應到 docker 內部 3306 port,所以可以透過 mysql 指令直接連上 MySQL 服務

$ mysql -u homestead -h 192.168.99.100 -P 3307 -p

預設帳號為 homestead 密碼為 secret

$ mysql -u homestead -h 192.168.99.100 -P 3307 -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 5.7.11 MySQL Community Server (GPL)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| homestead          |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.01 sec)

mysql>

大致上用 Docker 就取代了 Homestead,所以大家快點把 Docker 安裝到自己的電腦。

support:

sub.tw

A Django site.