Posts Tagged ‘code’

PHP 5.2.1 on FC4 x86_64 compile note

Saturday, April 21st, 2007

Linking libraries from its default location

ln -s /usr/include /opt/include
ln -s /usr/lib64 /opt/lib

Now configuring with new location:

./configure --prefix=/usr/local --enable-force-cgi-redirect --enable-fastcgi --with-libxml --with-zlib --with-bz2 --with-curl  --with-gd --enable-mbstring --with-mysql --with-jpeg-dir=/opt --with-png-dir=/opt --with-mysql=/opt

OpenVPN on FC4 note

Sunday, April 15th, 2007

Server

  1. yum install openvpn
  2. cp -R /usr/share/openvpn/easy-rsa /etc/openvpn
  3. cd /etc/openvpn/easy-rsa
  4. vim vars:
    # easy-rsa parameter settings
    # NOTE: If you installed from an RPM,
    # don't edit this file in place in
    # /usr/share/openvpn/easy-rsa --
    # instead, you should copy the whole
    # easy-rsa directory to another location
    # (such as /etc/openvpn) so that your
    # edits will not be wiped out by a future
    # OpenVPN package upgrade.
    # This variable should point to
    # the top level of the easy-rsa
    # tree.
    
    export D=`pwd`
    
    # This variable should point to
    # the openssl.cnf file included
    # with easy-rsa.
    
    export KEY_CONFIG=$D/openssl.cnf
    
    # Edit this variable to point to
    # your soon-to-be-created key
    # directory.
    #
    # WARNING: clean-all will do
    # a rm -rf on this directory
    # so make sure you define
    # it correctly!
    
    export KEY_DIR="/etc/openvpn/keys"
    
    # Issue rm -rf warning
    
    echo NOTE: when you run ./clean-all, I will be doing a rm -rf on $KEY_DIR
    
    # Increase this to 2048 if you
    # are paranoid.  This will slow
    # down TLS negotiation performance
    # as well as the one-time DH parms
    # generation process.
    
    export KEY_SIZE=1024
    
    # These are the default values for fields
    # which will be placed in the certificate.
    # Don't leave any of these fields blank.
    
    export KEY_COUNTRY=US
    export KEY_PROVINCE=CA
    export KEY_CITY=SANDIEGO
    export KEY_ORG="TAROTOAST.COM"
    export KEY_EMAIL="chang.peter@gmail.com"
  5. chmod 700 *
  6. mkdir /etc/openvpn/keys
  7. make sure in Bash shell (still at /etc/openvpn/easy-rsa directory)
  8. ./vars
  9. ./clean-all
  10. ./build-ca
    Enter ROOTCA for common name
  11. ./build-key-server server
    Enter ROOT for common name
  12. ./build-key [computername] <– repeat for # of computers want to allow connect
    Enter [computername] as common name
    EX: ./build-key AMD64
    EX: ./build-key X40
  13. ./build-dh
  14. vim /etc/openvpn/server.conf:
    port 1194
    proto tcp
    dev tun
    ca keys/ca.crt
    cert keys/server.crt
    key keys/server.key
    dh keys/dh1024.pem
    server 10.11.12.0 255.255.255.0
    client-config-dir ccd
    push "dhcp-option DNS SERVERIP"
    push "dhcp-option DNS SERVERDNS"
    ifconfig-pool-persist ipp.txt
    push "redirect-gateway"
    keepalive 10 120
    comp-lzo
    persist-key
    persist-tun
    status server-tcp.log
    verb 3
  15. Create log files: touch /etc/openvpn/server-tcp.log /etc/openvpn/ipp.txt
  16. vim /etc/init.d/openvpn:
    Uncomment line 114
    /sbin/modprobe tun >/dev/null 2>&1

    Insert after line 115

    iptables -t nat -A POSTROUTING -s 10.11.12.3 -j SNAT --to SERVERIP
    iptables -t nat -A POSTROUTING -s 10.11.12.4 -j SNAT --to SERVERIP
    iptables -t nat -A POSTROUTING -s 10.11.12.5 -j SNAT --to SERVERIP
    iptables -t nat -A POSTROUTING -s 10.11.12.6 -j SNAT --to SERVERIP
    iptables -t nat -A POSTROUTING -s 10.11.12.7 -j SNAT --to SERVERIP
    iptables -t nat -A POSTROUTING -s 10.11.12.8 -j SNAT --to SERVERIP
    iptables -t nat -A POSTROUTING -s 10.11.12.9 -j SNAT --to SERVERIP
    iptables -t nat -A POSTROUTING -s 10.11.12.10 -j SNAT --to SERVERIP
  17. service openvpn start

