版本控制 svn move 移動或更名

公司採用 svn 當作版本控制,而我最近在整理 svn 上面全部的 source code。基本上我都會將 git 跟 svn 也一起搭配著用,因為個人比較熟悉 git 的操作方式,然而跟同事討論了專案目錄的架構,進而要把一些目錄轉換大小寫,本來的 App 就改成 app,這個在 git 底下(OS: Linux)操作非常容易,直接 git mv App app,之後看 git status 可以發現底下輸出: # On branch develop # Changes to be committed: # (use "git reset HEAD ..." to unstage) # # renamed: nav/hacks.txt -> Nav/hacks.txt # renamed: nav/moo.fx.js -> Nav/moo.fx.js # renamed: nav/moo.fx.pack.js -> Nav/moo.fx.pack.js # renamed: nav/nav.js -> Nav/nav.js # renamed: nav/prototype.lite.js -> Nav/prototype.lite.js # renamed: nav/user_guide_menu. [Read More]

Git Submodule 介紹與使用

自己用 Git 已經很長一段時間了,沒用過 git submodule 的話真的是對不起自己,今天來筆記 Git Submodule 一些操作步驟及說明。

git Submodule 使用時機

大家在開發新專案的時候,不知道有沒有用到其他專案的程式碼,像是 Web 專案,也許會用到 Blueprintcss CSS Framwork 或者是 Sass,這些專案目前都放在 Github 上面進行維護,以前的作法就是先 git clone 下來,把要的檔案分別複製到自己專案,可是問題來了,如果官方更新了程式碼,那自己的專案如何更新呢?難道是重複步驟把檔案複製到原來地方嗎?這樣會不會太麻煩,這時候就是需要 git submodule 來幫助大家進行程式碼的更新,這樣隨時隨地都可以取得最新的程式碼。補充說明一點,git 目前無法針對單一專案底下的單一檔案或目錄進行 clone,而必須 clone 整個目錄,這點跟 svn 有很大的不同,所以 git 可以建立各個不同的 submodule 來整合成一個大型 Project。換句話說就是: 在您的專案底下,你可以任意將其他人的專案掛載在自己任何目錄底下

[Read More]

安裝 XCache 加速 PHP 執行速度

php-logo

前言

最近 FreeBSD 系統常常會當機,加上 Varnish cache + APC 一直給我出包,所以這次就換了一套加速 PHP 執行的套件 XCache,這是一套由華人所開發的加速器,可以參考篇台灣PHP聯盟論壇所發表 PHP 加速器 - xcache,裡面可以看到這篇裡面就有中文的對話,非常好玩,這次也順便把 PHP 升級到 5.3.8 版本,還有 Varnish 一次升級到 3.0.1 版本。

各家 PHP 加速器

大家都知道目前網路上知名的 PHP 加速器 apc, eaccelerator, phpa, truck-mmcache,這幾套網路上資料很多,大家都可以試著玩看看,尤其是前面兩套 APC 及 eaccelerator,phpa 目前已經不再維護了,truck-mmcache 版本好像也沒啥在更新,距離上次更新是 2009-07-17,Xcache 作者研究 truck-mmcache 跟 APC 已經很長的時間,他發現 APC 的程式碼比起 truck-mmcache 還要簡單更容易瞭解,所以大家也可以研究 APC 相關程式碼。

[Read More]

Linode VPS Inbound 流量將不再收費

Linode VPS
如果有在玩虛擬主機的朋友們,這是一項非常大的消息(

Linode Reduces Transfer Pricing),那就是從**2011年9月1日開始,只要是流入 Linode VPS 或者是 NodeBalancer 伺服器的流量都是免費**,至於流出流量呢?只要是超過限制的 transfer pool 都是以 $0.10/GB 來計費,這相當便宜阿,Linode 看的出來蠻用心的,可以租一台當作 backup server 也不賴,價格來說也不會很貴啦,最小 VPS 每個月流量給大 200G/month,其實也用不太完,但是網路的速度,可能就要評估看看,不要依賴 Ping 的 ttl 值,以直接下載檔案速度來觀看也許會比較適合喔。

CodeIgniter@TW 成立 IRC 頻道 #codeigniter.tw

CodeIgniter
為了方便大家可以線上討論

CodeIgniter 技術,我在 Freenode 開了一個 IRC 聊天室,頻道是 #codeigniter.tw,歡迎大家可以上來聊聊天,當然在台灣官方首頁也加入了 Web 版的 IRC 聊天室,可以透過這網址進入,如果您是在 Windows 環境可以下載 XChat 軟體來上聊天室,Linux 底下可以透過 screen + irc 指令掛網。 另外講一下 CodeIgniter 最近的消息,那就是很高興官方成功轉換到 Github 上面進行版本控制,目前在 PHP Language 也爬升到第10名,第一名還是 Symfony,CodeIgniter 其中一位作者 Phil Sturgeon 與其他作者推出一套 Fuel PHP Framework 也是大受歡迎,排在 CodeIgniter 後面,真是讚。 不多說了,大家快來聊天吧 /join #codeigniter.tw

git cherry-pick 處理專案 pull request

