2012年12月24日 星期一

[Linux]Ubuntu Desktop(桌機版)安裝教學


想要入門Linux但又猶豫的人可以先看看這篇

如果未安裝VMware Player請點擊,如果不知道VMware Player是幹麻的請先點擊上面的連結

如果是要灌雙系統的話,此教學比較不適合您,網路上有很多寫的很好的教學文可以參考看看

[VMware Player]安裝教學 (使用windows 7)


[linux]Linux入門,介紹ubuntu desktop(桌機版)

我是個Linux的初學者,最近開始想要玩玩Linux,這篇是我查很多資料彙總起來的大意,也是

寫給打算入門Linux的新手來看看,算是個導引~

可以說完全沒什麼深度,但非常地白話淺顯易懂XD

如果有些名詞或觀點解釋錯誤麻煩各位前輩指正:)

2012年12月20日 星期四

[git][merge]實際操作,合併與他人做的專案

我是個初學者,但我一直連最簡單的合併都做不好,一直以來我有個問題是想要將同事寫的與我寫的合併在一起。其實這個問題我在網路上問了兩次,結果兩次都領悟不出來網友說的merge觀念...慚愧..,終於...今天我像是被電到一樣突然想通了,其實道理也是很簡單--branch的parent一定要同一個(分支要由同一條主線分出來就對了!),此方法適合與未使用git的人合併專案。

2012年12月13日 星期四

[php][正則]陣列取代,範例:將關鍵字標示紅色



$p_name='科科P神奇超長外套保暖s襪綠油p油披風r';
echo '查詢字串 : '.$p_name.'</br>';
$search_array=array('長外套','綠','披','p','r');
$patterns = array();
$patterns = '/('.implode('|',$search_array).')/i';
echo '關鍵字 : '.$patterns.'</br>';
$res = preg_replace($patterns,"<span style='color:red;'>\\1</span>",$p_name);
echo '結果 : '.$res;


顯示結果:






----

[mysql][json]mysql 組 json 字串

CONCAT('[[',GROUP_CONCAT(z.type ORDER BY z.type ASC),'],\"',a.p_name,'\"]')  as type_name
↓  長的像這個樣子
[[0,1,3],"綠洲-v320LS"]

2012年12月11日 星期二

[javascript][date]日期

var today = new Date();
today_year = today.getFullYear();  //getYear()的定義原本就是年份減去1900,要改用這個today_month = today.getMonth()+1;  //月是從0開始
today_date = today.getDate();
today_day = today.getDay(); //它是星期
alert(today_year+'年'+today_month+'月'+today_date+'日'+'星期'+today_day);

javascript沒有format寫法(new Date("yyyy-MM-dd  HH:mm"))

4564

2012年12月10日 星期一

[mysql]日期相減、日期之間 、now()

目前時間如果在開始與結束時間之間:
now() BETWEEN start_time AND end_time


註:
除了 now() 函數能獲得當前的日期時間外,MySQL 中還有下面的函數:

 
current_timestamp()
,
current_timestamp
,localtime()
,localtime
,localtimestamp    
-- (v4.0.6)
,localtimestamp()  -- (v4.0.6)

這些日期時間函數,都等同於 now()。鑒於 now() 函數簡短易記,建議總是使用 now() 來替代上面列出的函數。


select sysdate(), sleep(3), sysdate();
可以看到,雖然中途 sleep 3 秒,但 now() 函數兩次的時間值是相同的; sysdate() 函數兩次得到的時間值相差 3 秒。MySQL Manual 中是這樣描述 sysdate() 的:Return the time at which the function executes。

來源:http://fxc86.blog.hexun.com.tw/44003036_d.html




[git][merge]實際操作,合併流程,包含處理conflict

branch介紹:
*master是主支  (預設branch停在這條)
develop是master的分支,所以檔案與master一模一樣
測試檔案:
test.php
test2.php

先分為兩種情況