Client (Windows Vista with UAC on)

  1. Download and install OpenVPN Gui 1.0.3 with OpenVPN 2.0.9 [Here]
  2. Scary warning will pop up telling you the driver will not work, install it anyway. OpenVPN’s developers fixed it already.
  3. Make a shortcut on desktop to GUI executable “C:\Program Files\OpenVPN\bin\openvpn-gui-1.0.3.exe”
  4. Use WinSCP to download these files onto the client computer:
    /etc/openvpn/keys/ca.crt
    /etc/openvpn/keys/AMD64.key
    /etc/openvpn/keys/AMD64.crt
  5. Put above files along with this VPNServer.ovpn in C:\Program Files\OpenVPN\config
    VPNServer.ovpn
    client
    dev tun
    proto tcp
    remote SERVERIP 1194
    resolv-retry infinite
    nobind
    persist-key
    persist-tun
    ca ca.crt
    cert AMD64.crt
    key AMD64.key
    ns-cert-type server
    push "dhcp-option DNS SERVERIP"
    push "dhcp-option DNS SERVERDNSIP"
    comp-lzo
    verb 3
    route-method exe
    route-delay 2
    
  6. Right click on the shortcut to openvpn-gui-1.0.3.exe, select Run As Administrator
  7. On the taskbar, right click the openvpn gui icon, select connect

