話說這一版出來有一段時間了,不過之前因為在趕案子,沒空測試,所以拖到上禮拜比較閒的時候才換上新版~
我是有參加那個當日下載的金氏世界紀錄啦,不過當天我就發現可攜版也同時放出來了~

有些附加元件並沒有這一版,所以我重新做了一個目前我在用的列表:


HACGIS 發表在 PIXNET 痞客邦 迴響(0) 引用(0) 人氣(15)

目前做的這個案子,需要把舊的文章匯入到新的系統中,匯入是沒什麼問題的,文章數目沒少,可是有些文章就是有幾個欄位匯不進來。
研究之後發現,是因為文章本文的欄位 (一般來說是 Body) 的內容引起的問題,實際上因為內容很長,我也無法判斷問題出在哪?

只記得為了避免雙引號跟換行字元,我在匯入之前已經先處理裡過了:我用 OpenOffice.org 來置換字元,因為他支援正規表達式的搜尋與取代,我把雙引號換成單引號、換行字元換成 <br />。

後來我把這個本文欄位移到最後一欄,並在最後一欄後面再加一欄防護欄,內容是兩個雙引號。
我發現用這樣的方式匯入,文章都沒有問題,所有的欄位也都可以匯入。

另外要注意的事情是,有些模組會對文章作直接或間接的前後處理(例如:Pathauto 、Taxonomy Menu 模組),匯入前要先停用。

HACGIS 發表在 PIXNET 痞客邦 迴響(0) 引用(0) 人氣(26)

Node Import 模組是個非常好用的模組,可以把各種類型的 Node 資料先用打好,存成 csv 檔然後匯入。
不過對於自設的 CCK 欄位有個缺憾,就是在匯入之前必須先把 widget 的型態,由 option (select list / checkbox / radio) 改成 text,這樣才能匯入,實在是不太方便。
我修改了一點程式,讓它可以不用轉換 widget 的型態也能匯入,不過有個限制,目前修改的方式,只支援 Allowed values list 為下列形式:
value1
value2
vaule3

不支援 Allowed values list 為下列形式:
key1|value1
key2|value2
key3|value3

HACGIS 發表在 PIXNET 痞客邦 迴響(0) 引用(0) 人氣(42)

目前首上有一個案子,要作一些統計的處理,其中有一向是關於日期欄位的。
我用 Drupal 的 Views 模組搭配 Date 模組來作,於 Argument 指定該日期欄位,這樣就可以顯示出我要的結果。
不過 Date 模組中有個小問題,那就是在生成 SQL 命令時,會產生錯誤,其錯誤的理由是,日期欄位的名稱被設定成 range ,而剛好在 MySQL 中 range 是保留字,必須用 `range` 才能使用該名稱。
所以我修改了 date_views.inc 中的 _date_views_argument_range_handler 函數

找到:
$fieldinfo['fieldname'] = 'range';

改成:
$fieldinfo['fieldname'] = '`range`';

HACGIS 發表在 PIXNET 痞客邦 迴響(0) 引用(0) 人氣(35)

今天在處理一個日期比較的問題,發現 DateTime 類別可以進行 1970/01/01 以前的日期比較,不過由於該類別建構式比較嚴格,所以我將他繼承後擴充改寫了一番。
程式碼在下面:

class Zyme_DateTime extends DateTime{
    function __construct($時間 = null, $時區 = null){
        if ($時間 instanceof DateTime) {
            $_時間 = $時間->format('c');
        } else if (is_int($時間)) {
            $_時間 = '@' . $時間;
        } else {
            $_時間 = (string)$時間;

HACGIS 發表在 PIXNET 痞客邦 迴響(0) 引用(0) 人氣(61)


xdebug 的報錯功能非常好用,但由於沒有 nts 的版本,一直以來是我心中的缺憾。
這兩天花了一點時間研究,寫出一個替代用的報錯物件,除了時間和記憶用量無法顯示外,其他都可以做到接近 xdebug 的報錯功能。
我還加上顯示出現錯誤的源碼片段、傳入參數的功能,這個物件還可以繼續改加以完善。

用法:
Zyme_Error::除錯(true);
Zyme_Error::錯誤處理(true);

原始碼在下面:
<?php
final class Zyme_Error {

HACGIS 發表在 PIXNET 痞客邦 迴響(0) 引用(0) 人氣(80)

今天我的老闆交代我在 Server 上裝一份新的 SugarCRM ,原以為是個很簡單的事情,結果花了一整天~
原因出在 SugarCRM 在安裝過程中,檢查 MySQL 連線設定那部份一直過不了,可是在同一台機器上,另外一份之前安裝過的 SugarCRM 卻跑的好好的~

我以為是 PHP 版本問題,從 PHP4 升級、換成 PHP5 都不行~
後來以為是 MySQL 的問題,重裝、換了 5.1 的版本也不行~
最後只好使出最終奧義:在 Windows 上裝好後再移過去...

這下終於可以動了,不過我還是不曉得 SugarCRM 的安裝程式出了什麼問題。

另外,我在 Windows 下安裝程序最後會發生 500 錯誤,只要把 SugarCRM 目錄下的 .htaccess 這個檔案刪除即可正常執行~

HACGIS 發表在 PIXNET 痞客邦 迴響(0) 引用(0) 人氣(171)

算是在實做過程中發現一些問題,然後重構這個強力工具!

我知道我目前碰到一個危險的境界,由於這個插件的類別非常強力,我經常拿他來替代繼承,我知道有點過頭了,但它真的很好用!
~我是說你可以維持一個物件變數,然後把需要功能一直掛入(只要你繼承這個抽象的插件類別,寫出你需要的功能)~

這幾天一直為了unset前後記憶用量沒有改變的問題無法釋懷,後來問了 kiang,他表示那是 Zend 引擎還沒到記憶體回收的週期,所以不會釋放~
這個類別的 __更新() 方法有一個地方我一直無法瞭解為何會有這個效果,知道的網友請開示吧~

另外一提,ADODB Lite 目前仍然是記憶用量最小的 DB Layer ,我自己寫的這個 DB Layer 跟它比較,兩邊都不掛任何多餘的模組,硬是比它大了約 50 K...
我該檢討了~

HACGIS 發表在 PIXNET 痞客邦 迴響(4) 引用(0) 人氣(156)

由於名稱空間的諸多限制,以及 PHP 5.3 的 call_user_func_array 傳遞參照參數陣列 與 &new 的 Deprecated 警告問題,個人決定還是先將開發平台維持在 PHP 5.2.5 上面。
名稱空間的限制還好,但後面那兩個會造成許多現有的函式庫噴出一堆警告訊息,我沒時間一個一個去修,所以只好暫時放棄,等年底 PHP 5.3 出來一陣子後再看看。

HACGIS 發表在 PIXNET 痞客邦 迴響(0) 引用(0) 人氣(98)

在使用上有幾個要注意的事情:

  • 使用 use 敘述必須至少有一項用::串接
use test; // 這是錯的
use test::test1; // OK

  • 上述的的敘述中,若用::來分隔,最後一項不可相同,若相同則必須用 as 來設定別名
use test::test1::test;
use test::test2::test; // 這是錯的
use test::test2::test as test0; // OK

HACGIS 發表在 PIXNET 痞客邦 迴響(0) 引用(0) 人氣(140)