Skip to the page content area.

:::

Tavern Change Log Volume 11


Date: 8.23.’07.
  1. 修正 imacat 資料庫定義, LPAD() 函數的第三個參數應為文字,原使用數字 0 ,修正為文字 '0'
  2. 修正 imacat 資料庫定義,加上 acctsubjaccttrxacctrecs 三個資料表,與 acctsubj_ischild() 函式。
  3. 加上 Selima::imacat::List::AcctSubj 類別、 Selima::imacat::Form::AcctSubj 類別與 Selima::imacat::Checker::AcctSubj 類別,加上 acctsubj.cgi 程式。
  4. 修正 Selima::imacat::HTML 模組的 @ADMIN_SCRIPTS 變數,加上 acctsubj.cgiaccttrx.cgiacctrecs.cgi 三個程式。

Date: 8.20.’07.
  1. 修正 Selima::*::List::Funds 類別的 new() 方法,移除不再用到的 cat0cat1cat2cat3 欄位標題;修正 $self->{"pre_filter"} 屬性的進階篩選條件,排名前三分之一、四分之一的條件原用小於或等於 <= ,改用小於 < ,以避免排名 1/2 時,因取該分區中位數正為 0.25 ,而被誤列入排名前四分之一的問題。

Date: 8.18.’07.
  1. 修正 funds 資料表, *rank 欄位由 smallint 改為 numeric(4, 4) ,原儲存基金排名名次,改儲存排名佔該類基金的百分比位置,並加上 *rnkdsc 排名的敘述。如此得以基金表現百分比位置排名,而非單以名次排名,以減少特殊類形基金因同類基金只有一二種,故很容易同類排名第一第二,單按名次排名沒有意義的問題。於匯入基金績效資料時自行計算排名,避免基金績效資料排名有誤時匯入錯誤的問題。並於匯入時同時寫入基金排名的敘述,以減少列表時,即時計算該類基金數以顯示排名敘述,效率過低的問題。
  2. 修正 funds_list_* 瀏覽,使用 *rnkdsc 欄位顯示排名,不再即時計算排名,以避免無謂的耗時低效率;將 cat0cat1cat2cat3 合為一欄 cat 顯示,以簡化列表。
  3. 修正 Selima::*::List::Funds 類別的 new() 方法、 pre_filter() 方法及 html_search() 方法, $self->{"pre_filter"} 屬性原為進階篩選條件的字串數列,改為進階篩選條件的選項數列的數列,每一選項數列包含篩選條件和文字敘述。如此可加上類似4433 法則等廣為人知 ,有特定名字的篩選條件。去除 free 條件,自訂任意條件改為內建,不需列於 $self->{"pre_filter"} 屬性進階篩選條件清單中。內建加上 none 無進階篩選條件。

Date: 6.23.’07.
  1. 修正 Selima::emandy::HTML 模組的 html_nav() 方法,加上需要時顯示 $$args{"header_html_nav"}

Date: 6.8.’07.
  1. 修正 Selima::Destroy 類別的 DESTROY() 方法及 Selima::HTTP 模組的 http_*() 函式,原先用 eval {} 迴圈清理 IO::NestedCapture ,改用 IO::NestedCapture->instance->{"STDOUT_current"} 作迴圈判斷,以避免 eval {} 失敗有時會導致程式不正常中斷的問題。
  2. 修正 Selima::GetLang 模組的 getlang_env() 函式,先檢查 $GET$POST 設定沒,以避免尚未設定 $GET$POST 即呼叫時,產生的警告。
  3. 修正 Selima::GetLang 模組的 getlang_filename() 函式,先檢查 $REQUEST_PATH 設定沒,以避免尚未設定 $REQUEST_PATH 即呼叫時,產生的警告。
  4. 修正 Selima::Init 模組的 checkspam_spammers() 函式,修正檢查 $POST->param("url") 前未檢查有沒有 $POST->param("url") 的錯誤。

