• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆-90  評論-947  文章-0  trackbacks-0
             
                 摘要: 引言   之前也做過一些含內嵌IE控件的東西,只是一直用MFC/ATL等框架,對于里面的原理其實一知半解,只有脫離它們寫一遍,才算能真正懂。前不久在寫一個SkyDriveClient的時候正好有一個需求,就練習了一下。技術含量沒有,在此記錄一筆,供后來人入門,供前輩們批評。   本文中,行文以流水帳、貼代碼方式為主,同時為了不帶來干擾,代碼將盡量以不帶或少帶封裝的方式書寫。目...  閱讀全文
            posted @ 2012-09-01 01:04 溪流 閱讀(7390) | 評論 (19)編輯 收藏

            (cnBeta: http://www.cnbeta.com/articles/203020.htm

             

            微軟拼音輸入法的新體驗模式,其實是微軟拼音一直以來的主要模式。筆者從1.5版開始接觸微軟拼音以來就一直是這種模式,主要特點就是長句輸入、二次確認,在第一次確認的時候,文字就進入仿佛實際輸入區域,但是文字下面有虛線,此時我們可以用光標鍵左右移動,就像下圖顯示的一樣:

            而在輸入拼音的時候,我們其實無需開啟候選詞窗口,也不用看屏幕:

            輸入完畢之后按空格,觀察首選是否正確,如果正確的話再一次空格確認,否則按一下右光標鍵回到句首開始選詞。非常方便,也顯得很專業。

             

            習慣于詞組輸入的同學可能喜歡時刻盯著屏幕出現的候選詞,一旦有錯立刻糾正選擇。而長句輸入則不必這樣,輸入整個句子,讓輸入法在整句的語境中替你選詞,命中率會高很多,特別是在打長篇文章的時候,非常有用。

             

            很多時候別人在看我輸入的時候,發現屏幕上有錯別字,會忍不住提醒我錯了,但是當我最后確認的時候,往往又對了,會顯得有一點點疑惑,但是通常不說。有趣的是,我在打別人名字的時候,他們發現一開始的錯別字,也會忍不住提醒我錯了,并且對輸入法把某人的名字弄成另外一個字非常感興趣,有時會以此"嘲笑"那個人。然后當我最后回來選詞的時候,他們會"指責"干嘛一開始不選對的字……我已經習慣了。但是整句輸入帶來的便捷之處,大部分人是沒法認識到的。所以我今天在這里花很大的篇幅介紹一下。

             

            遺憾的是,微軟拼音1.5、2.0、3.0都沒人叫好。到Office2003的時候,因為"新體驗"模式的出現,使得一部分人叫好,但那部分人其實還是把它當作詞組輸入法來用的。到Office2010出來的時候,又有一部分人叫好,實際上很大一部分人是為"簡捷"模式叫好。到現在Win8成了簡體中文語言下默認輸入法,即便有強推的味道,但好多人還是叫好,而新體驗模式的消失,卻很少有人問津。

             

            下面正式來看標題中提到的問題。Win8安裝完畢后簡體中文下只有一個微軟拼音簡捷,新體驗模式不見了?。?!

             

             

            有需要的同學,請跟隨筆者,一步一步找回新體驗模式。

             

            1、打開開始屏幕,在英文狀態下輸入regedit,然后回車,打開注冊表編輯器。(遇到UAC提醒,請選擇"是")

            2、在左側展開目錄樹,一直到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\CTF\TIP\{81d4e9c9-1d3b-41bc-9e6c-4b40bf79e35e}:

             

             

            微軟對這一項做了特殊的權限保護,它的權限和相鄰的那幾個不一樣,我們要取得寫權限。

             

            3、右鍵單擊它、選擇權限,打開如下圖的窗口:

             

             

            4、單擊"高級",再打開一個窗口:

             

             

            5、在所有者的右邊點擊"更改",輸入"everyone"或者當前登錄用戶名,按"確定",并選中"替換子容器和對象的所有者",然后按應用。(不要關閉這個窗口,等下我們還要改回來。)

             

             

            6、然后點擊左下方的啟用繼承(按了后該按鈕變為禁用繼承),并選中"使用可從此對象繼承的權限項目替換所有子對象的權限項目"。最后按"應用",遇到提示選擇"是"。

             

             

            現在,這個窗口變成這個樣子了:

             

             

            保留這個窗口,我們進行下一步。

             

            7、打開開始屏幕,在英文狀態下輸入"cmd",左側出現"命令提示符",右鍵點擊選中它,再到屏幕下方點擊"以管理員身份運行",遇到UAC提示選擇"是"。這樣我們打開具有管理員權限的命令提示符窗口,工作路徑位于System32目錄。

             

            8、輸入"regsvr32 ime\imesc\imsctip.dll",并按回車。

             

             

            直到看到下圖的提示,點擊確定,關閉命令提示符窗口。

             

             

            9、回到剛才的高級安全設置窗口,點擊左下方的"禁用繼承"按鈕,這時出現下圖提示:

             

             

            選擇第二項,"從此對象中刪除所有以繼承的權限":

             

             

            并選中"使用可從此對象繼承的權限項目替換所有子對象的權限項目",按"應用",遇到提示選擇"是"。

             

            10、點擊上方所有者右邊的"更改",輸入"nt service\trustedinstaller",按"確定",并選中"替換子容器和對象的所有者",然后按"應用"。

             

             

            至此,我們將注冊表權限恢復如初了。

             

            打開輸入法管理界面:

             

             

            我們可以看到多出來的"Microsoft Pinyin NewExperience"了,它就是我們要找的新體驗模式!

             

            悲劇的是,貌似新體驗模式在Metro界面下有問題,每次確認輸入,光標都會回到最前面(注:確認這是當時新浪微博Win8客戶端的Bug,不是輸入法的問題,新浪微博貌似已經修正此問題)。也許是因為有這些Bug,微軟才隱藏它的吧。不過,桌面模式下使用起來未發現任何問題哦。

            posted @ 2012-08-25 15:31 溪流 閱讀(4717) | 評論 (23)編輯 收藏

            因為接下去要做優化工作,在此之前,先做下簡單的性能測試。

            比較的對象是std::regex,暫時只比較兩項:

            1、解析正則表達式的速度

            2、使用解析好的正則表達式去匹配字符串的速度。

            測試代碼如下: 

            SECTION_BEGIN(StdRegExParse100000);

            PERFORMANCE_TEST_BEGIN(StdRegExParse100000);

            for (int i = 0; i < 100000; ++i)

            {

                wregex r;

                r.assign(L"http://([a-zA-Z0-9\\-]+.)+[a-zA-Z]+/");

            }

            PERFORMANCE_TEST_END(StdRegExParse100000);

            SECTION_END();

             

            SECTION_BEGIN(xlRegExpParse100000);

            PERFORMANCE_TEST_BEGIN(xlRegExpParse100000);

            for (int i = 0; i < 100000; ++i)

            {

                RegExp r;

                r.Parse(L"http://([a-zA-Z0-9\\-]+.)+[a-zA-Z]+/");

            }

            PERFORMANCE_TEST_END(xlRegExpParse100000);

            SECTION_END();

             

            SECTION_BEGIN(StdRegExMatch100000);

            {

                wregex r;

                r.assign(L"http://([a-zA-Z0-9\\-]+.)+[a-zA-Z]+/");

                PERFORMANCE_TEST_BEGIN(StdRegExMatch100000);

                for (int i = 0; i < 100000; ++i)

                {

                    regex_match(L"http://w-1.w-2.w-3.streamlet.org/", r);

                }

                PERFORMANCE_TEST_END(StdRegExMatch100000);

            }

            SECTION_END();

             

            SECTION_BEGIN(xlRegExpMatch100000);

            {

                RegExp r;

                r.Parse(L"http://([a-zA-Z0-9\\-]+.)+[a-zA-Z]+/");

                PERFORMANCE_TEST_BEGIN(xlRegExpMatch100000);

                for (int i = 0; i < 100000; ++i)

                {

                    r.Match(L"http://w-1.w-2.w-3.streamlet.org/");

                }

                PERFORMANCE_TEST_END(xlRegExpMatch100000);

            }

            SECTION_END();

             

            前兩則是分別使用std::wregex和xl::RegExp解析"http://([a-zA-Z0-9\\-]+.)+[a-zA-Z]+/"十萬次,后兩則是拿來匹配http://w-1.w-2.w-3.streamlet.org/十萬次。

            結果如下:

            image

            匹配速度差很多,解析速度差不多。

            考慮到在解析“?”“+”“*”的時候,引入了很多ε邊,于是對那部分做點優化,去除不必要的ε邊和節點構造,然后再測試:

            image

            可以看到有所提高,但是解析速度還是跟std:wregex的差很多,匹配速度有明顯領先。目前只解析到ε邊、-NFA,如果再做狀態機轉化,雖然會提高匹配速度,可是解析速度會進一步下降。因此,一開始就要考慮使用一種更高效的狀態機存儲方法。

            這兩天著涼生病了,好難受啊……

            posted @ 2012-06-13 23:00 溪流 閱讀(536) | 評論 (0)編輯 收藏
                 摘要: 引言 根據預告,這篇我們對“?”“+”“*”進行處理,實現對重復的支持。“x?”匹配0個或1個“x”,“x+”匹配1到任意個“x”,“x*”匹配0到任意個“x”。   有了重復,就有貪婪模式和非貪婪模式。在貪婪模式下,“x+”匹配“xxxyyy”中的“xxx”;在非貪婪模式下,“x+”匹配“xxxyyy”中的第一個“x”。為了區別兩種模式,按照通常的語法,我們在重復控制符號后面加一個“?...  閱讀全文
            posted @ 2012-06-08 23:35 溪流 閱讀(1900) | 評論 (2)編輯 收藏
                 摘要: 引言 這篇我們要實現的是中括號表達式。   一個中括號里寫上任意數目的字符,表示匹配這些字符中的任何一個。比如“[abc]”匹配a或b或c。中括號里除了單個字符,也可以寫字符區間,比如“[a-c]”就表示從a到c的所有字符,這里“a到c”是指內碼連續的一系列字符,包含首尾的a和c。綜合起來說,中括號里面可以放任意個字符或者字符區間,匹配所填字符或字符區間內的任意一個字符。比如“[acd-...  閱讀全文
            posted @ 2012-06-04 22:19 溪流 閱讀(2138) | 評論 (0)編輯 收藏
            僅列出標題
            共18頁: First 2 3 4 5 6 7 8 9 10 Last 
            国内精品人妻无码久久久影院导航 | 香蕉久久永久视频| 中文字幕无码久久人妻| 亚洲精品乱码久久久久久蜜桃不卡 | 亚洲国产精品无码久久| 久久国产精品无码一区二区三区| 嫩草影院久久国产精品| 亚洲午夜久久久| 久久久久久狠狠丁香| 亚洲日本久久久午夜精品| 精品精品国产自在久久高清| 午夜精品久久久内射近拍高清| 久久婷婷激情综合色综合俺也去| 久久久久香蕉视频| 久久国产高清字幕中文| 久久综合狠狠综合久久综合88 | 久久99国产一区二区三区| 亚洲人成伊人成综合网久久久| 国产精久久一区二区三区| 一本色道久久HEZYO无码| 久久男人中文字幕资源站| 色综合久久天天综合| 97久久精品人妻人人搡人人玩| 国内精品伊人久久久影院| 日产久久强奸免费的看| 伊人色综合久久| 国产叼嘿久久精品久久| 99久久中文字幕| 99久久婷婷国产综合亚洲| 国内精品久久人妻互换| 日韩精品久久久久久久电影蜜臀 | 2021久久国自产拍精品| 亚洲AV无码久久精品色欲| 久久精品国产99久久久古代| 色狠狠久久综合网| 欧美成人免费观看久久| 久久成人小视频| 亚洲人成网亚洲欧洲无码久久| 2021久久精品免费观看| 影音先锋女人AV鲁色资源网久久| 久久99国产精品久久99小说|