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 個參數。

Continue reading “Laravel 搭配 Memcached Cross Domain Session”

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 同步。

Continue reading “Percona XtraDB Cluster 5.6 找合適 IST Donor”

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

Continue reading “Git Server 噴 git upload-pack: git-pack-objects died with error”

在 Ubuntu 或 Debian 上跑 Ruby on Rails + Nginx

Ruby_logo

本篇用來紀錄學習 Ruby on Rails 所需要的開發環境,請不要輕易嘗試使用 Windows 當開發環境,因為真的很不好裝,又很難除錯,所以作者建議開發環境一定要有 Linux 機器,如果是個人電腦用 Mac 也沒這問題。用 Rails 可以快速開發 Web 搭配 MySQL 資料庫,完成後可以透過 Capistrano 工具幫助 Deploy 到 Production Server。底下會一一介紹如何在 Debian 機器上架設好 Ruby + Nginx 環境

Continue reading “在 Ubuntu 或 Debian 上跑 Ruby on Rails + Nginx”

PHP The Right Way 出電子書

PHP  The… by Phil Sturgeon et al. [Leanpub PDF iPad Kindle

最近看到前 CodeIgniterFuelPHP 作者 Phil SturgeonPHP The Right Way 發起人 Josh Lockhart 合力推出電子書,目前一本定價為 4 塊美金,當然作者也不一定要使用者付錢,您可以直接線上看。這本線上 PDF 很適合丟給剛進來公司的新人,此新人當然對 PHP 有一定程度的了解,團隊內最重視的就是整個專案素質,也就是如果能達到多人維護同一個專案,讓其他人檢視的時候,不會覺得是好多人共同維護一個專案,也就是要求大家寫法一致 (Code Style Guide)。