2009年11月19日

我很喜歡別人問我問題

有時候

我會覺得自己對某些事情已經懂了

但其實不然

當別人問我問題時

就是這件事的新的開始

讓我從另一個角度思考這樣的問題或事情

往往會推翻過去自以為懂的自己

前提是不能自私的認為自己永遠是對得 : )



就因為這樣

而讓我喜歡問別人問題

因為每個人看得角度都不同

讓我想瞭解不同看法的人

問題與答案

本是同一物

所以沒有正確解答,也沒有正確的問法

I just want to know that you know.

我只想知道其他人在想些什麼。



剛剛突然想到

台灣的教育

好像就是一個問題跟著一個正確答案

讓學生沒了思考能力

1+1=2

為什麼1+1=2?有誰在幼稚園(或國小)就提過這問題?

若學生回答1+1=3

就是錯誤解答,要等著受罰

長大了,自然會害怕遇到問題

因為遇到問題後接下來的恐懼就是

我這樣作是正確解答嗎?

我這樣的回答對方滿意嗎?

2009年9月8日

【Ubuntu】apt與dpkg指令介紹

參考網站:
http://www.builder.com.cn/2007/0913/503407.shtml
http://tw.myblog.yahoo.com/naphtali.tw/article?mid=65

ubuntu下apt-get 命令參數


  常用的APT命令參數


  apt-cache search package 搜尋cache內的檔案


  apt-cache show package 獲取軟體資訊,如說明、大小、版本等


  sudo apt-get install package 安裝package


  sudo apt-get install package - - reinstall 重新安裝package


  sudo apt-get -f install 修復安裝"-f = ――fix-missing"


  sudo apt-get remove package 删除包


  sudo apt-get remove package - - purge 删除包,包括删除配置文件等


  sudo apt-get update 更新source.list


  sudo apt-get upgrade 更新已安裝的package


  sudo apt-get dist-upgrade 升級系統


  sudo apt-get dselect-upgrade 使用 dselect 升級


  apt-cache depends package 查看依賴性


  apt-cache rdepends package 查看被哪些package依賴


  sudo apt-get build-dep package 安裝相關的編譯環境


  apt-get source package 下載該package的原代碼


  sudo apt-get clean && sudo apt-get autoclean 清理無用的package


  sudo apt-get check 檢查是否有損壞



Debian,以及基于 Debian 的系統,如 Ubuntu 等,所使用的包格式為 deb。以下為操作 deb 包的常用 Dpkg 指令表,供初學的朋友參考。






































命令


作用


dpkg -i package.deb


安裝包


dpkg -r package


刪除包


dpkg -P package


刪除包(包括配置文件)


dpkg -L package


列出與該包關聯的文件


dpkg -l package


顯示該包的版本


dpkg –unpack package.deb


解開 deb 包的內容


dpkg -S keyword


搜索所屬的包內容


dpkg -l


列出當前已安裝的包


dpkg -c package.deb


列出 deb 包的內容


dpkg –configure package


配置包


注意:更多選項可通過 dpkg -h 查詢,有些指令需要超級用戶權限才能執行。

2009年8月31日

【DNS Server】架設心得

安裝完CentOS 5.3之後

記得再update bind

#yum install bind*

更新完之後就會有chroot的功能

控制chroot開關狀態是在

/etc/sysconfig/named

裡面有個參數:ROOTDIR

若不啟動註解掉即可

chroot可大大提高安全性

即使named被hacker控制

最多也只能在root dir內遊走

named.conf - 主要設定檔
可參考sample
/usr/share/doc/bind-9.3.4/sample/etc/named.conf

以下是我的簡單設定
options
{
      
        directory "/var/named"; // the default
};

zone "." {  // root server
        type hint;
        file "named.ca";
};

//本機正反解
zone "localhost" {
        type master;
        file "named_localhost";
};

zone "0.0.127.in-addr.arpa" {
        type master;
        file "arpa_127.0.0";
};

//herbsite 正反解
zone "herbsite.tw" {
        type master;
        file "named_herbsite.tw";
};

