歡迎光臨, 訪客. 請先 登入註冊一個帳號.
三月 29, 2024, 12:57:16 下午
19595 文章 在 3865 主題 由 4580 會員
最新註冊會員: aa123aa1
  列出文章
頁: 1 [2]
16  測試 / LifeType 1.0 測試 / 另一個中文的問題(MSIE only) 於: 二月 03, 2005, 08:21:54 下午
今天下午把 blog 的名稱設定為全部中文就看不到畫面了,這時候 view source 還是看得到東西,而且也看到 Mark 已經把 <meta> 移到 <title> 前面了,但這問題還是很常見的 MSIE bug: 在

引用
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">


這行的最前面,多了兩個 tab,這兩個 tab 會造成 IE 無法正確顯示。可是我在 template 看起來是沒有這兩個 tab 的,所以有可能是某個程式不小心先丟出了這個東西,不知道誰比較細心可以幫忙找看看的?如果這兩個 tab 找不出來,那 blog 的名稱就不能用中文開頭,不然用 MSIE 看不到。
17  開發 / 中文相關 / 針對新版 Mysql 的資料庫查詢修正 於: 二月 03, 2005, 08:11:59 下午
我比較 prefer 先把 adodb 升到最新再加上我的 patch,然後我把這個 patch commit 回 adobb 那邊。在 db.class.php 那邊加上 mysql_ 相關的 function 感覺很怪。
18  開發 / 中文相關 / 針對新版 Mysql 的資料庫查詢修正 於: 二月 03, 2005, 03:36:59 下午
Aiwa,

問題複雜的地方是,舊的 mysql 可以把 utf8 存在非 utf8 的資料庫中。

例如我自己的 site 由 3.x 升級上來,先 dump 出來再塞進去,同樣都是 utf8,資料庫內部的 encoding 可以是 latin1 也可以是 utf8。當資料庫中存的 encoding 其實是 latin1 時,若 SET NAMES 是 utf8, mysql 出來的結果就是一堆亂碼,一定得 SET NAMES latin1 才行。雖然這是因為以前支援不完善造成的問題,可是還是會有 user 的 db 是像我一樣,拿 latin1/big5 存 utf8 的資料。
19  開發 / 中文相關 / 針對新版 Mysql 的資料庫查詢修正 於: 二月 03, 2005, 03:10:12 下午
我把它 report 成 http://bugs.lifetype.net/view.php?id=201 了。
20  開發 / 中文相關 / 針對新版 Mysql 的資料庫查詢修正 於: 二月 03, 2005, 02:46:34 下午
完成了,同樣 patch 在 class/database/adodb/drivers/adodb-mysql.inc.php 上面, patch 檔也可以在 http://ccca.nctu.edu.tw/~cwyeh/patch.txt 下載。

基本原理如下:

* _isSupprtUtf8() 判斷 mysql 是否支援 utf8。若 4.0 or under 就 return false; 4.1+ 的則再檢查 compile 進來的 character set 是否包括 utf8,若是沒有的話就 return false, 有就 return true;
* _getDbDefaultEncoding() 若是支援 utf8, 則取得現在資料庫的 encoding, 不論是 utf8/latin1/big5 都可以取得。
* 然後再 apply SET NAMES $dbEncoding。

剛剛測試過應該是可以 work 的,不過如果 db 本身 default encoding 設為 utf8, 結果 table 卻是 big5/latin1, 用這個方法是不行的。

測試前,請確認 apache 沒有用到舊的 mysql connection, 最好的辦法就是把 mysql restart 一次。另外請記得刪掉 tmp/ 下面的 cache,不然會看到舊的內容。有問題歡迎提出來。

引用
--- adodb-mysql.inc.php.orig    Thu Feb  3 15:30:35 2005
+++ adodb-mysql.inc.php Thu Feb  3 15:28:05 2005
@@ -344,6 +344,14 @@
                        $this->_connectionID = mysql_connect($argHostname,$argUsername,$argPassword);

                if ($this->_connectionID === false) return false;
+
+               if ($this->_supportUtf8() && $argDatabasename) {
+                       $dbEncoding = $this->_getDbDefaultEncoding($argDatabasename);
+                       if ($dbEncoding) {
+                               mysql_query("SET NAMES $dbEncoding", $this->_connectionID);
+                       }
+               }
+
                if ($argDatabasename) return $this->SelectDB($argDatabasename);
                return true;
        }
@@ -357,6 +365,13 @@
                        $this->_connectionID = mysql_pconnect($argHostname,$argUsername,$argPassword);
                if ($this->_connectionID === false) return false;
                if ($this->autoRollback) $this->RollbackTrans();
+
+               if ($this->_supportUtf8() && $argDatabasename) {
+                       $dbEncoding = $this->_getDbDefaultEncoding($argDatabasename);
+                       if ($dbEncoding) {
+                               mysql_query("SET NAMES $dbEncoding", $this->_connectionID);
+                       }
+               }
                if ($argDatabasename) return $this->SelectDB($argDatabasename);
                return true;
        }