DONE [aha

The above mostly follows [this thread] except some minor changes in client side config.

Bluehost 筆記

Wednesday, April 4th, 2007

結果選了 Bluehost。原因很多而且說不清,但是簡單說就是讀了很多 BH Forum 上面的文章後最後 follow my heart 所作的決定。是不是因為裡面 moderator 說 BH 是 CEO 的 baby 我不知道,反正綜合了很多文章最後內心裡面的奇妙邏輯決定要 BH 的。

有關 BH 的一些 note:

Installing SVN 1.4.3 (source)

#

# this is how I installed subversion 1.4.3 on my bluehost account

#mkdir ~/src

# get and make 'apr-0.9.13' (this isn't included in the subversion tarball)

cd ~/src

wget http://apache.ausgamers.com/apr/apr-0.9.13.tar.gz

tar -xzf apr-0.9.13.tar.gz

cd apr-0.9.13

./configure --prefix=$HOME

make

make install

# get and make 'apr-util 0.9.13' (this isn't included in the subversion tarball either)

cd ~/src

wget http://apache.planetmirror.com.au/dist/apr/apr-util-0.9.13.tar.gz

tar -xzf apr-util-0.9.13.tar.gz

cd apr-util-0.9.13

./configure --prefix=$HOME --with-apr=$HOME

make

make install

# get and make 'subversion-1.4.3'

cd ~/src

wget http://subversion.tigris.org/downloads/subversion-1.4.3.tar.gz

tar -xzf subversion-1.4.3.tar.gz

cd subversion-1.4.3

./configure --prefix=$HOME --without-berkeley-db --with-zlib --with-ssl

# at this point there's a bit of complaining about berkeley db, let's ignore that...

make

make install

# check it works!

cd

svn --version

# yay!

SSH

Helpdesk 裡面說要寫信到 support@bluehost.com,但是其實不是。寫過去只會被退回說現在必須開 ticket 才行。正確做法是進入 cPanel (BH 的 cPanel 好像比 HM 的好看) 然後注意看右下角會看到一個 SSH Access 的選像,點下去就會把你丟到正確的地方了。填好資料 (domain name 和 cPanel 的密碼) 然後送出後的下一頁就可以夾帶檔案。把駕照用數位相機拍下來夾上去就 ok 了。

SSH 是個 chroot 的環境,但是但部分軟體像上面那樣,只要 configure 實後記得加 –prefix=$HOME 其實都可以裝。有個很爛的就是他對外所有連結只能 port 80。不能 ssh 回家耶,不能 sftp 回家耶,有沒有爛到這種程度 \囧/

Domains

BH 只收 5 個 addon domain,加上原本的 master domain,全部只能有 6 個。搞不好我會開始反悔了。不過說真的她資料夾的放法有夠弱,我還不知道有比 1&1 更弱的放法。她所有 addon domain 的資料夾都是掛在 ~/public_html/ 下面,並不能由選單上面選擇說你要放在 ~/domains/domain1/ 之類的更合邏輯的資料夾。根據 forum 上指出,其實打電話去可以叫 tech support 幫忙手動改,所以可能會等把所有 addon 都放上後再一次看哪些要改全部一起改吧。

Support

他們的 Support 系統如果拿 1&1 的來比的話,1&1 根本是大便。電話打進去如果沒有馬上接起來的話,會每分鐘跟妳說你前面還有幾個人在等,我等最久也才 5 分鐘左右。跟 1&1 的 3x 分再加後面的 1x 分 on hold 比起來,天使吧。

他們的 Ticket 也回應頗快,每個丟出去的 Ticket 都有個 Due Time,都是 12 HR 內得回應。好吧目前為止我只丟了兩個,但是這兩個都有在時限內回,而且都回的頗快的。至少到目前為止都還很滿意。

Bandwidth

從台灣學網對 1&1 和對 BH 的速度比起來,BH 很明顯快太多了 (160KB/s vs 38KB/s),然後我從家裡對 1&1 和 BH 的測試則是 1&1 略快。不過可能是 BH 對每個 TCP connection 有限制,所以我把 FlashGet 調成 6 條後速度也是一樣 max 在 cable 的頻寬。1&1 <–> BH 的速度還真黑皮,每個 TCP connection 的速度都是 1MB/s,然後同時 wget 四個檔,全部也都是 1MB/s。

將陸續增加..

Ajax 筆記

Monday, April 2nd, 2007

過去幾天一直在摸 AJAX 的相關東西,而跟以前不同的是,這次有下去實作。實作的內容是寶貝哈泥的作業,我想應該是不會拿去交啦,有點類似國小在教小畫家但是拿 Photoshop 的作品去交件。趁還記得把一些心得記下來:

Prototype.js:

  • $( ) 是超級好朋友,省了好多字
  • $( ) 不能用在 radiobutton 上
  • 超省時 XMLHttpRequest Syntax:
    ob = new Ajax.Request(
        URL,
        {
            method: 'get/post',
            parameters:'a=1&b=2',
            onComplete:funcOb
        });
  • onComplete 或者其他 onXxxxx 的 funcOb 要用 var funcOb = function(param) { … } 下去定義
  • 除了丟 funcOb 以外,也可以直接丟 anonymous function 像是 onComplete: function(param) { … } 這樣
  • $( ).visible() 和 $( ).hide() + $( ).show() 真是省了好多 browser hack 的工作

Scriptaculous.js:

  • Effect.toggle(’ID’) 是美觀大方又實用到爆的開關
  • Effect.Fade(’ID1′, {queue:’end’}) 然後 Effect.Fade(’ID2′, {queue:’end’}) 會先 Fade 完 ID1 後才會 Fade ID2

XML:

  • <?xml version="1.0" encoding="big5" standalone="yes" ?>

    順序很重要,嗯哼,亂掉就不給 parse \囧/

  • IE 真的很討厭,只要 XML 有一咪咪問題 responseXML 就變成空的,所以最好用 Microsoft XML Notepad 2007 之類的先 validate
  • PHP 在丟 XML 時候記得要丟 header,像是
    header('Content-Type:text/xml;charset=Big5')

DOM:

  • Mozilla DOM 是個好地方,多看多嘗試就會了
  • element.value 才是取得 input 物件裡面的值,element.innerHTML 是拿來塞東西到 <div id=”mydiv”></div> 之間的

這些是實作的不同版本:

  • ajaxbmi1: 超級基本的版本,直接用 responseText 來丟進 innerHTML
  • ajaxbmi2: 開始會丟 XML 來生成 responseXML 了
  • ajaxbmi3: 開始使用 prototype/scriptaculous 來簡化許多東西
    這個版本有個用 behavior 生的 syntax highlighter (star-light),而原因是因為林餅幹家的 lighty 沒設好 phps 的輸出所以一時起興掛上去的

Ajax 的 responseText 中文亂碼問題

Friday, March 30th, 2007

剛剛在實驗 element.innerHTML = AJAX.responseText 時候碰到了中文亂碼問題,稍微找了一下,以下是最簡單的解法。

假設 AJAX.open('POST', 'cgi.php', true), 然後 cgi.php 要輸出中文的內容,那記得在輸出前先丟個 header:

header('Content-Type:text/html;charset=big5');

問題解決。

對付 responseXML 時候把 text/html 改成 text/xml 就好了。

All Rights Reserved Copyright © 2008 Design by StyleShout and Clazh