2009年5月25日 星期一

用ssh或http連線進Virtualbox的虛擬電腦

VirtualBox真的是個很棒的東西。
以前我必需拿自己的電腦,改裝成Linux來學習Linux;要不然就是要使用付費的VMWare來產生虛擬電腦來練習。
然而現在的VirtualBox是一整個免費的。
前陣子我在試用問題還很多(無法安裝server版本的ubuntu),然而現在的版本好很多了。

很多人一定都有這個困擾,無法連線到VirtualBox。
只要按照下列步驟即可。



下圖是Virtualbox的啟始畫面,你安裝的作業系統一定有一個名稱。
以圖中為例,我命名為sopili
image
我的需求是...要可以ssh連線進去,也要可以http連線進去。
打開cmd,然後輸入下列指令即可。

cd "c:\Program Files\Oracle\VirtualBox"
VBoxManage modifyvm sopili --natpf1 "guestsshh,tcp,,8000,,80"
VBoxManage modifyvm sopili --natpf1 "guestsshh,tcp,,2222,,22"


注意:
  1. 的是我的虛擬主機名稱是sopili,如果要copy的話別望了改這個。
  2. ssh的話,請連 localhost,port是2222
  3. http的話,請連localhost,port是8000
當然,如果你覺得ok的話,把2222改成22也行;把8000改成80也行,不過別和本身裝的http服務(ex: Apache)衝突到就是了...

然後...  請記得重開Virtualbox
因為我試了好幾個小時都不成功,結果就敗在這裡...  Orz

2009年5月20日 星期三

讓lighttpd 中各個站有不同的php.ini設定


有時候做案子的時候,需要將webserver改成可以大量上傳檔案的。
比如說是100MB,通常要改php.ini,讓webserver可以上傳約100MB的檔案。
  post_max_size = 100M
  upload_max_filesize = 100M
但有的時候卻不想要更動到其它的設定,就可以各別設置。
記得,socket也要設不一樣的才OK哦!
設完之後,可以用phpinfo()看看是否有設定成功。
參考資料:
http://www.cyberciti.biz/tips/custom-phpini-file-for-each-domain-user.html

2009年5月19日 星期二

javascript time picker

在jQuery作者John Resig的網誌中看到的新功能。

一般來說很常見到date picker,就是用日曆選時間。

然而現在有了time picker,不是要你選時鐘,而是用一個更快速的介面選時間。

試用看看就知道了...

http://haineault.com/media/jquery/ui-timepickr/page/

image

mysql trigger

mysql裡面一直以來都沒有trigger的功能,在5.0.11版之後加入了這一個功能。
就我所知,大部份的網站系統都是使用myisam的資料格式。
其實原因很簡單,因為備份容易。
然而現在myisam的格式也可以使用trigger的功能來進行某些項目。
使用trigger可以讓php的程式裡少撰寫很多行。
比如說:將一筆網誌的回應刪除,也要順便將網誌的總回應數-1,也要將回文的人的留言數-1
以這個例子,一般來說要query三次;但如果用trigger的話,只需要query一次,其它順便做的事,就交給trigger吧!
資料來源: http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html
要做測試很簡單
先建立四個table
CREATE TABLE test1(a1 INT);
CREATE TABLE test2(a2 INT);
CREATE TABLE test3(a3 INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
CREATE TABLE test4( a4 INT NOT NULL AUTO_INCREMENT PRIMARY KEY, b4 INT DEFAULT 0 );
接著新增trigger,記得,新增trigger請在mysql client裡下,不要用phpmyadmin
delimiter |
CREATE TRIGGER testref BEFORE INSERT ON test1 FOR EACH ROW BEGIN
INSERT INTO test2 SET a2 = NEW.a1;
DELETE FROM test3 WHERE a3 = NEW.a1;
UPDATE test4 SET b4 = b4 + 1 WHERE a4 = NEW.a1;
END;
| delimiter ;
NSERT INTO test1 VALUES (1), (3), (1), (7), (1), (8), (4), (4);
你會發現在test2, test3, test4都有新增
要查看已新增的trigger,下
show triggers;
要刪除已新增的trigger,下
drop trigger testref ;
在mysql replication的情況下。
create trigger在master裡面下。
slave server也會新增trigger。
在master server裡面下insert sql,slave server也能正常執行。

2009年5月17日 星期日

mysql 新增使用者、資料庫、管理權限

#以ssh進入mysql中root的權限(mysql –u root –p),也可以用phpmyadmin進入

create database 資料庫名稱;  #新增資料庫 grant usage on 資料庫名稱.* to 新mysql使用者帳號@localhost identified by "密碼";

#接下來建議直接在phpmyadmin裡面,更改使用者的權限,phpmyadmin的介面不錯,修改蠻容易的。

image

#將權限更新,新的mysql帳號才能 FLUSH PRIVILEGES ;

2009年5月1日 星期五

Google Analytics的Event Tracking(事件追蹤)

event tracking,事件追蹤,這個功能蠻早之前就推出來的。

只是我最近才開始使用。

因為Google Analytics的Site Overlay他所統計的,好像是以link的url的次數做統計標準,但是大多數的網頁都是動態的,所以在頁面上很難看得出來成效。

然而Event Tracking,就是提供一隻javascript函數,在javascript的事件直接call那個函數即可

舉個例子,軟體邦的內文中,幾乎都是外部連結,但我想知道,這些連結的點擊情況。

image

 

函數格式:

_trackEvent(category, action, optional_label, optional_value)
  • category (required)

    The name you supply for the group of objects you want to track.

  • action (required)

    A string that is uniquely paired with each category, and commonly used to define the type of user interaction for the web object.

  • label (optional)

    An optional string to provide additional dimensions to the event data.

  • value (optional)

    An integer that you can use to provide numerical data about the user event. 

步驟:

  1. 在「基本資訊」、「下載」、「文件」這三個div中,設不同的class
  2. 然後在連結加上事件即可,比如說在下載點的連結加上...  onclick=”return pageTracker._trackEvent("article",'download')”

其實這樣子就可以了。

也使用jQuery:

記得要先有jQuery的library,而且下面的程式碼要放在原本Google分析的code的後面,如下:

結果:

image

其餘請參考... Event Tracking Guide 裡面寫得很詳細哦!