[技術分享 ] 24 八月, 2007 10:24

2008/02/12 更新----------
有鑑於許多人求檔, 在回應處有發佈永久連結, 但是似乎還是有人沒看到XD, 所以在此發佈永久連結位址, 又免於被人盜連, 採取註冊後方能下傳, 如有不便, 敬請見諒!!

EQDKP 1.3.2繁化版永久位址:
http://520net.to/viewthread.php?tid=5&extra=page%3D1 
-------------------------

昨天搞了一晚上的Apache::ASP...已經順利成功了..但是卻卡到昨天提到的FSDKP..是使用MDB的資料庫..所以~~~~全部白費工了.....

在UNIX Server上運行ASP......
成果展示

後來還是只得乖乖的前往 EQDKP 下載來裝了...目前版本是1.3.2....安裝時..還是跟以前一樣, 不提供繁體版, Chinese是GB-2321...鳴鳴..繁體台灣又被忽略了..可怒也...馬上動手來改中文繁體版EQDKP 1.3.2......

首先..先下載新版的EQDKP 1.3.2 並解壓縮...

再來利用 convertZ 來將整個目錄內檔案統一轉檔...請記得要進入[進階]選項..修改成 GBK --> UTF-8 喔...另外存成一個新的安裝檔案目錄..

接下來在 /language/chinese裡的兩個檔案..其中一個 lang_main.php 會因為字碼誤判造成程式宣告變量部份沒有結束引號...要一個一個修改回來..順便把兩個檔裡不通順的意思改一下..這就要花點時間了..我是沒有改的啦...以下提供我改好的版本...

改好之後...我很高興的打開開始安裝..結果..沒想到...語系選到Chinese時..居然變成的了亂碼....META宣告經查看沒有錯..但是瀏覽器的編碼居然是ISO....嗯..這個我經過測試了檔案儲存編碼方式及APACHE編碼設置等等..一直都找不到答案..所有的資料也都是叫大家去改httpd.conf的設定..但是我想可能不是因為這樣..在我的認知下...伺服器端的碼決定..是 httpd.conf 大於 .htaccess 大於 META標籤, 所以送出是UTF-8沒錯...但是我們通常都忽略了Client端的設定, 大家是否知道..如果使用者端瀏覽器設定為自動選取, 就會變成編碼會使用"使用者個人喜好"...變成要去找Cookie的問題了喔..如果不懂..下次再教..

當下就去找了主要檔案...(用了大量的搜尋找出header配置 for Cookie)...最後在 includes/eqdkp.php及includes/functions.php裡被我找到了...請依如下更改..
includes/eqdkp.php 原來為
================================================
if ( defined('NO_CACHE') )
   {
      @header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
      @header('Last-Modified: ' . $now);
      @header('Cache-Control: no-store, no-cache, must-revalidate');
      @header('Cache-Control: post-check=0, pre-check=0', false);
      @header('Pragma: no-cache');
      @header('Content-Type: text/html; charset=iso-8859-1');
   }
   else
   {
      @header('Last-Modified: ' . $now);
      @header('Content-Type: text/html; charset=iso-8859-1');
   }
================================================
改成如下:
================================================
if ( defined('NO_CACHE') )
   {
      @header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
      @header('Last-Modified: ' . $now);
      @header('Cache-Control: no-store, no-cache, must-revalidate');
      @header('Cache-Control: post-check=0, pre-check=0', false);
      @header('Pragma: no-cache');
      @header('Content-Type: text/html; charset={ENCODING}');
      //
@header('Content-Type: text/html; charset=iso-8859-1');
   }
   else
   {
      @header('Last-Modified: ' . $now);
      @header('Content-Type: text/html; charset={ENCODING}');
      //
@header('Content-Type: text/html; charset=iso-8859-1');
   }