很高興最近有些網路上朋友想要加入翻譯 CodeIgniter 的計畫,本人在 2009 年開啟這計畫時,就打算用當時蠻熱門的 git 來控管翻譯的進度,然而也選用了 github 來當作 Web 平台,可是大家對於入門 git 有很大的挫折,其實學習 git 沒有想像中這麼難,想要貢獻自己的程式碼都可以在 github 找到教學步驟,2009 年那時候 github 文件還尚未像現在這麼完整,入門之前可以先閱讀 git help 教學,貢獻程式碼之前可以先 Fork 專案,接著進行 Pull request,這些都是透過 Web 介面就可以做到了,但是大家在 pull request 之前記得先將專案程式碼更新,以及 pull request 時選取需要的 commit 阿,先看一個範例,有朋友發了一個 XML-RPC Class 翻譯的 Chinese Pull request 來,但是大家有沒有看到內容,裡面還包含了先前 Html Table 翻譯,所以這時候我就必須用 git cherry-pick 來挑選需要的 commit。

git cherry-pick 使用方法

我們如何 Merge 別人的 pull request,首先新增 remote add branch:

# gname 可以自己自訂
git remote add gname https://github.com/gname/PHP-CodeIgniter-Framework-Taiwan.git
# fetch 程式碼下來
git fetch gname
# 選取您要合併的 commit
# -n 代表多個 commit
git cherry-pick -n bf0246c8 ab3f4943
# 可以修改 commit log 內容
git commit -c bf0246c8

這樣就可以不用 merge 全部的內容,也相當方便 ^^

CodeIgniter 轉移版本控制到 Github 順便 Release 2.0.3

CodeIgniter
在我上禮拜 8/20,8/21 參加

COSCUP 2011 會議的時候,CodeIgniter 偷偷 Release 了 2.0.3 版本,也不算偷偷 Release,因為剛好8月20,21號也是 CICON 2011 會議,CodeIgniter 想給來聽演講的學員們一個驚喜吧,也因為這個 CodeIgniter Con 2011 會議,官方也宣佈將轉換版本控制,原本放在 bitbucket 的程式碼也都轉換到 Github 上面了,另外順便把 CodeIgniter Reactor 取消後面 Reactor 字串,改成 CodeIgniter 了,那 Reactor 呢,就變成 Develop 分支,這個消息真的是太棒了,轉換到大家所熟悉的 Git 版本控制,有些常常在貢獻程式碼的開發者,都是在使用 Github。不管是不是 CodeIgniter,其他許多 opensource 包含 jQuery, phpBB…等都是在使用 github。 [

直接下載 2.0.3 玩看看吧]1 參考:

繁體中文 CodeIgniter 官方公告

JavaScript Reference Select and Option objects 用法介紹

在網頁裡面用 Select 是很常遇到的,之前也寫了一篇如何利用 jQuery 動態增加 option 或取值jQuery 部份就不介紹了,那是需要搭配 jQuery Plugin: Select box manipulation,今天要介紹的是如何用 javascript 動態取值或者是增加 option 選項。因為我發現有使用者直接利用 innerHtml 的方式來把資料塞入到 Select 裡面,雖然 FireFoxChrome 都可以正常運作,但是遇到 IE 還是沒辦法動。

如何取得 select element 底下很多方法可以取得 select element: 1. 透過 form name + element name

document.myform.selectname
2. 透過 form name + element 陣列(注意看 select 是位在 form element index 值多少)
document.myform.elements
3. 透過獨一無二的 ID
document.getElementById("selectid")
[Read More]

推薦一本書籍 Master Mobile Web Apps with jQuery Mobile

master-mobile-web-apps-with-jqm 在這裡跟大家推薦一本國外的書籍,也就是 Elated.com 網站作者 Matt Doyle 推出的一本新書 Master Mobile Web Apps with jQuery Mobile,此作者也有推出 PHPPhotoshop 的書籍,本人相當佩服有美工天份又會寫程式人才。然而現在當紅的 Mobile Device,大家相繼為了 iOS, Android 或其他手持式裝置撰寫 Web 介面,目前網路上大家推的其中一套就是 jQuery Mobile,而我呢,正在摸索另一套強大的 Web App Framework: Sencha Touch,功能來比的話,個人覺得 Sencha Touch 優勢比較多,之後有機會再來寫一系列的 Sencha Touch 文章。此書有提供目錄可以參考,該作者會教大家如何搭配 PHP 跟 MySQL 結合 jQuery Mobile API 來撰寫程式,書籍應該是蠻完整的,目前售價美金19元,如果有興趣的人可以上網下單。

無痛安裝 NodeJS 和 Node Framework Express

nodejs-light

NodeJS 是目前當紅的 Web 2.0 技術,去年 COSCUP 2010 就有 KKBOX 資深工程師 ericpi 來探討這個議題,NodeJS 背後使用了 V8 引擎為基礎,沒看過用純 JS 來當 Server-Side 吧,台灣很紅的 Plurk 也是大量使用 NodeJS,然而每開發一種語言,就會想開始找搭配的 Framework,那就首推 Node Framework Express 來撰寫程式,本篇是要介紹如何在 Ubuntu 10.10 無痛安裝 nodejs + express。

下載 Nodejs 原始碼 直接到

官網下載 Stable 的版本吧,目前是 node-v0.4.10.tar.gz,也可以先看看 API Document

# wget http://nodejs.org/dist/node-v0.4.10.tar.gz
[Read More]