@@ -365,6 +380,44 @@
        {
                $this->forceNewConnect = true;
                return $this->_connect($argHostname, $argUsername, $argPassword, $argDatabasename);
+       }
+
+       function _supportUtf8() {
+
+               // check mysql version first. Version lower than 4.1 doesn't support utf8
+               $serverVersion = mysql_get_server_info($this->_connectionID);
+               $version = explode('.', $serverVersion);
+               if ($version[0] < 4) return false;
+               if ( ($version[0] == 4) && ($version[1] == 0) ) return false;
+
+               // check if utf8 support was compiled in
+               $result = mysql_query("SHOW CHARACTER SET like 'utf8'", $this->_connectionID);
+               if (mysql_num_rows($result) > 0) {
+                       return true;
+               }
+               return false;
+       }
+
+       function _getDbDefaultEncoding($argDatabasename)
+       {
+
+               if (!$argDatabasename) {
+                       return false;
+               }
+
+               // We use a SHOW CREATE DATABASE command to show the original
+               // SQL character set when DB was created.
+               $result = mysql_query("SHOW CREATE DATABASE $argDatabasename", $this->_connectionID);
+               if (mysql_num_rows($result) < 0 ) {
+                       // The specified db name is wrong!
+                       return false;
+               }
+               $dbInfo = mysql_fetch_row($result);
+               $pattern = '/40100 DEFAULT CHARACTER SET (\w+) /';
+               if ( (preg_match($pattern, $dbInfo[1], $match) > 0) ) {
+                       return $match[1];
+               }
+               return false;
        }

        function &MetaColumns($table)
21  開發 / 中文相關 / 針對新版 Mysql 的資料庫查詢修正 於: 二月 03, 2005, 10:50:24 上午
Mark,

我這邊是跑 mysql 4.1.9, 其實這個問題跟 create database 時選擇的 encoding 也有關係, 一個 work around 的方式是在 create database 時不要選擇 utf-8 encoding, 這樣就可以避開這個問題, 等到將來大部份人都升級到 4.1 or later 再處理。另一個作法是判斷 mysql 4.1+ 則強制使用 utf8 database encoding。

講了一堆,這東西可以交給我來試看看嗎?
22  測試 / LifeType 1.0 測試 / 管理者介面空白?? 於: 二月 03, 2005, 08:48:50 上午
view source 看看有沒有東西,有可能同樣是 IE bug,如果 view source 有東西,那先用 firefox 頂一頂吧。
23  測試 / LifeType 1.0 測試 / 關於 <title> 在 <meta> 前產生的問題 於: 二月 02, 2005, 06:14:17 下午
相信很多人都遇過因為  <title> 在 <meta> 之前而造成 MSIE 頁面內文空白的問題,我想要問的是,雖然這個不算是 pLog 造成的 bugs,但是否預設內建的 template 應該把這兩個欄位對調一下,以避免這個問題呢?
24  測試 / LifeType 1.0 測試 / 從0.3.2升級遇到的Error Message 於: 二月 01, 2005, 10:13:28 下午
Mark,

如果是重新安裝,wizard.php 應該不會用 "modifying" 這個訊息才對,而應該是 create error。他的訊息看起來很像是 upgrade 的動作跑了兩次,第二次要 create 1.0 新增的 table 產生 error,alter 舊 table 也發現該欄位已經存在,不知道這樣對或不對。
25  測試 / LifeType 1.0 測試 / 從0.3.2升級遇到的Error Message 於: 二月 01, 2005, 12:36:47 下午
你有把 config.properties.php 蓋回去嗎?
26  建議 / 要求與建議 / [轉貼] How to get pLog 1.0 beta version 以及一些廢話 於: 二月 01, 2005, 11:35:52 上午
引用自: Raymond
我是建議考慮一下下次學 FreeBSD 來一個 development branch,高興的人可以天天向 bug 挑戰。我個人雖然 php 程式還看得懂,但要花時間 debug 別人的 code 我是打死也不幹的。不過要解決大家期待的 1.0 版的問題,不如就將 0.3.2 版登基為 1.0 版好了,讓有「版本潔辟」的人可以安心繼續使用舊版而不用天天追著這個「不穩定一大堆 bug 而且很多模組都還沒有更新」的新版本的尾巴跑。而這個真正的 1.0 版就定為 1.0.3 版本了。相信大家對 minor upgrade 的興趣將會立刻大幅的降低。 咬牙切齒


通常 major version number 代表的是一些主要架構的更動,0.3.2 -> 1.0 整個 table 都變了,根本不可能拿現在的 0.3.2 -> 1.0,這點應該是常識吧。真要出的話應該是把現在 svn 的 0.3.2 整理一下變成 0.3.3,主要是 fix 0.3.2 半年以來的問題。