================================================
再來是
includes/function.php 原先為
================================================
echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta http-equiv="refresh" content="0; url=' . $location .'"><title>Redirect</title></head>';
echo '<body><div align="center">If your browser does not support meta redirection, please click <a href="' . $location . '">here</a> to be redirected</div></body></html>';
================================================
修改成如下
================================================
echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html; charset={ENCODING}"><meta http-equiv="refresh" content="0; url=' . $location .'"><title>Redirect</title></head>';
echo '<body><div align="center">If your browser does not support meta redirection, please click <a href="' . $location . '">here</a> to be redirected</div></body></html>';
================================================
至於為什麼要改成{ENCDEING}呢...這是因為我只提供UTF-8的檔案編碼..就算用英文語系..一樣可以用..所以我讓語系檔自己決定..在 language/chinese 裡的兩個語系檔最上面是否有注意到有這個設定項了呢...^^

$lang['ENCODING'] = 'UTF-8';
$lang['XML_LANG'] = 'tw';

好了...再傳上去..再review一次...是不是中文化了呢...呵呵..
以下提供完整的安裝包供需要的人使用...不用太感謝我..因為根本沒做到什麼複雜的事..= ="

EQDKP 1.3.2f Tradition Chinese(utf-8) + Itemstats1.5  2007/11/07 連結更新^^

歡迎大家多多利用

補充說明:
接下來在輸入資料時..發現中文字部份都會變亂碼..在經驗之下..立即想到是MySQL的連接編碼沒改..
到 /dbal/mysql.php 裡找到以下資料..加上一條QUERY..命令連接編碼設定為utf-8即可解決!!
/dbal/mysql.php
=============================================
if ( (is_resource($this->link_id)) && (!is_null($this->link_id)) && ($this->dbname != '') )
=============================================
修改成
=============================================
mysql_query("SET NAMES 'utf8'");
if ( (is_resource($this->link_id)) && (!is_null($this->link_id)) && ($this->dbname != '') )
=============================================
最後把之前輸入的資料清掉..再重新輸入...是否就正常了呢..^^

展示站台:
主站台 : 不悔 @ 巴那札爾
DKP站 : 不悔DKP @ Gruul's Lair

 

[技術分享 ] 23 八月, 2007 19:26

今天在維修主機的同時..收到了來自公會的消息..幸好沒什麼責怪..因為算是天災....哇哈哈..真是太高興了...所以這要架的更好...

論壇大致上沒有什麼問題, 還是使用 Discuz6.0RC1 來安裝..風格容後再安裝就好...但是..dkp系統就有點疑慮了...因為長以來都是使用eqdkp來支援, 但總是有些東西支援不足, 這次就趁機找一套好一點的來試試...找了半天...在藍色小舖裡有人分享了一個FSDKP v1.53 繁體中文版來用...高興嘍...趕快下傳回來...但是心裡有一絲不安...因為我在想會不會是asp寫的...結果一打開..真的...啊~~~~~晴天霹靂..我自己並沒有架IIS的主機...怎麼辦...XD

當然又使用了GooGle大師...找到了一篇報導, 原來有iASP可以在Linux Apache下使用...當場開始研究了....
Linux運行ASP

但是..似乎是很早之前的資料了..而且找到原文章時..居然是安裝RH5.1的版本...心想...這應該是早期的做法..就朝另一個方向去找 Apache + ASP....這裡有一個參考的..但又是原文..似乎很難理解..所以我把大致的安裝方法記下來就好了..有興趣的人再自己去詳讀..@@

首先...要安裝Apache的擴展套件apxs...這是httpd-devel之中的一個套件..所以我們當下用yum將其安裝....
# yum -y install httpd-devel

利用指令確認安裝位址...
# which apxs
/use/sbin/apxs

嗯..這步完成了..接下來要去下載mod_perl模組來安裝..可以直接到以下鏈結下載
mod_perl 2.0: Version 2.0.3 - November 28, 2006

利用以下指令將其解壓並安裝
# tar zxvf mod_perl-2.0-current.tar.gz
# cd mod_perl-2.0.3
# perl Makefile.PL USE_APXS=1 WITH_APXS=/usr/sbin/apxs EVERYTHING=1

