新生活

| No Comments | No TrackBacks
  近來因為換了工作環境, 工作太過忙碌, 加上缺乏靈感, 因此有好一段時間沒來寫文章.

  10/12 那天正式離職了... 說實在的,心裡實在不捨, 一路上開車的時候都陷入沉默以及惆悵中... 畢竟工作了將近9年的公司... 其中累積了許多的悲歡喜樂.... 為了獻給當時的心情, 回到家之後立刻去理髮了.. 將頭髮給剪短, 希望能藉此換個心情...

  14/12 那一天到新的辦公室上班... 但是也真夠嗆的... 辦公用具的公司竟然要在次日才運送我們所訂購的椅子等.... 差不多整個早上都我都坐在桌子上辦公.... 新辦公室太遠了, 來回花了我不少的時間以及汽油... 我開始想念舊公司, 特別是開車去上班時都會想念從前去舊公司上班的路程, 畢竟是走完全不同的路去上班....

   之後的兩天有夠倒楣的... 15/12那天不小心摔壞夥伴剛買的辦公室用的熱水機, 結果導致我要買一個來賠... 晚上收到DELL 寄給我的電腦, 隔天想要啟動電腦, 卻不動... 以為是顯示問題, 就將電腦抱到附近的電腦公司測試, 一樣的結果....  之後就撥電話給DELL 作report, 花了30多分鐘, 問題沒有獲得解決.. 之後我拆進去看, 將記憶體拔掉再插, 竟然可以啟動電腦了... 以為沒事了, 就撥電話給DELL 銷案, 之後安裝必須的軟體, 然後開始寫程式.. 結果呢... 忽然間, 整個Windows 當機, 完全不動, 我只好按了power button 強迫關機... 再打開的時候, 又跟早上的問題一樣, 完全沒反應... 然後將記憶體拔掉又插... 雖然可以啟動了, 可是整個Windows 死掉了... 我的程式碼也..

   之後又花了30多分鐘(用手機, 因為電訊公司還沒來公司安裝電話)作問題報告, 確定下個星期一會有技術人員來維修與檢查.. 唉... 真衰.

   剛開始的幾天都在忙著補充辦公室用具, 目前也只有我一個人在辦公室上班, 夥伴說希望能在華人新年前聘請到4,5 位程式員幫助我, 畢竟目前我們的客戶可是跟州政府有關, 不能失去這個機會, 因此我都在忙著開發系統, 目前正在積極增進新功能並且測試當中.

   希望一切會順利了.

Go的吉祥物 Gordon田鼠

  繼Chrome OS 以後, Google 似乎欲求不滿, 總是不鳴則己, 一鳴驚人, 再次拋出個震撼的新聞, Google 自己研發的新語言 -- GO, 以加速程式開發。 Go結合了像是Python動態語言的開發速度,以及擁有C及C++語言等編譯語言的效能及安全性,同時也是一個開放源碼計畫。

在Solaris設定永久的環境變數

| No Comments | No TrackBacks
每當要使用wget 之類的指令時, 系統總是找不到, 其原因主要是因為並沒有設定永久性的變數.

一般上設置的變數

PATH=$PATH:/opt/csw/bin:/usr/sfw/bin:/usr/sbin:/usr/bin:/usr/openwin/bin:/usr/dt/bin:/usr/ccs/bin
export PATH
set

以上三個指令只能維持暫時性, 下次登入時又要重新輸入了.

因此, 為了一勞永逸,

1. vi /etc/profile
2. 在export LOGNAME PATH下面, 增加 PATH=$PATH:/usr/local/bin:/usr/local/sbin:/usr/ccs/bin:/usr/sfw/bin:/opt/sfw/bin:/apps/php/bin:.
3. 增加 LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib:/usr/sfw/lib
4. 修改export LOGNAME PATH, 變成 export LOGNAME PATH LD_LIBRARY_PATH

或者

1. vi /etc/profile
2. 在export LOGNAME PATH下面, 增加 PATH=$PATH:/opt/csw/bin:/usr/sfw/bin:/usr/sbin:/usr/bin:/usr/openwin/bin:/usr/dt/bin:/usr/ccs/bin

允許root 用SSH登入Solaris的方法

| No Comments | No TrackBacks
  1. 輸入vi /etc/ssh/sshd_config
  2. 尋找 "PermitRootLogin", 並將 "no" 改成 "yes".
  3. 輸入
    kill -HUP `cat /var/run/sshd.pid`

    或者
    (bash shell 模式)
    kill -HUP $(cat /var/run/sshd.pid)

    或者

    /lib/svc/method/sshd restart

在Lighttpd設定Rewrite

| No Comments | No TrackBacks
lighttpd-inc.conf
-----------------------

確定server.modules 中的"mod_rewrite"是開啟的, 然後...

