• <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  評(píng)論-947  文章-0  trackbacks-0
             
                 摘要: 引言   之前也做過(guò)一些含內(nèi)嵌IE控件的東西,只是一直用MFC/ATL等框架,對(duì)于里面的原理其實(shí)一知半解,只有脫離它們寫(xiě)一遍,才算能真正懂。前不久在寫(xiě)一個(gè)SkyDriveClient的時(shí)候正好有一個(gè)需求,就練習(xí)了一下。技術(shù)含量沒(méi)有,在此記錄一筆,供后來(lái)人入門(mén),供前輩們批評(píng)。   本文中,行文以流水帳、貼代碼方式為主,同時(shí)為了不帶來(lái)干擾,代碼將盡量以不帶或少帶封裝的方式書(shū)寫(xiě)。目...  閱讀全文
            posted @ 2012-09-01 01:04 溪流 閱讀(7372) | 評(píng)論 (19)編輯 收藏

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

             

            微軟拼音輸入法的新體驗(yàn)?zāi)J剑鋵?shí)是微軟拼音一直以來(lái)的主要模式。筆者從1.5版開(kāi)始接觸微軟拼音以來(lái)就一直是這種模式,主要特點(diǎn)就是長(zhǎng)句輸入、二次確認(rèn),在第一次確認(rèn)的時(shí)候,文字就進(jìn)入仿佛實(shí)際輸入?yún)^(qū)域,但是文字下面有虛線,此時(shí)我們可以用光標(biāo)鍵左右移動(dòng),就像下圖顯示的一樣:

            而在輸入拼音的時(shí)候,我們其實(shí)無(wú)需開(kāi)啟候選詞窗口,也不用看屏幕:

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

             

            習(xí)慣于詞組輸入的同學(xué)可能喜歡時(shí)刻盯著屏幕出現(xiàn)的候選詞,一旦有錯(cuò)立刻糾正選擇。而長(zhǎng)句輸入則不必這樣,輸入整個(gè)句子,讓輸入法在整句的語(yǔ)境中替你選詞,命中率會(huì)高很多,特別是在打長(zhǎng)篇文章的時(shí)候,非常有用。

             

            很多時(shí)候別人在看我輸入的時(shí)候,發(fā)現(xiàn)屏幕上有錯(cuò)別字,會(huì)忍不住提醒我錯(cuò)了,但是當(dāng)我最后確認(rèn)的時(shí)候,往往又對(duì)了,會(huì)顯得有一點(diǎn)點(diǎn)疑惑,但是通常不說(shuō)。有趣的是,我在打別人名字的時(shí)候,他們發(fā)現(xiàn)一開(kāi)始的錯(cuò)別字,也會(huì)忍不住提醒我錯(cuò)了,并且對(duì)輸入法把某人的名字弄成另外一個(gè)字非常感興趣,有時(shí)會(huì)以此"嘲笑"那個(gè)人。然后當(dāng)我最后回來(lái)選詞的時(shí)候,他們會(huì)"指責(zé)"干嘛一開(kāi)始不選對(duì)的字……我已經(jīng)習(xí)慣了。但是整句輸入帶來(lái)的便捷之處,大部分人是沒(méi)法認(rèn)識(shí)到的。所以我今天在這里花很大的篇幅介紹一下。

             

            遺憾的是,微軟拼音1.5、2.0、3.0都沒(méi)人叫好。到Office2003的時(shí)候,因?yàn)?新體驗(yàn)"模式的出現(xiàn),使得一部分人叫好,但那部分人其實(shí)還是把它當(dāng)作詞組輸入法來(lái)用的。到Office2010出來(lái)的時(shí)候,又有一部分人叫好,實(shí)際上很大一部分人是為"簡(jiǎn)捷"模式叫好。到現(xiàn)在Win8成了簡(jiǎn)體中文語(yǔ)言下默認(rèn)輸入法,即便有強(qiáng)推的味道,但好多人還是叫好,而新體驗(yàn)?zāi)J降南В瑓s很少有人問(wèn)津。

             

            下面正式來(lái)看標(biāo)題中提到的問(wèn)題。Win8安裝完畢后簡(jiǎn)體中文下只有一個(gè)微軟拼音簡(jiǎn)捷,新體驗(yàn)?zāi)J讲灰?jiàn)了!!!

             

             

            有需要的同學(xué),請(qǐng)跟隨筆者,一步一步找回新體驗(yàn)?zāi)J健?

             

            1、打開(kāi)開(kāi)始屏幕,在英文狀態(tài)下輸入regedit,然后回車(chē),打開(kāi)注冊(cè)表編輯器。(遇到UAC提醒,請(qǐng)選擇"是")

            2、在左側(cè)展開(kāi)目錄樹(shù),一直到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\CTF\TIP\{81d4e9c9-1d3b-41bc-9e6c-4b40bf79e35e}:

             

             

            微軟對(duì)這一項(xiàng)做了特殊的權(quán)限保護(hù),它的權(quán)限和相鄰的那幾個(gè)不一樣,我們要取得寫(xiě)權(quán)限。

             

            3、右鍵單擊它、選擇權(quán)限,打開(kāi)如下圖的窗口:

             

             

            4、單擊"高級(jí)",再打開(kāi)一個(gè)窗口:

             

             

            5、在所有者的右邊點(diǎn)擊"更改",輸入"everyone"或者當(dāng)前登錄用戶名,按"確定",并選中"替換子容器和對(duì)象的所有者",然后按應(yīng)用。(不要關(guān)閉這個(gè)窗口,等下我們還要改回來(lái)。)

             

             

            6、然后點(diǎn)擊左下方的啟用繼承(按了后該按鈕變?yōu)榻美^承),并選中"使用可從此對(duì)象繼承的權(quán)限項(xiàng)目替換所有子對(duì)象的權(quán)限項(xiàng)目"。最后按"應(yīng)用",遇到提示選擇"是"。

             

             

            現(xiàn)在,這個(gè)窗口變成這個(gè)樣子了:

             

             

            保留這個(gè)窗口,我們進(jìn)行下一步。

             

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

             

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

             

             

            直到看到下圖的提示,點(diǎn)擊確定,關(guān)閉命令提示符窗口。

             

             

            9、回到剛才的高級(jí)安全設(shè)置窗口,點(diǎn)擊左下方的"禁用繼承"按鈕,這時(shí)出現(xiàn)下圖提示:

             

             

            選擇第二項(xiàng),"從此對(duì)象中刪除所有以繼承的權(quán)限":

             

             

            并選中"使用可從此對(duì)象繼承的權(quán)限項(xiàng)目替換所有子對(duì)象的權(quán)限項(xiàng)目",按"應(yīng)用",遇到提示選擇"是"。

             

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

             

             

            至此,我們將注冊(cè)表權(quán)限恢復(fù)如初了。

             

            打開(kāi)輸入法管理界面:

             

             

            我們可以看到多出來(lái)的"Microsoft Pinyin NewExperience"了,它就是我們要找的新體驗(yàn)?zāi)J剑?

             

            悲劇的是,貌似新體驗(yàn)?zāi)J皆贛etro界面下有問(wèn)題,每次確認(rèn)輸入,光標(biāo)都會(huì)回到最前面(注:確認(rèn)這是當(dāng)時(shí)新浪微博Win8客戶端的Bug,不是輸入法的問(wèn)題,新浪微博貌似已經(jīng)修正此問(wèn)題)。也許是因?yàn)橛羞@些Bug,微軟才隱藏它的吧。不過(guò),桌面模式下使用起來(lái)未發(fā)現(xiàn)任何問(wèn)題哦。

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

            因?yàn)榻酉氯ヒ鰞?yōu)化工作,在此之前,先做下簡(jiǎn)單的性能測(cè)試。

            比較的對(duì)象是std::regex,暫時(shí)只比較兩項(xiàng):

            1、解析正則表達(dá)式的速度

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

            測(cè)試代碼如下: 

            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]+/"十萬(wàn)次,后兩則是拿來(lái)匹配http://w-1.w-2.w-3.streamlet.org/十萬(wàn)次。

            結(jié)果如下:

            image

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

            考慮到在解析“?”“+”“*”的時(shí)候,引入了很多ε邊,于是對(duì)那部分做點(diǎn)優(yōu)化,去除不必要的ε邊和節(jié)點(diǎn)構(gòu)造,然后再測(cè)試:

            image

            可以看到有所提高,但是解析速度還是跟std:wregex的差很多,匹配速度有明顯領(lǐng)先。目前只解析到ε邊、-NFA,如果再做狀態(tài)機(jī)轉(zhuǎn)化,雖然會(huì)提高匹配速度,可是解析速度會(huì)進(jìn)一步下降。因此,一開(kāi)始就要考慮使用一種更高效的狀態(tài)機(jī)存儲(chǔ)方法。

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

            posted @ 2012-06-13 23:00 溪流 閱讀(531) | 評(píng)論 (0)編輯 收藏
                 摘要: 引言 根據(jù)預(yù)告,這篇我們對(duì)“?”“+”“*”進(jìn)行處理,實(shí)現(xiàn)對(duì)重復(fù)的支持。“x?”匹配0個(gè)或1個(gè)“x”,“x+”匹配1到任意個(gè)“x”,“x*”匹配0到任意個(gè)“x”。   有了重復(fù),就有貪婪模式和非貪婪模式。在貪婪模式下,“x+”匹配“xxxyyy”中的“xxx”;在非貪婪模式下,“x+”匹配“xxxyyy”中的第一個(gè)“x”。為了區(qū)別兩種模式,按照通常的語(yǔ)法,我們?cè)谥貜?fù)控制符號(hào)后面加一個(gè)“?...  閱讀全文
            posted @ 2012-06-08 23:35 溪流 閱讀(1894) | 評(píng)論 (2)編輯 收藏
                 摘要: 引言 這篇我們要實(shí)現(xiàn)的是中括號(hào)表達(dá)式。   一個(gè)中括號(hào)里寫(xiě)上任意數(shù)目的字符,表示匹配這些字符中的任何一個(gè)。比如“[abc]”匹配a或b或c。中括號(hào)里除了單個(gè)字符,也可以寫(xiě)字符區(qū)間,比如“[a-c]”就表示從a到c的所有字符,這里“a到c”是指內(nèi)碼連續(xù)的一系列字符,包含首尾的a和c。綜合起來(lái)說(shuō),中括號(hào)里面可以放任意個(gè)字符或者字符區(qū)間,匹配所填字符或字符區(qū)間內(nèi)的任意一個(gè)字符。比如“[acd-...  閱讀全文
            posted @ 2012-06-04 22:19 溪流 閱讀(2129) | 評(píng)論 (0)編輯 收藏
            僅列出標(biāo)題
            共18頁(yè): First 2 3 4 5 6 7 8 9 10 Last 
            欧美久久久久久午夜精品| 亚洲国产精品成人久久蜜臀 | 久久er国产精品免费观看8| 国产精品VIDEOSSEX久久发布| 精品久久久久久无码人妻蜜桃 | 中文精品久久久久国产网址| 久久夜色撩人精品国产| 久久综合狠狠综合久久综合88| 国产亚洲精品自在久久| 久久九九全国免费| 伊人久久大香线蕉综合影院首页| 国产精品久久久久9999| 久久笫一福利免费导航 | 久久无码av三级| 国产成人精品三上悠亚久久| 伊人久久精品线影院| 亚洲国产另类久久久精品| 精品视频久久久久| 99久久国产热无码精品免费久久久久 | 国产精品久久久久久久午夜片| 一级女性全黄久久生活片免费| 老司机国内精品久久久久| 蜜臀av性久久久久蜜臀aⅴ | 99久久精品久久久久久清纯| 日韩精品久久无码人妻中文字幕| 亚洲精品WWW久久久久久| 精品无码人妻久久久久久| 波多野结衣中文字幕久久| 国产V亚洲V天堂无码久久久| 少妇无套内谢久久久久| 亚洲精品97久久中文字幕无码| 久久精品女人天堂AV麻| 国产精品综合久久第一页| 狠狠色丁香久久综合婷婷| 久久久久一区二区三区| 蜜桃麻豆www久久| 国产精品美女久久久久AV福利 | 久久人人添人人爽添人人片牛牛| 日韩欧美亚洲综合久久影院Ds| 久久国产精品无码网站| 香蕉久久一区二区不卡无毒影院|