2012年12月24日 星期一
[Linux]Ubuntu Desktop(桌機版)安裝教學
想要入門Linux但又猶豫的人可以先看看這篇
如果未安裝VMware Player請點擊,如果不知道VMware Player是幹麻的請先點擊上面的連結
如果是要灌雙系統的話,此教學比較不適合您,網路上有很多寫的很好的教學文可以參考看看
[linux]Linux入門,介紹ubuntu desktop(桌機版)
我是個Linux的初學者,最近開始想要玩玩Linux,這篇是我查很多資料彙總起來的大意,也是
寫給打算入門Linux的新手來看看,算是個導引~
可以說完全沒什麼深度,但非常地白話淺顯易懂XD
如果有些名詞或觀點解釋錯誤麻煩各位前輩指正:)
寫給打算入門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"]
↓ 長的像這個樣子
[[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
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
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都沒修改過
- git checkout develop 切到develop
- 修改test、test2及新增test3 做些修改
- git add . 新增進stage
- git commit -m "develop commit" commit
- git checkout master 切到master
- git merge develop 合併develop
- 這時候master的資料就和develop一模一樣了 ^^
- git branch -d develop 刪除develop
- git checkout -b develop 新增剛合併完的master分支,所以這條develop是最新的資料,並且將線切換過去了,因為(checkout語法)
- 接下來可以繼續以develop 開發,重覆著2~9的動作
第二種情況:master被修改過(合併就會出現conflict)
檔案一樣先回到最上面的假設
- 修改test test2 新增了test3 test4 (目前是在master)
- git add . 新增進stage
- git commit -m "master commit" commit
- git checkout develop 切到develop
- 修改了test test2 新增了test3 不增加test4
- git add . 新增進stage
- git commit -m "develop commit" commit
- git checkout master 切到master準備合併
- git merge develop 因為master與develop檔案不同(不同的狀況與情況一不一樣)所以會產生conflict
- 因為master有develop沒有的test4,所以test4沒有conflict,但其餘三個有,各別開檔案進去裡面修改
- git add . 將修改完的檔案add進stage
- git commit -m "merge done" commit
- git branch -d develop 刪除develop,目的是建一個最新版的develop
- git checkout -b develop 新增develop並且將線切到develop(其實這一行等於git branch develop + git checkout develop)
- 繼續開發你的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();
$pr_id= mysql_insert_id ();
PDO:
$pr_id= $edm->lastInsertId();
[git][reset] 回覆上一個動作
git reset HEAD^ --soft 取消剛剛的commit但保留修改過的檔案
- 修改一份.php檔加上隨意字串,例如:"QQQ"
- git commit -a -m "edited"
- 我後悔了,我要回復上一動,但又希望剛剛輸入的"QQQ"還在
git reset HEAD^ --soft - git log 查看commit紀錄,剛剛commit的真的不見了,且"QQQ"也還在
git reset HEAD^ --hard 取消剛剛的 commit,回到再上一次 commit的 乾淨狀態
兩種情形:
- 接續剛剛上面的情形,假如已經git reset HEAD^ --soft後,但又後悔不想保留"QQQ":
輸入:git reset HEAD --hard 回覆到最近的一次commit,並且已修改的檔案還原到原始狀態,
注意:如果你想還原全部修改過的檔案才使用此操作 - 正常情況:
- 修改一份.php檔加上隨意字串,例如:"QQQ"
- git commit -a -m "edited"
- 我後悔了,我要回復上一動,但希望還原到上一個commit的原始狀態,也就是修改過的資料不保留
輸入:git reset HEAD^ --hard - git log 查看commit紀錄,剛剛commit不但不見了,也還原此commit的原始資料狀態
可以參考另外這篇有指令的集合:http://gogojimmy.net/2012/02/2...
$ git reset HEAD <file>:將剛剛add的檔案還原成untracked(unstage)
$ git reset HEAD <file>:將剛剛add的檔案還原成untracked(unstage)
- 新增ddd.txt (形態為unstracked)
- git add ddd.txt (形態變為 Changed to be commit)(stage)
- git reset HEAD ddd.txt (形態變為unstracked)
2012年12月7日 星期五
2012年11月29日 星期四
[轉][MYSQL]日期/時間函數
這裡是一個使用日期函數的例子。下面的查詢選擇了所有記錄,其date_col的值是在最後30天以內:
mysql> SELECT something FROM table WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30;
mysql> SELECT something FROM table WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30;
[php][pdo]取得總筆數、FROM DUAL WHERE NOT EXISTS
*取得select跟insert、update、delete的總筆數方法是不一樣的
*rowCount無法返回SELECT的行數。
*rowCount可以返回DELETE, INSERT, 或者UPDATE語句的影響行數
*rowCount無法返回SELECT的行數。
*rowCount可以返回DELETE, INSERT, 或者UPDATE語句的影響行數
記住,是影響行數,不是執行成功的SQL語句的行數↑
[php][WWW-Authenticate]輸入帳密作權限驗證
在網頁最上方加入:
header('Content-Type: text/html; charset=utf-8');
$user='test';
$pwd='test';
if($_SERVER['PHP_AUTH_USER']==$user AND $_SERVER['PHP_AUTH_PW']==$pwd){
echo "您剛輸入的帳號:".$user.'</br>';
echo "您剛輸入的密碼:".$pwd;
}else{
Header("WWW-Authenticate: Basic realm='login'");
Header("HTTP/1.0 401 Unauthorized");
die('帳號或密碼錯誤');
exit;
}
[php][防駭]雙引號括起來的變數要特別注意
話不多說,請執行(非病毒):
<?php
$x="{${eval(chr(112).chr(104).chr(112).chr(105).chr(110).chr(102).chr(111).chr(40).chr(41).chr(59))}}";
echo "$x";
?>
[html][table]表格框線不分開(沒空隙)
1.將table的CSS設定
接下來顯示的表格就是你想要的
border-collapse:collapse; //表格沒空隙2.再將td的CSS設定
border:1px solid #666666;
接下來顯示的表格就是你想要的
[html/css]!important與強迫換行
1.假設做一個留言版,但是一連串不中斷的英文容易造成跑版,所以使用CSS強迫斷行
word-wrap:break-word;
word-break:break-all;
[mysql][transaction交易] 簡單介紹
transaction(交易):就是當有兩段要執行的SQL語法,希望要嘛就兩個SQL語句都執行成功,如果其中一行出現錯誤就恢復原始資料,這時候就要使用transaction。
[html][php]顯示/還原資料庫的空白及換行
1.從資料庫撈出來的資料前後分別加上<pre></pre>,但是即使CSS設定換行它也不會換行
(有空測試,textarea wrap=on打開後,有沒有用)
(有空測試,textarea wrap=on打開後,有沒有用)
2012年11月4日 星期日
[jquery][鍵盤事件]左右鍵觸發事件
在頁面上按鍵盤上的左、右鍵,就會觸發指定的事件
$('body').keydown(function(event){
if (event.which == 37) { //左鍵的代碼
$('#img_last').click();
}
if (event.which == 39) { //右鍵的代碼
$('#img_next').click();
}
});
[jQuery]選取器
當點擊ID開頭為trigger_S的元素
ID開頭為QQ_2[]的checkbox陣列中的第3個是否為選取
$('[id^=trigger_S]').click(function(){
ID開頭為QQ_2[]的checkbox陣列中的第3個是否為選取
if($('input[name^="QQ_2[]"][type=checkbox]:eq(2).prop("checked")==true)註:eq(0)為第一個
2012年10月31日 星期三
2012年10月30日 星期二
[php][字串]substr、strlen應用
substr(原字串,從第幾個開始取,取到第幾個結束)
strlen() 取得字串長度
4個簡單的例子:
strlen() 取得字串長度
4個簡單的例子:
- 刪除第一個字元
- 刪除最後一個字元
- 取得第一個字元
- 取得最後一個字元
[php][檔案讀取]讀取資料夾底下的檔案,中文不會亂碼
話不多說,直接看程式碼
$dir ='update_image/';//設定路徑 if(is_dir($dir)){//檢查是否是目錄 if($dh=opendir($dir)){//打開目錄 while(($file=readdir($dh))!==false){ //$file = 檔名+副檔名 //第一個跟第二個檔名是 .. 及 . if($file!='..' && $file!='.'){ $file=iconv("BIG5", "UTF-8",$file); //必要,否則中文會亂碼 echo $file."</br>"; } } } } clearstatcache();//清除檔案狀態快取
2012年10月25日 星期四
[php][javascript]php及js轉換json語法
廢話不囉嗦,先來看看這兩個語言的json語法:
PHP:
PHP:
json_encode();javascript:
json_decode();
JSON.stringify();
JSON.parse();
[php][javascript]以ajax傳送json物件,還原陣列(物件)並執行
將javascript陣列轉換成json物件,以ajax傳送到PHP,再由PHP解析javascript陣列並且顯示出來
[php][javascript]AJAX簡易範例(GET、POST傳送)
做一個小範例,就可以發現ajax的威力無窮阿!
首先要做:
以ajax實現頁面不刷新,從前端將值傳送到後端處理,並且回傳給前端顯示
(先做GET傳值、等等再介紹由POST傳值,兩個程式碼幾乎一樣,只改小地方)
[html]網頁原始副本(包含doctype、meta、jQuery)
直接複製就可以開始寫網頁囉!
最主要可以省時間,不用每次要寫新頁又要開始剪剪貼貼的...@_@
包含了 doctype宣告
及以utf-8編碼、jQuery連結引入
2012年10月15日 星期一
[php][exception例外]擲出錯誤訊息 throw new exception
當用於表單驗證可以用最簡單的 if else方法
然而當想要一有錯誤就直接跳開產生錯誤訊息可以使用try catch,並且預先設定好 throw new exception(要擲出的錯誤訊息)
2012年10月8日 星期一
[javascript][正則RegExp]檢查變數是否符合字串,並全部取代(replace)
1.有一個字串str
2.是否符合str2這個字串(我們可以想像他其實是個變數,組成為字串,只是為了方便)
如果符合就取代
str="abc?del helloabc?del world!";
2.是否符合str2這個字串(我們可以想像他其實是個變數,組成為字串,只是為了方便)
如果符合就取代
str2="abc\\?del";
[javascript][正則RegExp]檢查含有脫逸字元的字串是否符合
1.假設有一個變數str
2.我要用str去檢查另一個變數str2,它們都長的一樣!照理來說,沒問題才對...
str="abc?del";
2.我要用str去檢查另一個變數str2,它們都長的一樣!照理來說,沒問題才對...
str2="abc?del"; alert(str.match(str2));但是結果卻為null
2012年10月7日 星期日
[php]serialize將陣列.物件以字串存進資料庫
1.要轉換的陣列(物件的方法也一樣):
2.利用PHP本身提供的函數serialize()將陣列/物件轉換為字串
$qq=array('0'=>'第一個','1'=>array('0'=>'第二個的第一個','1'=>'第二個的第二個'),'3'=>'第三個','4'=>'第四個');
2.利用PHP本身提供的函數serialize()將陣列/物件轉換為字串
$aa=serialize($qq);
訂閱:
文章 (Atom)