不知為何..他還是會問你一次apxs的full path...就再輸入 /usr/sbin/apxs 就開始安裝了...
Please provide a full path to 'apxs' executable
(press Enter if you don't have it installed):  /usr/sbin/apxs

接下來要安裝Apache的ASP模組..我是使用CPAN方式安裝..先安裝CPAN Shell...
# perl -MCPAN -e shell

在第一次起動時..最後會問您的國別及地區..來判定那一個線上更新伺服器最理想..請依個人需求選擇..一定跑到出現 CPAN> 後開始接下來的安裝..請依序輸入
cpan> install CPAN
cpan> install MLDBM
cpan> install MLDBM::Sync
cpan> install Digest::MD5
cpan> install Apache::ASP
cpan> install Bundle::Apache::ASP::Extra
最後一項跑得最久..我差點睡著了...XD...
值得一提的是..所有選項都可以用預設跳過..唯一有一項要問您apache的src在那..那個可以直接回答 "q" 就跳過搜尋了..
Please tell me where I can find your apache src [../apache_x.x/src] q

最後輸入exit結束CPAN
cpan> exit

再來修改 httpd.conf 在裡面加上如下設定項...
=========================
 PerlModule  Apache::ASP
<Files ~ (\.asp)>
    SetHandler  perl-script
    PerlHandler Apache::ASP
    PerlSetVar  Global .
    PerlSetVar  StateDir /tmp/asp
</Files>

=========================
宣告一下ASP檔的處理方式....

最後一步也是最重要的..不然你只會看到一堆500..而且在/var/log/httpd/error_log裡也只會看到一堆Can't locate object method "get" via package 的訊息, 看起來似乎是權限或是PERL的版本不對..其實不是的..是還要做一個modules的使用宣告....怎麼做呢??

先產生一個檔案..我將他取名為 start_asp.pl 再賦予權限...我將他放在 /etc/http/conf.d
# vi /etc/httpd/conf.d/start_asp.pl
打入內容
=========================
#!/usr/bin/perl
use Apache2::compat;
1;
=========================
然後存檔再給予權限
# chmod 755 /etc/httpd/conf.d/start_asp.pl

接下來在httpd.conf裡再加上下面的宣告...再重起apache...就OK了...
# vi /etc/httpd/conf/httpd.conf
內容
=========================
PerlRequire /etc/httpd/conf.d/start_asp.pl
=========================
# service httpd restart

最後自己做一支簡單的ASP檔跑...一切OK的啦...哇哈哈..

以下提供數個參考連結文件..有興趣可以看看
Apache::ASP http://www.apache-asp.org/
mod_perl http://perl.apache.org/

 

[技術分享 ] 22 八月, 2007 15:29

主機掛掉後(傷心)...開始了我的重灌之路...去義守大學檔案伺服器拿回了FedoraCore7 ISO後, 又去生了一台DVD光碟機來給主機安裝(我就是沒有DVD..至少我可以生出來)...

經過了約40分鐘, 安裝完畢, 一切都非常順利, 依照規畫先把eth0設定成區域IP 192.168.168.188方便我管理後, 再來就是ADSL撥接了...利用adsl-setup設定好設定值後, 開始撥接...問題出來了...怎麼會撥不上..都會停好久再出現

/sbin/pppoe-start: line 215: 3563 Terminated $CONNECT "$@" > /dev/null 2>&1

然後連不上...我的XXOO...= ="...查了資料, 似乎好多人都有這個問題, 甚至直接傳出FC5~FC7的RP-PPPOE包都有問題...因為FC7年紀還很小, 可查的"台灣"文件少得可憐, 只能自己K Document來測試了, 首先...我把所有的相關套件全部反安裝降級為FC5使用的版本, 還是不行...只要再昇回來..再來看到文件上有說..是開機的核心問題..選用base而不要用xen就可以了...反覆試了許多次...終於得到了一個結果, 所以把他記錄下來以防下次又忘了..

原來..大家說的都對, 但是都不齊全..FC7目前所提供的re-pppoe沒有問題..有問題的在libpcap這支函式上...只要把他降回FC5用的libpcap-0.9.4-2.1.2就可以完成了第一步, 現在能用嗎!?...當然不行...開機核心也要選base來搭配就可以正常了...但是..另一個問題來了..系統會自動更新呀..而且每次重開又會選xen的核心....我這台主機是要用來當SERVER的..那怎麼辦, 只要重開就倒站!?

放心, 這都是小事..我們一步一步來..
首先, 先把pppoe撥接的設定刪掉, 還有把服務ntpd(自動校正時間)設定為不啟用, 以防ADSL還不能用時, 他們在開始時會一直找網路而拖到我們的時間..
# rm -rf /etc/撥接設定檔
# chkconfig ntpd off

再來把libpcap反安裝..直接使用yum即可, 他會一併移掉依附的package...等下還要裝回來..
# yum remove libpcap

會提示一併移如下套件
==========================================================
 Package                 Arch       Version          Repository        Size
==========================================================
Removing:
 libpcap                 i386       14:0.9.7-1.fc7   installed         256 k
Removing for dependencies:
 nmap                    i386       2:4.20-5.fc7     installed         2.4 M
 nmap-frontend           i386       2:4.20-5.fc7     installed          88 k
 ppp                     i386       2.4.3-6.2.1      installed         821 k
 rp-pppoe                i386       3.5-31           installed         227 k
 wvdial                  i386       1.54.0-5.2.2     installed         264 k

Transaction Summary
==========================================================

接下來去下載舊的RPM包來安裝...
libpcap-0.9.4-2.1.2.i386.rpm
nmap-4.00-1.2.i386.rpm
nmap-frontend-4.00-1.2.i386.rpm
ppp-2.4.3-6.2.1.i386.rpm
rp-pppoe-3.5-31.i386.rpm

wvdial-1.54.0-5.2.2.i386.rpm

使用rpm-ivh xxxx.rpm 安裝回去...
再重設一次撥接帳號...是否順利撥接了呢!?

接下來要處理開機時核心選擇問題..其實..不管後來他有更新的核心或他預設是xen, 其實都由設定檔控制的..我們只要把設定檔備份下來後, 再把用不到的設定項拿掉即可..就不擔心重開機會跑錯核心了...
以GRUB例:

# cp /boot/grub/grub.conf /etc/grub/grub.conf.bak
# vi /boot/grub/grub.conf

====================================
title Fedora (2.6.22.1-41.fc7)
        root (hd0,0)
        kernel /vmlinuz-2.6.22.1-41.fc7 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
        initrd /initrd-2.6.22.1-41.fc7.img
title Fedora (2.6.20-2925.13.fc7xen)
        root (hd0,0)
        kernel /xen.gz-2.6.20-2925.13.fc7
        module /vmlinuz-2.6.20-2925.13.fc7xen ro root=/dev/VolGroup00/LogVol00 rhgb quiet
        module /initrd-2.6.20-2925.13.fc7xen.img
title Fedora-base (2.6.21-1.3194.fc7)
        root (hd0,0)
        kernel /vmlinuz-2.6.21-1.3194.fc7 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
        initrd /initrd-2.6.21-1.3194.fc7.img
title Fedora (2.6.20-2925.9.fc7xen)
        root (hd0,0)
        kernel /xen.gz-2.6.20-2925.9.fc7
        module /vmlinuz-2.6.20-2925.9.fc7xen ro root=/dev/VolGroup00/LogVol00 rhgb quiet
        module /initrd-2.6.20-2925.9.fc7xen.img
====================================
紅色的設定部份把他拿掉就可以了, 以後要用再從備份拿回來就好了..

這樣是不是輕輕鬆鬆完成ADSL設定呢...^^


 

[技術分享 ] 01 八月, 2007 13:59

今天在新專案上寫上一個跑馬燈公告程式...因為舊式的 marquee 實在不符合效益..而且訊息也必須是即時讀取的動態公告才是..所以就用Javascript寫了一支程式..當然了, 為了可以不斷去資料庫抓取資料及重覆迴圈, 就得要用到 setTimeout的程序來運行嘍..程式原碼如下...

====================================================
var showObj = document.getElementById('HotNews');
var interspeed = 150;
var changetime = 9000;
var seq;
var newRand;
var msg = new Array("台股開盤勁揚139點 攻上9200點", "中信金:兆豐金股票四年內賣光光", "台新銀:全力推動與彰銀換股", "公營事業成功轉型 台肥鎖定藍金產業 賣水也賣保養品");
var num = msg.length;
showData();

function getRandom() {
       var ranNum= Math.floor(Math.random() * num);
       return ranNum;
}
function showData() {
    seq = 0;
    showObj.innerHtml = '';
    newRand = getRandom();
    Scroll();
    setTimeout("showData()", changetime );
}
function Scroll() {
    showObj.innerHTML = msg[newRand].substring(0, seq);
    seq++; seq++;
    setTimeout("Scroll()", interspeed );
}
====================================================

結果一運行...ㄟ..好了...沒什麼問題..但是...偶然按出工作管理員後..發現CPU佔用率居然一開始就45%...第二迴圈一開始就變成98%了...哇....而且顯示的速度也變快了...真慘...經過一番測試, 才發現似乎是setTimeout在搞鬼 查詢資料結果 嗯..似乎大家也有這些問題..而且只要把IE縮下來又正常了..但是..事情不能就這樣算了..因為如果使用者一直停在這一頁, 過了一段時間, 會因為程序不斷佔用而造成系統 crash , 所以開始了Debug之旅...首先...找到了一篇有關於setTimeout的教學...(筆者都會了..= =)..讀了其中的內容..找到了一個似乎可以解決的方法..就是 clearTimeout 的形式, 真是如獲至寶, 立刻改寫程式碼如下:

====================================================
var showObj = document.getElementById('HotNews');
var interspeed = 150;
var changetime = 9000;
var seq;
var newRand;
var nextShow;
var showing;

var msg = new Array("台股開盤勁揚139點 攻上9200點", "中信金:兆豐金股票四年內賣光光", "台新銀:全力推動與彰銀換股", "公營事業成功轉型 台肥鎖定藍金產業 賣水也賣保養品");
var num = msg.length;
showData();

function getRandom() {
       var ranNum= Math.floor(Math.random() * num);
       return ranNum;
}
function showData() {
    if (showing || nextShow) {
        clearTimeout(showing);
        clearTimeout(nextShow);
    }

    seq = 0;
    showObj.innerHtml = '';
    newRand = getRandom();
    Scroll();
    nextShow = setTimeout("showData()", changetime );
}
function Scroll() {
    showObj.innerHTML = msg[newRand].substring(0, seq);
    seq++; seq++;
    showing = setTimeout("Scroll()", interspeed );
}
====================================================

修改完再次運行, 嗯...發現顯示速度正常了, CPU佔用率也一直保持在38%...果然如筆者所猜測一樣..所以問題就解決了, 原來...程式的收尾也是很重要的, 在設計師的一念之間, 會方便到許多人的使用, 多了數行程式碼, 也將會使您的程式更加完善, 所以筆者再將本次經驗詳實記錄下來, 也可以供以後查閱嘍...cccc
最後為了要在同一頁不變換的狀態下, 重新讀取最新公告..所以加入了PHPRPC的程式碼, 把亂數取陣列資料改到server端讀取, 每次只讀回一筆最新的亂數資料即可...也可以節省在頁面reload時所再必須讀取的資料量...最後完成的程式碼為:

====================================================
var showObj = document.getElementById('HotNews');
var interspeed = 150;
var changetime = 9000;
var seq;
var msg;
var nextShow;
var showing;

var num;
showData();

function showData() {
    if (showing || nextShow) {
        clearTimeout(showing);
        clearTimeout(nextShow);
    }
    rpc.rpc_getData("news", function(msg) {
        seq = 0;
        showObj.innerHtml = '';
        Scroll();
       
nextShow = setTimeout("showData()", changetime );
    });
}
function Scroll() {
    showObj.innerHTML = msg.substring(0, seq);
    seq++; seq++;
   
showing = setTimeout("Scroll()", interspeed );
}
====================================================

嗯...Javascript 還有許多筆者未探知的世界...現在開始運用也不會太晚..就怕沒有開始...^^
坐而論 ---> 起而行!!

«上一篇   1 2 3