zone "75.208.134.in-addr.arpa" {
        type master;
        file "arpa_134.208.75";
};

herbsite正解設定:
named_herbsite.tw

$TTL 1d

@ IN SOA www.herbsite.tw. root.herbsite.tw. (
        2009090100;
        28800;
        14400;
        720000;
        86400;
)

@ IN NS herbsite.tw.
@ IN A 134.208.75.141

@ IN NS dns.herbsite.tw.
dns IN A 134.208.75.143

@ IN NS www.herbsite.tw.
www IN A 134.208.75.143

@ IN MX 10 mail.herbsite.tw.
mail IN A 134.208.75.143


herbsite 反解設定:
arpa_134.208.75

$TTL 1d

@ IN SOA localhost. root.localhost. (
        2009090100;
        28800;
        14400;
        720000;
        86400;
)

@ IN NS herbsite.tw.
@ IN NS mail.herbsite.tw.

141 IN PTR herbsite.tw.
143 IN PTR mail.herbsite.tw. //只做mail反解,以免被當成垃圾信


然後就可以啟動了

/etc/init.d/named restart

若有錯誤或失敗請檢查/var/log/messages

最常見錯誤為分號和空格問題!

2009年8月18日

【bat】背景執行與kill process

在linux上只需要在指令後面加  & 就可以在背景執行
那windows上呢?

start /D<folder> /I /MIN /NORMAL /B <EXEC> > <log file>

那要刪除背景執行的程式呢?
除了使用工作管理員以外
要在bat內完成就是要下指令瞜

taskkill /IM mytest.exe /F

這樣所以mytest.exe產生的子程序也會跟著關閉了

2009年8月13日

【Apache】WebDav 相關設定

最近發現個好玩的東西



叫webdav



怎麼好玩呢?



當一台 web server 上沒有任何其他service時



要怎麼把檔案傳上web server呢?



其實可以靠Apache 的WebDav模組!



而且在Windows上有個軟體叫NetDrive



可以把ftp、webdav的連線內容模擬成一個磁碟來操作(當然需要相對的權限)



如此方便的功能,一定要來玩玩看得啦



首先要確定Apache有無安裝wevdav module



打開httpd.conf



搜尋



LoadModule dav_module modules/mod_dav.so

LoadModule dav_fs_module modules/mod_dav_fs.so



這兩行的註解記得拿掉



並且加上



Include conf/extra/httpd-dav.conf



路徑是妳webdav的設定檔



接下來就是設定httpd-dav.conf了



幾個重要參數介紹一下



DAVLockDB /usr/local/apache/var/DAVLock



這個必須要放在所有設定的最上面



DAVLock這個檔案mod_dav會在地一次執行時建立



但路徑裡的資料夾必須是要存在的



Alias /webdav "C:/xampp/webdav"



這是設定webdav的資料夾



<Directory "C:/xampp/webdav">

#將DAV功能開啟

Dav On

#設定該資料夾權限

    Order allow,deny

    Allow from all

#類似title

    AuthName DAV-upload


    AuthType Basic

#該資料夾登入時所用的帳號密碼檔(可用htpasswd建立)

#使用方法:htpasswd.exe -c "C:/yourPath/user.pwd" username

    AuthUserFile "C:/xampp/security/htpasswd.webdav"

 

#設定使用權限,GET是read權限,PUT是write權限  

<LimitExcept GET PROPFIND OPTIONS PUT POST DELETE PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>

#哪個user適用這個權限

require valid-user

 </LimitExcept>

</Directory>



最後在加上

BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully

BrowserMatch "MS FrontPage" redirect-carefully

BrowserMatch "^WebDrive" redirect-carefully

BrowserMatch "^WebDAVFS/1.[0123]" redirect-carefully

BrowserMatch "^gnome-vfs/1.0" redirect-carefully

BrowserMatch "^XML Spy" redirect-carefully

BrowserMatch "^Dreamweaver-WebDAV-SCM1" redirect-carefully

BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On



就完成一個簡單的設定了



