Using Capistrano to deploy current branch

CapistranoLogo

Capistrano 是一套用 Ruby 語言所寫的 Deploy Tool,可以用來管理多台伺服器自動化流程,在 Rails 專案內都會使用這套 Deploy Tool,也方便管理遠端機器。這次有個問題是,假設我們在 Staging 或 Production 設定檔分別定義了 :branch 變數如下

set :branch, "master"
set :env, "production"
[Read More]

在 Local 端處理 Github 專案 Pull Request

github-logo

這篇會筆記如何將 Github 上專案內的 Pull Request 拉到 Local 端電腦,雖然現在大部分的 Open Source 都會寫 Unit Test 並且搭配免費的 Travis CI 自動化測試,但是有時候也是需要把別人的 Pull Request 拉下來測試後再進行 Merge,而 Github 官方有提供一篇說明文件 Checking out pull requests locally,底下紀錄操作步驟。

[Read More]

Ruby Compass and Sass Auto Testing Environment

Compass Home   Compass Documentation

Compass 是一套 CSS Authoring Framework,也是基於 Sass 語法的一套 Framework,先前寫了 GulpCompass Plugin,在針對自動化測試時候出現版本相依性不同,造成無法自動測試成功。自動化測試目前跟 Github 最常搭配的就是 Travis CI 或者是 Codeship,當然如果非 Open source 專案可能就要自己架設 CI 伺服器,個人推薦就是 Jenkins。這次遇到的問題其實跟 Ruby Gem 版本相依性有關,由於要測試 Compass 所有 Command 語法,所以使用了 Susy + sass + compass,如果在 .travis.yml 內直接寫

[Read More]

Sublime Text 2 在 Ubuntu 中文輸入問題

Sublime_Text_Logo

Sublime Text 是一個非常好用的文字編輯器,如果不喜歡 Vim Console 介面,我強烈推薦這套,因為可以透過 Package Control 安裝實用的 Plugin。安裝好 Sublime Text 軟體後,發現切換輸入法跟 Sublime 預設的快捷鍵衝突,所以將 gcin 切換的快捷鍵也換掉,但是似乎沒有作用,網路上找到此篇解法 Sublime Text 2 如何在 Ubuntu+iBus 下输入中文?,解法就是安裝 InputHelper Plugin 當然這方法是治標不治本,但是至少解決無法輸入中文的問題,底下是安裝方式

[Read More]

Percona Cloud Tools for MySQL 介紹及安裝

percona

Percona 去年推出一套 Cloud Tools for MySQL,藉由這套雲端服務可以幫忙分析 MySQL 系統內全部 Slow Query,並且計算出時間,畫出統計圖,此套系統目前還在 Beta 版,並且有些限制,只能開 3 個 organizations,每個 organizations 只能有 5 agents,最後資料只會保留 8 天,超過就會清除。這套系統後端是由 GO Language 完成,前端則是由 AngularJS 串起來,上個月 Percona 還在 MySQL Performance Blog 徵求 GO 的開發者,可見 Percona 也看好此服務,大膽使用 Google 推的 GO Language。

[Read More]

Ruby 安裝 debugger package 發生 No source for ruby 錯誤

Ruby_logo

當您在特定 Ruby 版本下安裝 debugger gem 套件,會碰到底下錯誤訊息

Using debugger-ruby_core_source (1.2.4) 
Installing debugger-linecache (1.2.4) with native extensions 
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native
extension.

checking for vm_core.h… no checking for vm_core.h… no Makefile creation failed


No source for ruby-2.0.0-p451 provided with debugger-ruby_core_source gem. **************************************************************************

會發生此錯誤的最大原因是在 debugger-ruby_core_source 原始碼內,只有包含特定少數的 Headers,解決此錯誤也非常簡單,可以直接將目前的 ruby 版本 headers 安裝到 debugger-ruby_core_source 目錄內即可,透國 rake 就可以完成

$ cd /usr/local/rvm/gems/ruby-2.0.0-p451/gems/debugger-ruby_core_source-1.2.4/lib/debugger/ruby_core_source
$ rake add_source VERSION=2.0.0-p451 --trace

執行完成後,就可以回到原專案目錄透過 bundle install 繼續安裝套件。

Laravel 搭配 Memcached Cross Domain Session

Laravel PHP Framework

Laravel 提供了 filecookiedatabasememcachedarray 五種方式來存取 Session,預設的使用方式會是 file 存取,如果要跨 Domain 存取 Session 基本上只要設定 php.ini 裡面的 Session 相關參數即可,請注意底下 3 個參數。

[Read More]

Backbone.js 1.1.1 Release 釋出 AMD 版本

backbone

Backbone.js 在 2014.02.13 推出 1.1.1 版本,此次改版沒有推出重大功能,距離上次 1.1.0 版本只有經過四個月,時間也沒有很長。之前版本尚未支援 AMD,所以都是使用 amdjs/backbone 版本,但是這次 Backbone 官方直接釋出 AMD 版本,那之後就照官方版本走就可以了,底下是這次改版 Release note

  • 釋出 AMD (require.js) 版本
  • 新增 execute hook 讓開發者可以處理特定 route arguments
  • Backbone Event 效能改善
  • 處理相容舊瀏覽器 URL Unicode

近幾年 Javascript Framework 串起,似乎現在大家瘋狂的跟 Angularjs,所以 Backbone 似乎進度也沒有很快了,就像 PHP Framework 一樣,Laravel 的出現,讓其他 Framework 變得比較少討論了

Percona XtraDB Cluster 5.6 找合適 IST Donor

percona

Gcache 是用來紀錄 MySQL 最近所使用的 SQL Command,其本身是佔用記憶體空間,大小可以由 wsrep_provider_options 定義,如果有任何 MySQL Node 重新啟動,那麼可以經由 Live Node 內的 Gcache 將尚未同步的資料補上,同步資料的方式分為兩種一種為 IST(Incremental State Transfer) 另一種為 SST(State Snapshot Transfer),但是同步資料時,管理者無法決定同步方式。先來看看 Gcache 一些特性

  • node 重新啟動,Gcache 資料會全部消失
  • Gcache 大小為固定,如果超過大小,則回刪除最早資料
  • 選擇 Donor node 會直接忽略 Gcache 狀態
  • Node 重新啟動,需要同步的資料並非在指定 Node Gcahe 內,則會啟動 SST 同步
  • 到目前版本為止,沒有任何方式可以知道 Gcache 狀態

根據以上特性可以知道,當 Node 重新啟動,很容易就執行 SST 模式,舉例子來說,當有 Node crashed 超過一個晚上,你要如何知道其他 Node 內的 Gcache 資料大於需要同步的資料量?或者是當 Cluster 內只有兩台機器,那重新啟動任何一台 Node 都會是跑 SST 同步。

[Read More]

Git Server 噴 git upload-pack: git-pack-objects died with error

Git-Logo-2Color

透過 Gitlab 架設 Git Server 來放一些 Document 資料,由於個人 Document 都是 pdf 檔案,所以整個 Git Repository 就非常肥大,今天在 Clone 下來的時候,不僅是主機 CPU 飆高,然後記憶體被吃到快沒了,最後還噴出底下錯誤訊息

remote: Counting objects: 4912, done.
remote: fatal: Out of memory, malloc failed
error: git upload-pack: git-pack-objects died with error.
fatal: git upload-pack: aborting due to possible repository corruption on the remote side.
remote: aborting due to possible repository corruption on the remote side.
fatal: early EOF
fatal: index-pack failed
[Read More]