2013年8月9日 星期五

驗證子網路遮罩是否合法(NetMask Check)

驗證Netmask方式很簡單,只要判斷從netmask是否為連續1即可。

bool CheckNetMask (char* pszMask)
{   
   bool bFoundOne = false;
   unsigned long lNetMask;
    if (pszMask != NULL)
    {
        lNetMask = inet_addr(pszMask);
        if (lNetMask == INADDR_NONE)
        {
            if (strcmp(pszMask, "255.255.255.255") == 0)
                return true;
            else
                return false;
        }
        else
        {
            lNetMask = ntohl(lNetMask);
            unsigned long ulMask = 1;

            while (ulMask != 0)
            {
                if (lNetMask & ulMask)
                    bFoundOne = true;
                else if (bFoundOne)
                    return false;
                ulMask << 1;
            }
           
            return true;
        }
    }
    else
        return false;
}

2013年8月4日 星期日

CoCreateInstance Fail

明明Filter有註冊,但在呼叫 CoCreateInstance時卻回傳「類別未登錄0x8004154」,經過追查之後才發現原來此Filter在Linker的Fixed Base Address的選項設定選擇了/FIXED,才導致呼叫時有機會失敗。修正方法就是將/FIXED改為/FIXED:NO的選項。

我們可以運用dumpbin的工具來驗證,如果沒有出現.reloc區段的話,表示設定的為/FIXED


2013年7月13日 星期六

DIP 雙列直插封裝

對硬體不熟,但工作上還是常遇到一些常見的名詞,只好把它記下來。不過查了一下DIP這個詞,這不就是之前大學時上邏輯設計實驗就有用到的東西嗎?

雙列直插封裝(英文DIP, Dual in-line package),說穿了就是把IC封裝起來的方式。他的外型為長方型,然後會有兩排平行的針腳。他可以焊接在印刷電路板上,或是直接插入在DIP插座上。而之前學校使用的方式就是把他插在麵包板上。DIP元件一般會依據針腳的個數簡稱DIPn,下圖即為DIP20積體電路。



2013年7月5日 星期五

XML特殊字元處理 (C++)

在使用XML當作資料傳遞時,最常犯的錯就是自己產生的XML內容包含了一些特殊字元,導致無法正常顯示XML。特殊字元包括:

'
"
&
<
>

當遇到以上幾個字元時,必須做以下轉換:
&apos;
&quot;
&amp;
&lt;
&gt;

以C++寫法為例,輸入一個string型態的字串,回傳已經做好特殊字元取代的字串

std::string XmlEscape(const std::string &rstrString)
{
ostringstream ossEscapeString;
unsigned char ch;

for(string::const_iterator iter = rstrString.begin(); iter != rstrString.end(); iter++ )
{
ch = static_cast(*iter);

switch(ch)
{
case '&':
ossEscapeString << "&amp;";
break;
case '<':
ossEscapeString << "&lt;";
break;
case '>':
ossEscapeString << "&gt;";
break;
case '"':
ossEscapeString << "&quot;";
break;
case '\'':
ossEscapeString << "&apos;";
break;
default:
ossEscapeString << ch;
break;
}
}

return ossEscapeString.str();
}

2013年6月15日 星期六

舊鈔

新收藏兩張一佰圓舊鈔,這個我已經沒有太多的印象了。剛好拿來和收藏的硬幣一起來個合照。不過硬幣還真多種,光五十圓裡面就有三個版本了,之前也還有五十圓鈔票,可惜沒收藏到。

硬幣也太多種了

2013年1月1日 星期二

Welcome 2013

今年的跨年計劃真的是捉摸不定,從一開始說好要到桃園跨年的,後來又改到社子島,但最終的跨年地點是選在麥帥一橋上,雖說變來變去,但我就是喜歡這樣隨性自在的感覺。

這次跨年的成員有阿佑、小武、阿銓以及我。晚上七點集合在阿佑家,同樣還是沒計劃要吃啥,最後經過一家薑母鴨店,我們就停了下來,冷冷的冬天最適合這個了。

吃飽後,我們還是照原先計劃前往社子島出發,小武果然沒騙人,確實是看的到101,只是有點遠,而且時間還很.......早,所以在社子島待不到幾十分鐘,我們就驅車延著堤防往101方向前近。騎著騎著,最終我們竟從人煙稀少的社子島,現身在人山人海的饒河街夜市。不過來到饒河街,我印象中那裡有個彩虹橋可以看到101,只不過如預期,就是人山人海,所以我們只好繼續往前走,最後決定的位置就是麥帥一橋了。