Feeds:
文章
留言

Archive for 2008 年 01 月

CB6 使用 boost::tuple

boost 非常好用,但是 C++ Builder 6.0 的 C++ Compiler 似乎太舊了,對於部份語法支援不足,導致我想使用的 tuple 無法透過編譯。

我對 boost 源碼有興趣,可是無奈沒有時間,希望侯捷的 boost 源碼剖析快點出書。

所以,我只能先略過錯誤,在 boosttupledetailtuple_basic.hpp

#ifndef __BORLANDC__
template<int N, class T>
struct element<N, const T>
{
private:
  typedef typename T::tail_type Next;
  typedef typename element<N-1, Next>::type unqualified_type;
public:
#if BOOST_WORKAROUND(__BORLANDC__,<0x600)
  typedef const unqualified_type type;
#else
  typedef typename boost::add_const<unqualified_type>::type type;
#endif

};
#endif

加入紅色文字的編譯條件,如此,下面的範例可正常運作

    boost::tuples::tuple<int,double> get_values() {
        return boost::make_tuple(6,12.0);
    }

    triple(42,3.14,"My first tuple!");
    int i=boost::tuples::get<0>(triple); // 42
    double d=triple.get<1>(); // 3.14
    std::string s=boost::get<2>(triple); // My first tuple!

    boost::tuples::tuple<int,double> ret = get_values();
    i = boost::tuples::get<0>(ret); // 6
    d = boost::tuples::get<1>(ret); // 12.0

 

至於這樣修改會不會導致其他問題,可能需要高人指點~

Read Full Post »

Google Docs 檔案上傳程式

Google Docs 終於有方便的上傳工具可用,雖然檔案大小依然有限制(簡報透過此工具可上傳單檔 10MB),但是可透過一次拖拉多個檔案,將檔案上傳到 Google Docs,下圖是程式的使用介面:

20080125

該程式也支援右鍵選單直接上傳單一檔案,如下圖:

200801252

透過這個便利程式,相信很多人都會透過這個將許多文件批次上傳到 Google Doc。

這個程式使用 .NET 撰寫,所以執行時,系統必須先安裝 .NET Framework 2.0。

另外,他目前似乎不支援中文,當檔名有中文字的時候,程式就會錯誤。可能未來版本會修正。

如果你覺得這個上傳器太陽春,你可以參考 [5] 有說明該程式如何透過 Google Data APIs 上傳文件。

期待有人寫出更棒的前端工具~

參考資料
[1] Google Docs Uploader
[2] Easily upload your documents to Google Docs!
[3] Batch Upload Files to Google Docs
[4] Google Toolbar for Firefox
[5] Google Data APIs

Read Full Post »

今天同事遇到一個問題,原先寫的物件需要一個 Function Object 作為參數,可是這個 Function Object 需要對目前狀態作處理,由於 JS 採用 Reference 方式,所以,狀態會被覆寫,不是很懂我在說什麼吧….

看個範例吧,

var x =["a", "b", "c"];
var a = x[2];

var CC = function(){
    alert( ‘CC: ‘ + x[2] ); // ‘d’
    alert( ‘CC: ‘ + a);      // ‘100’
};

x[2] = ‘d’; // (1)
a=’100′; // (2)
CC();   

請問有什麼方法,可以讓 CC() 執行之後,不會受到(1)(2) 修改的影響,依然皆顯示 ‘c’ 呢?

以下,是我的解法:

var x =["a", "b", "c"];
var a = x[2];

var BB = new function(){   
    var _a = a;
    var _x = x[2];
    return function(){

        alert( ‘BB: ‘ + _a ); // ‘c’
        alert( ‘BB: ‘ + _x);  // ‘c’
   }
};

x[2] = ‘d’;
a=’100′;
BB();   

關鍵在於利用新的 Function Object 來儲存狀態,並將該狀態套用樣板回傳。如此,後續狀態皆是當時的值。

Read Full Post »

前一陣子在網路上發現 "小i機器人"的介紹,他的架構如下

Snap2

由於他透過自己的 BOT Server 與 MSN Server 溝通,所以,你需要先在 BOT Server 註冊帳號,他會負責 MSN 互動相關細節。

如果你要撰寫自己的機器人,則需要連到 BOT Server 進行訊息攔截和回覆。

有興趣的人可以參考下面的視訊教學打造自己的機器人
http://my.xiaoi.com/documentation/webcast/cn/sdkcn.html

只不過免費版本的 SDK 限制頗多,如:無法傳送檔案。這造成許多功能無法實作,可惜 T_T

目前實作一些我需要的功能,如:

guid — 產生 GUID 字串

md5 enc 字串  — MD5 字串編碼

md5 dec 字串 — MD5 字串解碼

html enc 字串 — 字串使用 HTML 編碼,如:html enc <a href = "aaaaaa">XYZ</a>

html dec 字串 — 字串使用 HTML 解碼,如:html dec &lt;a href = &quot;aaaaaa&quot;&gt;XYZ&lt;/a&gt;

url enc 字串 — 字串使用 URL 編碼,如:url enc http://zh.wikipedia.org/wiki/徐階

url dec 字串 — 字串使用 URL 解碼,如:url dec http://zh.wikipedia.org/wiki/%E5%BE%90%E9%9A%8E

zip 縣市 鄉鎮區 — 查詢郵遞區號,如:zip 高雄市 新興區

author — 顯示作者我本人的名字,如果你用 Live Messanger 則會出現我的網站

Read Full Post »

近來需要對 Vista 開發,苦於無書可供參考,現在終於有本經典圖書可一窺 Windows 的改變。

如果你有看過前一本 Programming Applications for Microsoft Windows,這本書仍不會讓你失望,依據書中的介紹,這本書是針對 C/C++ 開發人員寫的,其中新增許多 API 和 Windows XP, Vista, Server 2008 功能介紹。許多章節內容也依 Windows 新功能而改寫。

希望過年能夠把這本書看完增長些知識,當然也希望有中文版可提高閱讀速度~

Read Full Post »

今天早晨看到這句話,一開始不懂這句話代表什麼涵義,一再細細的品讀,神給我這句的感動是這段是一句寶貴的應許

我覺得水,指的是生活上所遇到的大小難處,所以,轉成白話來說,就是當你依靠神勇於面對自己所遇到的難處時

神必賜你足夠的能力,勝過一切的難處。

感謝神,用了"必"保證祂的應與,也願神賜給我有面對問題的勇氣與能力~

Read Full Post »

IIS 啟動時出現如下令人摸不著頭緒的錯誤訊息

Snap2

還好網路上有人[1][2]遇到類似的問題,問題發生在 IIS 的通訊埠被其他應用程式佔用,我是透過 "negies" 這套工具查出佔用該通訊埠的程式。所以,要解決這個問題有兩個辦法,一個是是先關閉佔用該通訊埠的程式。另一個是改 IIS 的通訊埠,如下圖可重新設定通訊埠

Snap1

參考資料
[1] AiCi, "IIS 無法啟動:發生意外錯誤0x8ffe2740 的原因"
[2] tohen, "IIS無法啟動:發生意外錯誤0x8ffe2740的原因"

Read Full Post »

« Newer Posts - Older Posts »