之後重新啟動Apache



就可以使用webdav的功能摟!







ps. 補上CentOS上的設定




<IfModule mod_dav_fs.c>


        LimitXMLRequestBody 131072


#WebDAV資料夾必須更改擁有者與擁有群組為apache:apache

<Directory /home/sites/your.domain.tld/webdav>

        # Options none

        Options Indexes FollowSymLinks

        IndexOptions FancyIndexing

        AllowOverride None

        Order allow,deny

        Allow from all

</Directory>


Alias /webdav "/home/sites/your.domain.tld/webdav"


<Location /webdav>

        DAV On

        AuthType Basic

        AuthName DAV

        AuthUserFile /etc/httpd/your.webdav.users.pwd

        <LimitExcept GET HEAD OPTIONS>

                require valid-user

        </LimitExcept>

</Location>

</IfModule>

2009年8月7日

【Javascript】Random get number

參考Ext3.0 source code

function getRandomInt(min, max){
    return Math.floor(Math.random() * (max - min + 1)) + min;
}

2009年8月5日

【PHP】撿到寶還是惡夢的開始 - 縮圖程式 TimThumb

今天在google亂晃



很高興能找到這隻縮圖程式



但在server上縮一張很大的圖片時



一直給我出現 超出記憶體使用的Warring



php.ini裡的memory_limit我都調到3G了



他還是一直出現錯誤



搞了老半天



浪費一堆時間



終於在這隻可愛的 timthumb.php 裡找到一行...



ini_set('memory_limit', "30M");



.......



當場傻眼.......



好吧,我也只能說



這隻程式非常貼心

2009年8月1日

【Ubuntu】Ubuntu 9.04 VNC 遠端畫面不刷新

今天在用xrdp時順便測試vnc發現的奇怪現象

並找到這篇:
http://sntc06.pixnet.net/blog/post/24187572

原來是用了compize 的關係

裡面提出了幾個解決方法

但是我都沒用

因為並不打算拿Ubuntu Desktop版本當server

自然也不用遠端管理啦

不過還是紀錄一下

說不定以後會遇到 ^_^

【Linux】PuTTY Connect to CentOS5.3、Ubuntu 亂碼

最主要還是因為新版Linux編碼預設都是使用UTF-8

這也剛好符合我的需求

但putty預設編碼為big5

所以會有亂碼存在

解決方法有兩種

一種是更改linux系統編碼為big5

另外一種就是更改putty連線編碼為utf-8

當然是推薦第二種摟!

以下轉貼自:
http://www.wretch.cc/blog/nidgetgod/6561431

PuTTY 官方網站:PuTTY: A Free Telnet/SSH Client


中文亂碼解決辦法:


開啟 PuTTY -->左側選單 Window-->Translation-->Received data assumed to be in which character set-->改為『UTF-8』


最後左側選單的 Session-->Saved Sessions-->輸入你喜歡的名稱,例:Ubuntu-->按 Save 儲存


如此就不需要每次連線都去修改。

【CentOS】Web Server (Apache + PHP + MySQL + phpMyAdmin)

參考文章:

http://imniha.googlecode.com/files/c.htm

http://corpocrat.com/2008/09/28/how-to-fix-phpmyadmin-403-forbidden-error/



架設server不難



難的是設定!!



安裝只需要下yum search 之後再yum install



就可以了



目前就先列出需要安裝的package



httpd.i386 : Apache HTTP 伺服器

php.i386 : PHP: 內嵌於 HTML 的程序語言。(PHP:Hypertext Preprocessor)

php-gd.i386 : 能讓 PHP 應用程式使用 gd 圖形函式庫的模組

php-mbstring.i386 : 為 PHP 應用程式提供多位元組字串處理能力的模組

php-mysql.i386 : 能讓 PHP 應用程式使用 MySQL 資料庫的模組。

mysql-server.i386 : MySQL 伺服器與相關檔案。

phpmyadmin.noarch : Web application to manage MySQL //這要安裝RPMforge才會有 可參考環境建制那篇