Date: 5.26.’07.
  1. 修正 Selima::Init 模組、 Selima::DataVars 模組、 Selima::Destroy 類別、 Selima::List 類別、 Selima::List::* 類別、 Selima::Form 類別、 Selima::Form::* 類別、 Selima::Preview 模組、 Selima::*::HTML 模組、 Selima::*::Rebuild 模組、 Selima::*::List::* 類別、 Selima::*::Form::* 類別、 guestbook.cgi 程式、 garbage.cgi 程式、 logout.cgi 程式、 saveform.cgi 程式、 showenv.cgi 程式、 test.cgi 程式、 counter.cgi 程式、 last_update.cgi 程式及 subs_counter.cgi 程式,原來自己另存輸出,改用 IO::NestedCapture 抓標準輸出,以類似 PHP 輸出入緩衝區的方式,處理網頁輸出,以簡化網頁輸出處理。移除 Selima::DataVars 模組的 $HTML 變數。
  2. 修正 Selima::List::Guestbook 類別、 Selima::Form::UserMem 類別、 Selima::Form::GroupMem 類別、 Selima::Form::UserPref 類別、 Selima::Form::Guestbook 類別、 Selima::Form::LinkCatz 類別、 Selima::htc::Form::NLArt 類別、 Selima::imacat::Form::LtZhPoem 類別及 Selima::wov::Form::NLArt 類別,移除不用的 :output 類變數引用。
  3. 修正 Selima::HTTP 模組的 http_*() 函式,處理前先清空 IO::NestedCapture 的輸出轉向。
  4. Selima 系統版本更新為 3.10 。改用 IO::NestedCapture 作網頁輸出控制後,所有的網頁輸出處理都要修正,異動檔案很多。

Date: 5.24.’07.
  1. 修正 counter.cgi 程式,移除不該存在的 in_our_network() 函式。 in_our_network() 函式使用早已移除宣告的 @OUR_NETWORKS 陣列及 Net::IPv4Addr 模組的 ipv4_in_network() 函式,造成程式錯誤無法執行。從 Net::IPv4Addr 模組改用 Net::CIDR::Lite 模組已經兩個多星期了了,才發現這個問題,這段期間程式都無法作用,我卻完全不知道,實在是很不應該。

Date: 5.23.’07.
  1. 修正 Selima::Encrypt 模組的 encrypt() 函式, ASCII 可列印字元從 31 開始有誤,修正為 32 。

Date: 5.23.’07.
  1. 修正 Selima::Encrypt 模組,因 Crypt::Rijndael 已於 2007-02-23 發行 1.04 新版,已支援 x86_64 平台,故捨 Crypt::Rijndael_PP ,改回用 Crypt::Rijndael

Date: 5.8.’07.
  1. 修正 Selima::GeoIP 模組,原用 Net::IPv4Addr 模組,改用 Net::CIDR::Lite 模組,移除 is_private_ip() 函式,改用 $PRIVATE_NETWORKS 物件。 Net::CIDR::Lite 模組效能好像比 Net::IPv4Addr 模組好。
  2. 修正 counter.cgi 程式,移除未用到的 Geo::IP 模組,原用 Net::IPv4Addr 模組,改用 Net::CIDR::Lite 模組,移除 in_our_network() 函式、 @OUR_NETWORKS 陣列及 $IN_OUR_NETWORK 變數,改用 $OUR_NETWORKS 物件。

Date: 4.8.’07.
  1. 修正 Selima::Init 模組,修正 checkspam_reqheads() 函式,加上兩個新的規則;修正 checkspam_spammers() 函式,加上一個新的規則。

Date: 4.3.’07.
  1. 修正 Selima::Checker 類別的 _check_path() 方法,將移除 index.html 的部份前移到 _trim() 後,以便正確檢查,並避免後來重複路徑檢查時產生的錯誤。

Date: 3.18.’07.
  1. 修正各站的首頁,計數器和上次更新日期,回復用 mod_perl GD 的計數器。 GD 造成記憶體區段錯誤 Segmentation fault 的原因找到了,也解決了。 PHP 中也有 gd 模組,但 PHP 的 gd 用的是內附的 gd 函式庫, Perl 的 GD 用的是系統的 gd 函式庫,同時載入 mod_perl.solibphp5.so 時,兩者版本不同互衝所致。解決方法,只要重新編譯 PHP ,原參數 with-gd=shared 改為 --with-gd=shared,/usr ,改連結系統的 gd 函式庫即可。

