[網站] 好站連結 (八) Android, javascript, CSS, PHP, Perl, FreeBSD, Linux

PHP CSS Html5 Git: Javascript: FreeBSD: C/C++ Linux Python Android CodeIgniter Embedded System

2011 OSDC Day 1 筆記

Update: 補上 OSDC 紀錄影片 2011.06.26 今年很高興可以北上參加 OSDC 2011 (Open Source Developers Conference),由於之前都在南部唸書及工作,沒有機會北上參加聚會,現在人在新竹,終於有機會可以參加了,雖然早上六點就要起床趕電車了,不過到現場聽課感覺就是不同,也可以認識很多新朋友,底下來紀錄上課筆記

1.微軟與 jQuery 社群的親密接觸

講者: Eric Shangkuan (Microsoft) Slide: 微軟與 jQuery 社群的親密接觸 這是 OSDC 第一場演講,早上九點就開始了,雖然人不多,但是蠻多人還是為了講者而來,首先介紹什麼是 jQuery,以及 jQuery 一些基本用法,像是 CSS selector,如何在 Windows Visual Studio 上面開發 jQuery 及撰寫 plugin 整合進去 ASP.Net,最後介紹三個不錯用的 jQuery Plugin: Templeate, Datalink, Globalzation
  • Templeate: 這搭配 Facebook api 可以直接做個人頁面,請參考這裡
  • Globalzation: 前端多國語系實做
  • Datalink: 可以快速處理 form,利用 object 跟 jQuery 搭配
如果要研究上述三個 jQuery Plugin 可以參考底下: jQuery Datalink: https://github.com/jquery/jquery-datalink jQuery Templeate: https://github.com/jquery/jquery-tmpl jQuery Globalzation: https://github.com/jquery/jquery-global Continue reading “2011 OSDC Day 1 筆記”

Git 版本控制 branch model 分支模組基本介紹

我相信大家對於 Git 版本控制不陌生了,Git 最大強項就是可以任意建立 branch,讓您開發程式不需要擔心原本的程式碼會被動到,造成不知道該怎麼恢復原來的狀態。為了不影響產品發展,branch 對於大型工作團隊就顯得更重要了,今天在網路上看到一篇 A successful Git branching model 文章,裡面把 branch 使用方式寫得非常清楚,底下我會透過指令來說明如何使用簡單 branch 指令,當然請大家先去 github 註冊申請帳號,如果不想申請帳號,也可以自己在 local 端去執行。

底下所引用的圖片都是經由 A successful Git branching model 文章所提供。

git-flow

看到這張圖其實就說明了 branch 最重要的精神:『無限建立分支』,大家也不用害怕看不懂這張圖,底下說明 branch 分支狀況

Continue reading “Git 版本控制 branch model 分支模組基本介紹”

Git 版本控制:利用 git reset 恢復檔案、暫存狀態、commit 訊息

這次來介紹一下 git reset 的用法,為什麼會介紹這指令呢?因為今天想要看專案狀態,用 git status 觀看,發現被我玩爛了,所以出現了底下錯誤訊息:
$ git status
error: bad index file sha1 signature
fatal: index file corrupt
解決此問題非常簡單,要先刪除 index 檔案,請先砍掉 .git/index,恢復此 index 請用
git reset
這行指令相當於 git reset –mixed HEAD,或者是可以用 git read-tree 來取代 git reset,當然 git reset 不只是有這功能而已,假如您已經建立了 commit 訊息,也可以將此訊息拿掉,重新在 commit,或者是您修改過的檔案在暫存區,git 也可以幫您恢復到未暫存,或者是不想要這次的修改,也可以恢復到未修改的檔案喔。

取消已經暫存的檔案

假如我們有兩個檔案需要 commit,但是不小心按到 git add * 全部加入到暫存區,那該怎麼恢復呢?
# On branch master
# Changes to be committed:
#   (use "git reset HEAD ..." to unstage)
#
#       modified:   Makefile
#       modified:   user/easy_setup/easysetup.h
#
上面是以經在暫存區裡面等待被 commit 檔案(Changes to be committed),大家可以看到括號裡面有提示如何拿掉 (use “git reset HEAD …” to unstage),所以我們下:
git reset HEAD user/easy_setup/easysetup.h
之後會看到 『user/easy_setup/easysetup.h: locally modified』此訊息,這時候在用 git status 看狀態
# On branch master
# Changes to be committed:
#   (use "git reset HEAD ..." to unstage)
#
#       modified:   Makefile
#
# Changed but not updated:
#   (use "git add ..." to update what will be committed)
#
#       modified:   user/easy_setup/easysetup.h
#
Continue reading “Git 版本控制:利用 git reset 恢復檔案、暫存狀態、commit 訊息”