phpmyadmin可不使用yum安裝



可直接到網路上下載壓縮檔

在document root下解壓縮後記得將config.sample.ini.php copy 一份

並重新命名為config.ini.php

再修改

$cfg['Servers'][$i]['auth_type'] = 'http';  //預設是cookie



Apache 設定檔:

/etc/httpd/conf/httpd.conf

web service port : 80



PHP 設定檔:

/etc/php.ini



MySQL 設定檔:

/etc/my.cnf

mysql service port : 3306



ps. 要知道哪個service佔用用哪個port可查看 /etc/service



補充:



更改MySQL預設編碼:

修改/etc/my.cnf

最上面加入

[client]

default-character-set=utf8



[mysqld]標籤內加入

default-character-set=utf8

default-collation=utf8_general_ci



重新啟動即可



使用yum安裝的phpmyadmin會有 403 Forbidden的問題

修改/etc/httpd/conf.d/phpmyadmin.conf





 #Order Deny,Allow

 #Deny from all

  Allow from 127.0.0.1





即可解決


 
 設定開機啟動:
chkconfig --list 查看
chkconfig httpd on 設定啟動
chkconfig httpd off 關閉

【CentOS】CentOS 5.3 初始環境設定

參考文章:

http://www.weithenn.idv.tw/cgi-bin/wiki.pl/CentOS_5.1-%E5%88%9D%E5%A7%8B%E7%92%B0%E5%A2%83%E8%A8%AD%E5%AE%9A



網路設定



網路設定檔案位置:

/etc/sysconfig/network-scripts/ifcfg-ethX

X代表裝置號

亦可使用

/sbin/ifconfig ethx 設定網路相關選項

# ifconfig 介面 IP-位址 [broadcast 位址 ] [netmask ###]

ex. /sbin/ifconfig eth0 192.168.0.133 //設定eth0網卡上的ip為192.168.0.133

或用指令system-config-network設定網路



安裝 RPMforge



yum預設套件太太太太太少!!

所以這必裝

#rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm



yum常用指令

yum update    //更新套件 (一個一個問)

yum update -y     //更新所有套件 (所有回答都回答 Y)

yum check-update //列出需要更新的套件清單

yum upgrade   //升級套件

yum install aaa   //安裝套件

yum remove aaa    //移除套件

yum clean all     //清除安裝時的暫存檔

yum search aaa    //搜尋套件

yum list //列出可安裝的套件清單

yum info aaa //列出套件訊息

yum grouplist     //列出郡組安裝套件清單

yum groupinstall "GNOME Desktop Environment"   //安裝 Gnome 套件郡組

yum groupupdate   //更新套件群組

yum groupremove   //移除套件群組

yum groupinfo     //列出郡組安裝套件內含哪些套件

Mandatory Packages:    //強制安裝套件

Default Packages:   //預設安裝套件

Optional Packages: //建議安裝套件 (自已視需求另外安裝)



rpm 常用指令



rpm -ivh aaa //安裝 rpm

rpm -e aaa    //刪除 rpm

rpm -Uvh aaa //升級 rpm 套件

rpm -qa |grep aaa    //查尋該套件版本

rpm -qi aaa   //列出該套件詳細資訊

rpm -ql aaa   //列出該套件相關檔案

rpm -qc aaa   //列出該套件設定檔及啟動檔



更新locate db



剛安裝完CentOS並下指令locate尋找檔案時會出現