Date: 3.16.’07.
  1. 運用新版 Apache 2 的內容協調功能,新的 prefer-language 環境參數, SetEnvIf CookieHeader add Set-Cookie 設定,終於解決了旅舍的理想,所選的語言可以一直持續下去!過去如果網站語言沒有自動選到自己習慣的語言,切到該語言頁後,再看下一頁,又會回到之前錯誤的語言中。現在利用新版 Apache 2 的語言協調選擇功能,終於可以把語言固定下來了!耶! ^_*'

Date: 3.15.’07.
  1. 修正各站的首頁,最近更新日期暫時改用 CGI 的圖型。 GD 在 mod_perl 2 下會 crash , bug 尚待回報。

Date: 3.14.’07.
  1. 修正 Selima::imacat::Rebuild 模組的 rebuild_links() 函式、 rebuild_diary() 函式、 rebuild_changelog() 函式和 rebuild_literalzh() 函式,取消製作預設語言的符號連結。 Apache 2 有 ForceLanguagePriority 設定,不需要另外製作預設語言的符號連結。

Date: 3.13.’07.

昇級為 Apache 2 + mod_perl 2 。

  1. 修正各站的首頁,計數器暫時改用 CGI 的計數器。 GD 在 mod_perl 2 下會 crash ,原因待查。
  2. 伺服器版本昇級為 Apache 2 (2.0.59) + mod_perl 2 (2.0.3) 。
  3. Selima 系統版本更新為 3.00 。由 mod_perl 1 昇級到 mod_perl 2 ,為配合 mod_perl 2 的新處理方式,系統程式大範圍重寫,異動非常大。

Date: 3.13.’07.
  1. 修正 Selima::HTTP 模組及 Selima::Destroy 類別,原用 $r->header_out() 方法,改用 $r->headers_out()->set() 方法。
  2. 修正 Selima::Login 模組 upd_login_info() 函式的註解,原 Logged-in from Apache/mod_perl HTTP Authentication 改為 Logged-in from Selima::AuthDig Digest Authentication
  3. 修正 Selima::Init 模組的 initenv() 函式,原先直接檢查 Selima::AuthDig 傳回的 $AUTHINFO ,改為依是否載入 $INC{"Apache/AuthDigest/API.pm"} ,而檢查 $AUTHINFO$ENV{"REMOTE_USER"} ,來決定 unauth()upd_login_info() 。雖然用 mod_auth_digest 登入,程式本身無法和登入過程一體化,但是應該可以相信 Apache 的登入資訊,不會有安全問題吧~
  4. 修正 showenv.cgi 程式,修正在 mod_perl 2 下時,顯示的方法名稱。
  5. 修正 Selima::DataVars 模組,原先以 $ENV{"GATEWAY_INTERFACE"} 檢查 $IS_CGI ,因 mod_perl 2 下載入這個模組的時候還沒有 $ENV{"GATEWAY_INTERFACE"} ,改為以 $ENV{"GATEWAY_INTERFACE"}$ENV{"MOD_PERL"} 檢查。
  6. 修正 Selima::Destroy 模組的 DESTROY() 方法,原先在 mod_perl 下自動執行 $r->send_http_header() ,改為檢查只有 mod_perl 1 下才會執行 $r->send_http_header()
  7. 修正 Selima::Init 模組的 initvars() 方法,原用 $r->headers_in()->add() 方法,改用 $r->headers_in()->set() 方法。
  8. 修正 Selima::Init 模組的 initenv() 函式,先執行 $MAIN->can("siteconf") ,以取得 $PACKAGE ,以便傳給 initvars() ;修正 initvars() 原型,由 initvars(;$) 改為 initvars($) ,因為現在一定會傳入參數,不可能省略。
  9. 修正 Selima::DecForm 模組的 init_forms() 函式,原先由 $rawpost = $r->content 取得 POST 表單的內容,改依 $IS_MP2 判斷,由 $r->read($rawpost, $r->headers_in->get("Content-Length"))$rawpost = $r->content 取得 POST 表單的內容。
  10. 修正 Selima::HTTP 模組的 http_*() 函式,原用 $r->err_header_out() 方法,改用 $r->err_headers_out()->set() 方法;加上引用 Apache2::Response;
  11. 修正 Selima::Destroy 類別的 DESTROY() 方法,原用 $r->headers_out->set("Content-Length"=>length $HTML); 方法,改用 $r->set_content_length(length $HTML); 方法。

Index | First | Previous | 9 | 10 | 11 | 12 | 13 | Next | Last