第一種情況:master都沒修改過
  1. git checkout develop                               切到develop
  2. 修改test、test2及新增test3                   做些修改
  3. git add .                                                   新增進stage
  4. git commit -m "develop commit"               commit
  5. git checkout master                                  切到master
  6. git merge develop                                     合併develop
  7. 這時候master的資料就和develop一模一樣了 ^^
  8. git branch -d develop                               刪除develop
  9. git checkout -b develop                            新增剛合併完的master分支,所以這條develop是最新的資料,並且將線切換過去了,因為(checkout語法)
  10. 接下來可以繼續以develop 開發,重覆著2~9的動作
第二種情況:master被修改過(合併就會出現conflict)
   檔案一樣先回到最上面的假設
  1. 修改test test2 新增了test3 test4            (目前是在master)
  2. git add .                                                  新增進stage      
  3. git commit -m "master commit"                commit      
  4. git checkout develop                               切到develop
  5. 修改了test test2 新增了test3                不增加test4
  6. git add .                                                  新增進stage  
  7. git commit -m "develop commit"              commit      
  8. git checkout master                                  切到master準備合併
  9. git merge develop                                    因為master與develop檔案不同(不同的狀況與情況一不一樣)所以會產生conflict
  10. 因為master有develop沒有的test4,所以test4沒有conflict,但其餘三個有,各別開檔案進去裡面修改
  11. git add .                                                  將修改完的檔案add進stage
  12. git commit -m "merge done"                     commit
  13. git branch -d develop                               刪除develop,目的是建一個最新版的develop
  14. git checkout -b develop                            新增develop並且將線切到develop(其實這一行等於git branch develop + git checkout develop)
  15. 繼續開發你的develop
情況二的9. (conflict)



注意 : 如果只有自己一個人開發的話,建議主線就是master,並且每當合併完後,新增一條develop繼續開發(master那邊不要動),否則master那邊做一點,又跑到develop那做一點,合併時會產生情況2的conflict問題,處理起來也挺麻煩的。每當功能完成後要合併時,合併完後,一樣master不要理它,開一條develop繼續做,一直重覆這個循環開發就對了^^

2012年12月9日 星期日

[php][mysql]取得最後一筆INSERT(新增)的ID

mysql sql語法裡:LAST_INSERT_ID()
PHP:
 $pr_id= mysql_insert_id ();
PDO:
$pr_id= $edm->lastInsertId();

[git][reset] 回覆上一個動作

git reset HEAD^ --soft 取消剛剛的commit但保留修改過的檔案

  1. 修改一份.php檔加上隨意字串,例如:"QQQ"
  2. git commit -a -m "edited"
  3. 我後悔了,我要回復上一動,但又希望剛剛輸入的"QQQ"還在
    git reset HEAD^ --soft
  4. git log 查看commit紀錄,剛剛commit的真的不見了,且"QQQ"也還在

git reset HEAD^ --hard 取消剛剛的 commit,回到再上一次 commit的 乾淨狀態

兩種情形:

  • 接續剛剛上面的情形,假如已經git reset HEAD^ --soft後,但又後悔不想保留"QQQ":
    輸入:git reset
    HEAD --hard  回覆到最近的一次commit,並且已修改的檔案還原到原始狀態,
    注意:如果你想還原全部修改過的檔案才使用此操作
  • 正常情況:
  1. 修改一份.php檔加上隨意字串,例如:"QQQ"
  2. git commit -a -m "edited"
  3. 我後悔了,我要回復上一動,但希望還原到上一個commit的原始狀態,也就是修改過的資料不保留
    輸入:git reset HEAD^ --hard
  4. git log 查看commit紀錄,剛剛commit不但不見了,也還原此commit的原始資料狀態
可以參考另外這篇有指令的集合:http://gogojimmy.net/2012/02/2...


$ git reset HEAD <file>:將剛剛add的檔案還原成untracked(unstage)
  1. 新增ddd.txt   (形態為unstracked)
  2. git add ddd.txt (形態變為 Changed to be commit)(stage)
  3. git reset HEAD ddd.txt (形態變為unstracked)








2012年12月7日 星期五

[git] gitk 指令,顯示樹狀圖形化介面

$ gitk         顯示
$ gitk --all  也是顯示(不知道與沒加--all的差別)
$gitk &    背景執行,但不會reload