Git 版本控制: 「You have some suspicious patch lines」

相信大家對 Git 並不陌生,這次在升級 Moztw討論區,從 3.0.5 升級到 3.0.7 p1,過程由其他 Moztw 成員升級,我在將最後程式 commit 到 github,因為兩個版本差異性很大,所以有新增多個檔案,commit 過程出現了錯誤訊息:「You have some suspicious patch lines」,這是因為 git 會檢查每行程式碼最後是否有多餘空白或者是 Tab 按鍵,為瞭解決此問題,可以去修改 .git/hooks/pre-commit,將底下程式碼:
if (s/^\+//) {
    $lineno++;
    chomp;
    if (/\s$/) {
        bad_line("trailing whitespace", $_);
    }
    if (/^\s* \t/) {
        bad_line("indent SP followed by a TAB", $_);
    }
    if (/^([<>])\1{6} |^={7}$/) {
        bad_line("unresolved merge conflict", $_);
    }
}
改成:
if (s/^\+//) {
    $lineno++;
    chomp;
#   if (/\s$/) {
#       bad_line("trailing whitespace", $_);
#   }
#   if (/^\s* \t/) {
#       bad_line("indent SP followed by a TAB", $_);
#   }
    if (/^([<>])\1{6} |^={7}$/) {
        bad_line("unresolved merge conflict", $_);
    }
}
暫時停止 git 過濾字串,等 commit 完成之後,在將其 unmask 掉。 參考網站: Git on Windows: 「You have some suspicious patch lines」

[Git] how to remove file and commit from history(如何移除 commit 歷史紀錄)

今天在 commit 程式碼到 github 網站,不小心把 Plurk 帳號密碼給 commit 上去,發生這種事情,所以趕快上網查了一下如何移除 commit 歷史紀錄: 假設我們的 commit tree 如下:
R–A–B–C–D–E–HEAD
接下來要移除 B 跟 C 的 commit tree,變成
R–A–D’–E–HEAD
有兩種方式可以移除 B & C
# detach head and move to D commit
git checkout 

# move HEAD to A, but leave the index and working tree as for D
git reset --soft 

# Redo the D commit re-using the commit message, but now on top of A
git commit -C 

# Re-apply everything from the old D onwards onto this new place 
git rebase --onto HEAD  master

# push it
git push --force
另一種方法是利用 cherry-pick 方式
git rebase --hard 
git cherry-pick 
git cherry-pick 
這會直接忽略 B 跟 C 的 history,詳細資料可以查詢 git help cherry-pick 或者是 git help rebase 參考: Git: removing selected commits from repository Git: how to remove file and commit from history Re: ! [rejected] master -> master (non-fast forward)

[FreeBSD] 簡易架設 git Server,git 使用教學

Git 是一套免費 open source 的版本控制軟體,另外還有很多套版本控制軟體,如:MercurialBazaarSubversionCVSPerforce, and Visual SourceSafe,其中 Mercurial 又是 Google Code Project Hosting 採用的版本控制系統,當然 google 也支援原本的 Subversion,Git 為現在很紅的一套版本控制 Software,底下紀錄在 FreeBSD 如何架設簡易 Git Server。 1. 利用 FreeBSD ports 安裝:
cd /usr/ports/devel/git; make install clean
2. 修改 /etc/rc.conf
git_daemon_enable="YES"
git_daemon_directory="/path/git/repo"
git_daemon_flags="--export-all --syslog --enable=receive-pack --listen=192.168.1.1"
注意 git_daemon_flags 可以加入 –verbose 參數,以方便 debug 3. 新增使用者 git
pw user add git
4. 啟動 git daemon
/usr/local/etc/rc.d/git_daemon start
您會發現多出 9418 連接埠,就是成功了 Continue reading “[FreeBSD] 簡易架設 git Server,git 使用教學”