引用自: Raymond


不知道一直想 download 目前 1.0 beta 的人是希望真的幫忙看程式碼呢?還是只是「監督」開發小組的進度,看看大家有沒有偷懶,讓 1.0 正式版遲遲不能推出?  魔鬼

不知道感恩的心,將別人所花的時間精神視為理所當然;在這裏即使毫無貢獻,還能理直氣壯的要求別人貢獻更多。 …… 真是好玩……  戴太陽眼鏡

P.S. 我個人是認為有點吵也沒有什麼不好,不吵一下大家感情那會好? LOL...  眨眼睛


自己不打算 commit bugs 就安靜回家等人家 release,不用來這邊搖尾巴打嘴炮。gslin 根本就不是因為 Mark 不願意"包" beta 而發文的,而是對於 Mark 沒有提到可以透過 svn 取得 development version 的訊息而為文。gslin 自己都說是小鼻子小眼睛來看這個事,但人家至少絕對有能力來 commit bug fix,如果 pLog 真的需要有能力的人來幫忙,那嘴炮還是少打一點,訊息多流通一點比較好。
27  測試 / LifeType 1.0 測試 / pLog 1.0 Beta 測試開始了。 於: 一月 30, 2005, 05:17:40 下午
若是新安裝者,記得先不要選中文語系,不然 locale 會有 error,因為除了 en_UK 以外的 locale 檔都被移走了,我已經把這個問題 report 到 bug tracking system 那邊了。

至於升級的人,是肯定會出問題的。在 svn r873 之後都有這問題,一個辦法是先用 r872 之前的來測試。執行 svn update -r 872 就可以抓 872 版的了。差別還不大。
28  建議 / 要求與建議 / [轉貼] How to get pLog 1.0 beta version 以及一些廢話 於: 一月 30, 2005, 02:20:52 上午
我說一下我自己感覺到的脈絡,也許 gslin 跟我一樣也或是不一樣,只是我自己感覺到的。

pLog 1.0 beta 在先前,一直給我一種 "需要某種關係" 才能拿到的感覺。這也許是由於 far 透露了"從 Mark 那邊拿到了 pLog 1.0 pre-beta"造成的錯覺,當時我覺得這個東西應該是 cvs 可以取得的,一如其他 open-source 的 project,所以並不認為這有什麼。過兩天當我嘗試從 sourceforge 上面用 cvs 抓東西下來,發現那邊已經 out-of-date,跟 gslin 經過差不多的過程,才從 plogworld 的文章翻出現在已經移到 svn 上面的消息。對我個人來說,到這邊就已經結束了,但中間卻白花了許多功夫,當然這不能歸咎於中文開發論壇,應該說 pLog 本身的資訊就應該更明確才是。

同樣的問題,前些天我在"plog 本身有 mailing list 嗎?"這個 thread 詢問了是否有提供 core developement 的 forum,得到的回應是大家多是直接用 email 和 msn 溝通;然而在我前天直接把 bug fix 寄給 Oscar 時才知道,原來還有一個 http://bugs.lifetype.net 存在,而且 Oscar 還要求我直接在上面 report。我不知道 Mark 是否知道這個系統的存在,如果知道的話,那為什麼不告訴大家呢?如果真的是"這也是 Oscar 為什麼希望能以有開發能力者優先 Beta Testing",那麼"有開發能力者"要去哪裡下載 bleeding edge 的 code、要去哪裡 report bugs,這些不都是應該讓大家都知道的事情嗎?

在這邊,我認同 gslin 希望"資訊可以被公開而不是被壟斷"的想法。沒有錯,也許只要我們更 active,自然會發現用 svn 就可以下載 truck 版本,bug 可以 report 到 http://bugs.lifetype.net;但如果真的為了 pLog 開發好,這些資訊的公開,才能讓有能力的人不要白花時間在找這兩個基本的東西上面吧?

至於 bleeding edge 的 bugs 造成的問題,這在每一個專案中都會出現,要說因為這原因刻意不揭露必要的資訊,未免也說不過去吧。

不過在這個不便造成的不滿以外,其實也沒什麼更大的不滿。Mark 辛苦了。
29  開發 / 核心補強 / plog 本身有 mailing list 嗎? 於: 一月 18, 2005, 11:02:02 下午
引用自: minstrel
據說是有mail list的, 不過沒什麼在用.

一般user的問題多半是發問在pLog官方論壇上, 而developer之間則是透過msn與email溝通.

其實, 有了官方論壇, mail list的作用就不大了.


不過最奇怪的就是,官方論壇沒有一個純討論主程式開發的討論區 吐舌頭
30  開發 / 核心補強 / plog 本身有 mailing list 嗎? 於: 一月 17, 2005, 08:44:57 下午
我在官方網站上沒看到有 mailing list 的連結,sourceforge 那邊的也不知道還能不能用,有人知道嗎?
頁: 1 [2]