locate: can not open `/var/lib/mlocate/mlocate.db': No such file or directory

所以要先建立這個db檔

#updatedb

只要檔案有變動要要讓他update一次

要不然會找不到檔案



環境建制完

接下來就可以開始建立各種Server摟!!

2009年7月28日

【ExtJS】element.fadeIn

喜歡特效的朋友們

應該都有種困擾

就是fadeIn特效

每次Opacity都從0開始

對大一點的圖片或區塊作這種特效

看了會很刺眼

所以還可以使用

element.setOpacity + animation 參數

來控制特效開始的透明度唷 ^_^

2009年7月17日

Linux Console 解析度調整


以下轉貼自:

http://khwu.tw/node/25



修改開機管理程式設定值,使得Linux Console下 的解析度提高。 GRUB:


    vi /boot/grub/menu.lst

以我的menu.lst為例,在 kernel /boot/vmlinuz-2.6.18-1.2868.fc6 ro root=LABEL=/ rhgb quiet 行末加上 vga=xxx,其中xxx為下表所示的參數值。 修改後看起來像這樣


    kernel /boot/vmlinuz-2.6.18-1.2868.fc6 ro root=LABEL=/ rhgb quiet vga=792

存檔後重新啟動電腦,即可見到效果。 LILO:


    vi /etc/lilo.conf

直接找空位加入設定 vga=792,存檔後重新啟動電腦,即可見到效果。 對照表:


Colours   640x400 640x480 800x600 1024x768 1152x864 1280x1024
--------+----------------------------------------------------
4 bits | ? ? 770 ? ? ?
8 bits | 768 769 771 773 353 775
15 bits | ? 784 787 790 354 793
16 bits | ? 758 788 791 355 794
24 bits | ? 786 789 792 ? 795
32 bits | ? ? ? ? 356 ?
Colours 1600x1200
--------+---------
4 bits | ?
8 bits | 796
15 bits | 797
16 bits | 798
24 bits | 799
32 bits |

2009年7月16日

MySQL dump 匯入匯出範例

最近在處理很夭壽的爛攤子





雖然之前我也有參一咖





但很久以前就不想碰的東西竟然又回到我頭上....





真他媽的想罵髒話....(阿.....好像已經....= =)





中X學能力評量X標(這樣應該還是猜得出來吧





這鳥東西的資料量有夠大





應該說當初的規劃很鳥





早就被我料到的事情....= =





最後還是會掉到我頭上....





好了,不囉唆了= =





匯出範例:





mysqldump -u root -p DB_Name > C:\file.sql





mysqldump -u root -p DB_Name Table_Name > c:\file.sql





匯入範例:





mysql -u root -p DB_Name < C:\file.sql





匯出後只有122MB....不大啦~~





對一個施測對象是全國高中小學校學生系統來說





算還好啦,可是這只是預試....





重點在下下個月後.....OH!!!!!MY!!!!!天!!!!!!!!!





我有事,要先走

2009年7月11日

Linux 修改終端機介面 ls 的顯示顏色

以下轉貼至


http://blog.bestlong.idv.tw/2005/10/27/89





經常在 Linux shell 環境下使用 telnet, ssh …等等的終端機程式來連上主機作業的人。對於支援顏色顯示的使用者友善的方便功能,大大的提升可讀性。不過對預設的顏色想必每個人都會有不滿意的地方。以 ls 的顯示狀況來說,對目錄的深藍色在黑色背景下讀起來就相當的吃力。為了保護視力,當然就要調校一番。



先用 set 查了一下環境設定,知道設定的資料是在 /etc/DIR_COLORS.xterm 檔案中

用 vim 來編輯,修改其中 DIR 01;34 的 directory 項目設定。檔案中的注解有簡單的顏色說明,例如 01=bold 設為粗體,而 34=blue 是設為藍色。所以就依據個人喜好來選定顏色修改後存檔。然後重新連接就會看到改變後的效果。


如果不希望一個一個修改測試,可以用下面的一個 bash shell Script 來顯示以便挑選



#!/bin/bash

# Display ANSI colours.

#tiff 01;35

esc="\033["

echo -n " _ _ _ _ _40 _ _ _ 41_ _ _ _42 _ _ _ 43"

echo "_ _ _ 44_ _ _ _45 _ _ _ 46_ _ _ _47 _"

for fore in 30 31 32 33 34 35 36 37; do

line1="$fore  "

line2="    "

for back in 40 41 42 43 44 45 46 47; do

line1="${line1}${esc}${back};${fore}m Normal  ${esc}0m"

line2="${line2}${esc}${back};${fore};1m Bold    ${esc}0m"

done

echo -e "$line1\n$line2"

done



儲存成 display_ANSI_colors.sh 然後修改檔案屬性


$ chmod +x display_ANSI_colors.sh


執行檢視結果


$ ./display_ANSI_colors.sh


這樣是不是就方便許多。


以上的測試環境 Server 為 Linux Fedora Core 3 而 Client 為 WinXP 使用 PieTTY 連線。

2009年4月10日

【PHP+JS+Flash】檔案上傳的好幫手 - FancyUpload

官方網站:


http://digitarald.de/project/fancyupload/





這兩天使用時





突然發現會出現error





上官網看了一下





原來是Flash Player 10在搞鬼


(參考這篇:http://digitarald.de/journal/54706744/fancyupload-for-flash-10/





經過更新後又可以使用了





不過新版本好像有些許bug





就等待作者更新了

2009年3月28日

【PHP】filesize Fix 4Gb limit.

只能說被騙了~"~



還以為某檔案壞掉



檔案大小一直抓不正確



原來是php裡的filesize function 只支援到4 Gb.....





Fix 4Gb limit. ( Now limit 8 Gb ;))



<?php

   
function GetRealSize($file) {

       
// Return size in Mb

       
clearstatcache();

       
$INT = 4294967295;//2147483647+2147483647+1;

       
$size = filesize($file);

       
$fp = fopen($file, 'r');

       
fseek($fp, 0, SEEK_END);

        if (
ftell($fp)==0) $size += $INT;

       
fclose($file);

        if (
$size<0) $size += $INT;

        return
ceil($size/1024/1024);

    }

?>

【PHP】PHP 中的 unescape 函式

   function phpescape($str){

    
$sublen=strlen($str);

    
$reString="";

    
for ($i=0;$i<$sublen;$i++){

        
if(ord($str[$i])>=127){

            
$tmpString=bin2hex(iconv("utf-8","ucs-2",substr($str,$i,2)));    



            
if (!eregi("WIN",PHP_OS)){

                
$tmpString=substr($tmpString,2,2).substr($tmpString,0,2);

            }

            
$reString.="%u".$tmpString;

            
$i++;

        } 
else {

            
$reString.="%".dechex(ord($str[$i]));

        }

    }

    
return $reString;

}





function unescape($str) { 

         
$str = rawurldecode($str); 

         
preg_match_all("/%u.{4}|&#x.{4};|&#d+;|.+/U",$str,$r); 

         
$ar = $r[0]; 

         
foreach($ar as $k=>$v) { 

                  
if(substr($v,0,2== "%u"

                           
$ar[$k= iconv("UCS-2","utf-8",pack("H4",substr($v,-4))); 

                  
elseif(substr($v,0,3== "&#x"

                           
$ar[$k= iconv("UCS-2","utf-8",pack("H4",substr($v,3,-1))); 

                  
elseif(substr($v,0,2== "&#") { 

                           
$ar[$k= iconv("UCS-2","utf-8",pack("n",substr($v,2,-1))); 

                  } 

         } 

         
return join("",$ar); 









轉貼至:

http://www.phpchina.com/html/91/n-1091.html

2009年2月23日

【ExtJS】Grid 資料可用拖拉方式交換

var ddrow = new Ext.dd.DropTarget(Grid.getView().mainBody, {

            ddGroup : 'ddGroup',

            copy:false,

            notifyDrop : function(ddSource, e, data){

               

                var sm = Grid.getSelectionModel();

                var rows = sm.getSelections();

                var cindex = ddSource.getDragData(e).rowIndex;

                if (!this.copy){

                    for(i = 0; i < rows.length; i++) {

                        ds.remove(ds.getById(rows[i].id));

                    };

                };

                ds.insert(cindex,data.selections);

    

            }

});



grid 別忘了將 enableDragDrop設為true

2009年1月7日

【Javascript】Sleep

function   sleep(n)  {
          var   start=new   Date().getTime();
          while(true)
                 if(new   Date().getTime()-start>n)
                       break;
}





累了就要睡~~@@