波波逸思的部落格 :: Xuite日誌
  • 搜尋
  • 網頁載入中,請稍候...
  • 沒有新回應!
  • 氣象圖
  • 台灣 東亞






  • 如何使用RSS
    Powered by Xuite
  • 之前有在用一套 Firefox extension,叫做 Vacuum Places Improved

    想說,只是用裡面的一小部份,應該自己改一下就可以放進 UserChrome 裡。

    重點是下個 VACUUM 的 SQL command。如下所示:

    Components.classes["@mozilla.org/browser/nav-history-service;1"]
    .getService(Components.interfaces.nsPIPlacesDatabase)
    .DBConnection.executeSimpleSQL("VACUUM");");

    而整個原始碼就像下面這樣,

    生個 menuitem,來方便使用。

    (function() {
    var newItem = document.createElement("menuitem");
    newItem.setAttribute("label", "vacuum");
    newItem.setAttribute("oncommand", "Components.classes[\"@mozilla.org/browser/nav-history-service;1\"].getService(Components.interfaces.nsPIPlacesDatabase).DBConnection.executeSimpleSQL(\"VACUUM\");");

    var m = document.getElementById("userChrome-Menu");
    if (!m) {
    var openLink = document.getElementById("context-openlink");
    m = document.createElement("menu");
    m.setAttribute("id", "userChrome-Menu");
    m.setAttribute("label", "userChrome");
    openLink.parentNode.appendChild(m);
    }

    var mpopup = document.getElementById("userChrome-MenuPopup");
    if (!mpopup) {
    mpopup = document.createElement("menupopup");
    mpopup.setAttribute("id", "userChrome-MenuPopup");
    m.appendChild(mpopup);
    }
    mpopup.appendChild(newItem);

    })();

    原本我是使用Tree Style Tabs這個extension,

    但是有時候會發生Tabs會全擠在一起的Bug,

    我也找不出什麼原因會導致這個問題。

    不過,因為我只是要讓我新增Tab時,

    可以放在目前Tab的右方,

    而不是append到最後一個。

     

    所以自己就用UserChrome抄了一小段Code來處理這個。

     

    (function() {

    function UcNewAddTab(aURI, aReferrerURI, aCharset, aPostData, aOwner, aAllowThirdPartyFixup)
    {
    var newPos = gBrowser.mCurrentTab._tPos + 1;
    var newTab = gBrowser.origAddTab(
    aURI, aReferrerURI, aCharset, aPostData, aOwner, aAllowThirdPartyFixup
    );
    if ('undefined'==typeof aURI) return newTab;

    gBrowser.moveTabTo( newTab, newPos);
    gBrowser.selectedTab = newTab;

    return newTab;
    }

    function UcAddTabOnLoad()
    {
    window.addEventListener('unload', UcAddTabOnUnLoad, false);
    if ('undefined'==typeof gBrowser) return;
    gBrowser.origAddTab=gBrowser.addTab;
    gBrowser.addTab=UcNewAddTab;
    }

    function UcAddTabOnUnLoad()
    {
    gBrowser.addTab=gBrowser.origAddTab;
    window.removeEventListener('unload', UcAddTabOnUnLoad, false);
    }

    if ('undefined' != typeof gBrowser) {
    gBrowser.origAddTab=gBrowser.addTab;
    gBrowser.addTab=UcNewAddTab;
    }

    })();

    之前就知道舊版的Kerio Personal firewall 2.1.5,

    在某些情況下,會導致IntelR PROSet/Wireless Event Log這個Service crash。

    就會出現svchost crash的視窗。

    之前都是手動避過這個問題,

    當我還沒key in帳號密碼,

    靜靜等待Kerio Personal firewall啟動的視窗,

    等到Kerio Personal firewall先啟動之後,

    再login,通常就不會有問題。

    但是因為這段時間要等蠻久的,大概2-3分鐘,

    實在是沒那個耐性。

     

    才試著去更改fwdrv (Kerio 的 firewall driver) 的DependOnService,

    結果是很簡單的在fwdrv的DependOnService加上IntelR PROSet/Wireless Event Log。

    測試到目前為止,都沒有問題。 :)



    2009-07-19 15:29 [c] wildcard support

    最近有需要用到wildcard,

    所以就來看一下wildcard的suport。

    但是往往是support unix版的wildcard,

    或者應該說M$所 support 的wildcard 比較奇怪。

    因為當你用 "*.*" 比對時,

    它會不管你有沒有".",

    直接當成 "*" 在比對,

    例如:

    "t*.*" -> 要找 prefix 是 "t"

    在unix下,通常會比對到的是prefix 是 t ,

    而且中間一定要有一個 "." 。

    在windows則只需要prefix是 "t" 就會比對到了。

     

    在codeproject上,

    wildcard 比對的原始碼

    我改了一點點,

    讓這個 wildcard support 可以符合 M$ 的 wildcard 。

    原始碼如下:


    #include <stdio.h>
    #include <stdlib.h>


    int wildcmp(const char *wild, const char *string) {
    // Written by Jack Handy - jakkhandy@hotmail.com

    const char *cp = NULL, *mp = NULL;

    while ((*string) && (*wild != '*')) {
    if ((*wild != *string) && (*wild != '?')) {
    return 0;
    }
    wild++;
    string++;
    }

    while (*string) {
    if (*wild == '*') {
    if (!*++wild) {
    return 1;
    }
    mp = wild;
    cp = string+1;
    } else if ((*wild == *string) || (*wild == '?')) {
    wild++;
    string++;
    } else {
    wild = mp;
    string = cp++;
    }
    }
    // modified by porpoise
    if (mp == wild && *wild == '.' && *(wild+1) == '*') {
    do {
    wild+=2;
    } while (*wild == '.' && *(wild+1) == '*');
    }

    while (*wild == '*') {
    wild++;
    }
    return !*wild;
    }


    int main()
    {
    char *wild = "w*.*.*.*.*";
    char *string ="wtest";
    int rc;
    rc = wildcmp(wild, string);
    printf("wildcmp(%s,%s)=%d\n",wild, string,rc);
    return 0;
    }

    今天是怎麼回事?

    又是豪雨、強風,剛剛又加上地震~

    第一頁  上一頁  1 2 3 4 5 6 7 8 9 10 下一頁  最後頁