$HTTP["host"] == "localhost" {
  server.document-root = "C:\WLMP\HTDOCS\"
  url.rewrite = (
        "^/images/.*$" => "$0", // 如果是images 資料夾, 直接存取
        "^/(.*)$" => "index.php/$1" // 否則其他都導向 index.php
  ) 

    url.rewrite-once = (
              "^\/(images|css)(.*)$" => "$0", // 如果是images 或者 css 資料夾, 直接存取
              "^(((\/)([^\/^\?]*)){0,1})(((\?)(.*)){0,1})$" => "index.php?a=$4&$8" // 否則其他都導向 index.php
    )

  accesslog.filename = "C:\WLMP\LightTPD\logs\localhost-access_log.txt"
}
Ubuntu Desktop / Ubuntu Server / Kubuntu與Debian會紀錄網路卡的MAC Address來判斷目前所用的網卡是否與紀錄一致, 倘若不同, 就會自動新增一筆紀錄. 所以就算更換新的網卡(同樣道理, 在A 電腦的VirtualOS 的網卡與B電腦的VirtualOS 的網卡Mac Address 不同), 舊網卡的資料還是一樣會被判定成eth0, 而其他新增的網卡會依照eth1,eth2...一直自動新增下去.

解決的辦法:

sudo vi /etc/udev/rules.d/70-persistent-net.rules

你會看到類似以下的參數設定...

# PCI device 0x10de:0x00df (forcedeth)
#SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:11:22:33:44:55", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

# PCI device 0x10de:0x00df (forcedeth)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="55:44:33:22:11:00", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"


只保留最底下的參數 (# PCI device 0x10de:0x00df (forcedeth) 開始), 其餘的通通刪除, 並且將NAME="eth1" 更改成 NAME="eth0"


範例:
# PCI device 0x10de:0x00df (forcedeth)
#SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:11:22:33:44:55", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"


# PCI device 0x10de:0x00df (forcedeth)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="55:44:33:22:11:00", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"


更改之後, /etc/udev/rules.d/persistent-net.rules 內的參數如下:

# PCI device 0x10de:0x00df (forcedeth)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="55:44:33:22:11:00", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"


修改完畢並且儲存之後重新啟動伺服器 (sudo shutdown -r now)就行了.



注: 這方法適用於所有使用Ubuntu/Debian 的伺服器/電腦.  不管是否用Virtualbox, 都可以用.  比如VMWare 或者安裝在真正的硬碟而非虛擬OS.


參考資料: http://nabeko-notebook.blogspot.com/2009/04/eth0debianubuntu.html

簡單易懂的現代魔法 - 生成魔法

| No Comments | No TrackBacks
    我很認真地看了這本小說與動畫之後, 電腦程式員/軟體工程師應該是最有潛能成為魔法使... 因此我也嘗試了下, 看看會不會產生魔法... 於是, 我試著修改小說裡的魔法咒語並且反譯成原始碼....

/*
*******魔法咒語******

若汝刻劃時間, 吾將追溯時間
若汝逆時而行, 吾將刻劃時間
循環 循環, 直到無常之數完全消逝
吾不斷輪轉, 若為鐘
化為真人美女吧! 吾之程序代碼
*/

#魔法咒語的原始程序代碼

class Magic {
  Function __construct() {
    global $Write_Time;
    $Trace_Time = "";

    If($Write_Time) {//若汝刻劃時間
      While($this->SELF_Trace_Time($Trace_Time)==False) {//吾將追溯時間.
        If($Trace_Time == REVERSE) {//若汝逆時而行, 吾將刻劃時間
          TIME::SET(NOW());
        }
        //循環 循環
        $this->Clear_Buffer(); //直到無常之數完全消逝
      }

      $this->Activate_Clock();//吾不斷輪轉, 若為鐘
      $this->Build_Models($_GET['VOICES']['COMMANDS']);//化為真人美女吧! 吾之程序代碼
    }
  }

  private Function Activate_Clock() {
    CLOCK::Run();
  }

  private Function Build_Models(&$Commands) {
    $models = new MODELS;
    $models->Build($Commands);
  }

  private Function Clear_Buffer() {
    Foreach(get_defined_vars() as $Val) {
      Unset(${$val});
    }
  }

  private Function SELF_Trace_Time(&$Trace_Time) {
    Return TIME::Trace($Trace_Time);
  }
}
這個會稍微麻煩些..

  1. 打開terminal (Right Click mouse->Open Terminal)

  2. 輸入yum install gcc -y

  3. 安裝完之後, 輸入yum install kernel sources -y

  4. 安裝完之後, 輸入yum install kernel-devel -y

  5. 待以上步驟做完之後, 重新啟動OS

  6. 重新進入OS之後, VirtualBox Windows 的Menu, Device->Install Guest Additions, 之後會看到已經自動將Gues Additions mount 成CDROM了.

  7. 打開terminal (Right Click mouse->Open Terminal)

  8. 輸入 cd /media/VBOXADDITIONS_3.0.2_49928

  9. Intel 處理器, 請輸入 sudo sh ./VBoxLinuxAdditions-x86.run 或者;

  10. AMD處理器, 請輸入 sudo sh ./VboxLinuxAdditions-amd64.run

  11. 開始安裝...

  12. 完成之後, 重新啟動OS

CentOS 安裝PHP 的GD 模組

| No Comments | No TrackBacks
CentOS 並沒有預設安裝GD 模組.  因此想要使用GD 的話, 就通過以下指令上網安裝就行了.

yum install php-gd

自動偵測文字URL並轉成Hyperlink

| No Comments | No TrackBacks
echo preg_replace("/(http:\/\/|www|[a-zA-Z0-9-]+\.|[a-zA-Z0-9\.-]+@)(([a-zA-Z0-9-][a-zA-Z0-9-]+\.)+[a-zA-Z0-9-\.\/\_\?\%\#\&\=\;\~\!\(\)]+)/","<a href=\"\\1\\2\" target=\"_blank\">\\1\\2</a>",$text);