青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆-341  評論-2670  文章-0  trackbacks-0
    今天先放圖哈。智能完成已經(jīng)開始做試驗了不過距離能看還差很遠,所以今天先繼續(xù)談一下著色的事情。

    這就是我暫時實現(xiàn)的所有功能了。首先著色算法可以外掛,其次左邊那個邊欄(大小和繪制均可以訂制)操作他的時候會發(fā)生什么事情也是外掛的。著色器與“斷點變紅”是分離在兩個不同的插件接口里面的,原因上一篇文章說過了。你們可能還會注意到那個灰色的框框。那個框框的確是會被編輯器當(dāng)成一個整體來對待,不過我絕對還沒有實現(xiàn)折疊。因為在我的設(shè)計里面,如何進行折疊應(yīng)該是插件的事情,控件本身只要處理好怎么編輯和顯示就行了。還有一個比較難發(fā)現(xiàn)的就是,我這玩意兒也是支持輸入法的,輸入法的窗口會跟隨光標移動……

    在開發(fā)這個東西的時候我嘗試了兩種新方法。第一種是MVC。MVC開發(fā)高亮還真是容易啊,不僅文字緩存部分(C#也是可以精確控制內(nèi)存的哈)可以獨立出來,連編輯操作(各種按鍵鼠標組合)其實也可以不做在控件里面。這樣有什么好處呢,當(dāng)然是可以進行高強度的單元測試了哈。第二種就是GUI自動化,光對類進行單元測試還是不夠的,Visual Studio 2010為.net單元測試工程提供了一個Coded UI Test框架可以給我啟動一個獨立的外部程序(MFC寫的也行,WinForm寫的也行,WPF寫的也行,網(wǎng)頁都行)然后操作上面的各種控件最后拿到控件里面的信息。不過可惜的是我的文本框并沒有按照Windows的UI Automation標準來實現(xiàn)(從而讓盲人也能使用這個控件),因此只能進行鍵盤和鼠標的操作,至于我繪制的東西是什么則需要其他方法。C#跨進程怎么做最方便呢?當(dāng)然是Windows Communication Foundation了哈。為了寫足夠的單元測試是要不惜一切D。不過顯然WCF的服務(wù)不可能做在控件里,因此我的solution下面暫時就有控件工程、測試工程和被測試的“獨立程序”工程了。

    有了GUI自動化測試,我在進行重構(gòu)的時候,就可以放心的修改代碼,然后執(zhí)行測試程序,去外面喝杯茶。過個幾分鐘測試工程就會跟我報告一共掛掉了多少個case,只要修好就行了。這種方法杜絕了絕大多數(shù)由粗心引起的bug。如果你在公司使用類似技術(shù)來對付你的代碼的話可以有效減少工作時間,從而讓公司可以榨取更多價值。

    操作的組合還是比較麻煩的。為了全套支持,我特地操作了一下Visual Studio 2010的文本框,然后對一些我看不順眼的行為經(jīng)過修改之后,現(xiàn)在已經(jīng)可以實現(xiàn){LEFT, RIGHT, UP, DOWN, HOME, END, PAGEUP, PAGEDOWN, ENTER, BACKSPACE, DELETE}×{null, CONTROL, SHIFT, CONTROL+SHIFT}共44種操作方法。加上鼠標,突破半百。這么復(fù)雜的東西,如果沒有足夠的單元測試,也沒有足夠的GUI自動化測試的話,隨便改個什么都很有可能發(fā)生問題的。所以開發(fā)這類程序的時候要十分小心,一定要寫單元測試。

    至于著色應(yīng)該怎么測試呢?只要有了WCF,就十分簡單了。測試程序發(fā)送兩個坐標,WCF服務(wù)返回坐標之間所有字符的顏色代號就行了。代號是可以在測試程序跟被測程序之間約定的,所以這種方法就讓測試變得十分簡單了。

    開發(fā)這一部分一共花掉我大約四天時間(假設(shè)不用上班每天能寫8個小時,累計出來的)。當(dāng)然平時要上班所以實際花費是要多一倍不止的。其實當(dāng)我在紙上畫出了上圖C#著色器的狀態(tài)機之后,也沒想到實現(xiàn)出來速度這么猛的。雖然著色器使用狀態(tài)機來實現(xiàn)已經(jīng)是速度最快的方法了(經(jīng)過大學(xué)4年寫編譯器的經(jīng)驗……不過我后來用C++做出了一個能根據(jù)正則表達式在內(nèi)存中產(chǎn)生詞法分析器的,比手寫的更快),不過還是要感嘆一下.net到了4.0還是比起當(dāng)年的2.0要進步無窮多倍的哈。虛擬機可以在執(zhí)行的時候才開始產(chǎn)生并優(yōu)化x86代碼,可以讓程序越跑越快(非騙人,編譯原理小白請自行學(xué)習(xí)),這還是靜態(tài)編譯其所不能達到的。之前還看過channel9上面的視頻講微軟某個研究院在做一個全新的javascript引擎(看起來好像沒有加進IE9beta),就是用了動態(tài)的兩階段profile+optimize+codegen的方法,通過為瓶頸代碼使用激進優(yōu)化方法,從而讓總體的運行和編譯時間的總和降到最低。生成X86什么的還是非常麻煩的,總之我已經(jīng)被機器碼囧了半年,暫時不想碰JIT了……當(dāng)然這是遲早要再碰一次的。

    寫到這里就先碎覺了,下一篇開始說之前在糾結(jié)的過程中產(chǎn)生的幾個智能完成的方案。遲早都要把它給做出來的。
posted on 2010-09-16 10:32 陳梓瀚(vczh) 閱讀(10049) 評論(12)  編輯 收藏 引用 所屬分類: 開發(fā)自己的IDE

評論:
# re: 開發(fā)自己的IDE(二) 2010-09-16 16:34 | ccsdu2009
幫你頂頂 太冷清了  回復(fù)  更多評論
  
# re: 開發(fā)自己的IDE(二)[未登錄] 2010-09-16 17:45 | king
同樓上,勇氣可嘉。  回復(fù)  更多評論
  
# re: 開發(fā)自己的IDE(二) 2010-09-16 17:59 | 溪流
UI也可以單元測試啊,學(xué)習(xí)了  回復(fù)  更多評論
  
# re: 開發(fā)自己的IDE(二) 2010-09-16 18:04 | Sunshine Alike
看來C#越來越威武了~~  回復(fù)  更多評論
  
# re: 開發(fā)自己的IDE(二) 2010-09-16 19:38 | pengwang
加油,哪里像我整天陷在一坨一坨的business logic里,丫的根本不像Martin說的幫客戶解決問題也很有成就感,沮喪啊。  回復(fù)  更多評論
  
# re: 開發(fā)自己的IDE(二) 2010-09-16 19:48 | schindlerlee
強烈支持  回復(fù)  更多評論
  
# re: 開發(fā)自己的IDE(二) 2010-09-16 21:47 | megax
折疊不應(yīng)該由plugin來處理,否則會很痛苦的。編輯器本身應(yīng)該提供那些行不顯示的功能,并對scrollbar和caret的更新提供支持,然后才讓plugin去處理折疊。輸入法光標跟隨,那是輸入法本身提供的功能,有的輸入法沒有光標跟隨,比如微軟的日語輸入法,而且如果用sogou的輸入法的話,它有一個bug,在多語言切換之后,就無法跟隨了。正確的處理方法還是自己處理IME消息,然后移動窗口。如果不處理的話,那么你輸入一個句子的話,會對每一個漢字產(chǎn)生一個OnChar,效率較低。  回復(fù)  更多評論
  
# re: 開發(fā)自己的IDE(二) 2010-09-16 23:10 | 陳梓瀚(vczh)
@megax
我的編輯器有l(wèi)istener,可以讓插件監(jiān)聽和同步在編輯器上的發(fā)生的所有事情,所以可以放進插件,這個倒不用擔(dān)心,而且這么做還能讓你的單元測試更容易寫,單元測試運行得更快,所以不會有問題的哈。

不過因為我的插件是可以做成同時插入多個的(combinator),因此可以把折疊的功能獨立出來做成一個“服務(wù)”供其他跟語言相關(guān)的插件享用。個人認為這種做法最利于解耦以及測試。只要測試跟上了,開發(fā)的痛苦就會大大減少了。因為痛苦來源于debug,而不是寫代碼本身。

至于光標跟隨,我只響應(yīng)了一個IME消息,在需要的時候更新那個輸入框的位置。不過我沒有處理把一個句子不分割成很多Char的事情,因為這個才會受到實現(xiàn)的影響,而且你也只會在輸入注釋的時候用輸入法,所以也就不需要做了。  回復(fù)  更多評論
  
# re: 開發(fā)自己的IDE(二) 2010-09-16 23:12 | 陳梓瀚(vczh)
@pengwang
因為你解決的不是客戶的問題,而是經(jīng)理制造出來的問題哈。  回復(fù)  更多評論
  
# re: 開發(fā)自己的IDE(二) 2010-09-19 17:39 | 空明流轉(zhuǎn)
師祖威武。  回復(fù)  更多評論
  
# re: 開發(fā)自己的IDE(二) 2010-09-19 19:16 | luna
輸入法的窗口會跟隨光標移動……
把輸入法的光標跟隨去掉不就行了。  回復(fù)  更多評論
  
# re: 開發(fā)自己的IDE(二) 2010-09-19 23:06 | 陳梓瀚(vczh)
@luna
你可能理解錯我的意思了,我是自己寫代碼讓輸入法的窗口跟著光標移動了- -b  回復(fù)  更多評論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            最新国产乱人伦偷精品免费网站| 久久精品道一区二区三区| 亚洲精品一区二区三区樱花| 久久久夜夜夜| 最新日韩在线视频| 亚洲婷婷国产精品电影人久久| 国产精品初高中精品久久| 亚洲午夜视频在线| 久久久久国色av免费观看性色| 亚洲第一中文字幕| 欧美日韩日日夜夜| 午夜精品999| 欧美黑人在线播放| 亚洲一区不卡| 伊人成人开心激情综合网| 欧美成人按摩| 老司机67194精品线观看| 亚洲免费观看高清完整版在线观看熊 | 国产情侣一区| 久久综合精品国产一区二区三区| 亚洲乱码国产乱码精品精98午夜| 亚洲欧美中日韩| 在线视频成人| 国产精品久久久久77777| 久久激情五月婷婷| 亚洲最新视频在线| 久久久www成人免费毛片麻豆| 亚洲精品国产系列| 国产一区二区在线观看免费| 蜜乳av另类精品一区二区| 亚洲一线二线三线久久久| 欧美ab在线视频| 午夜久久久久| 亚洲精品在线视频| 国产在线拍偷自揄拍精品| 欧美精品免费播放| 久久精品视频亚洲| 亚洲先锋成人| 亚洲黄网站黄| 久色成人在线| 性久久久久久久久| 一区二区三区毛片| 有坂深雪在线一区| 国产一区二区久久久| 欧美日韩一区二区三区在线观看免| 一本一本a久久| 久久国内精品视频| 亚洲一区二区在线看| 亚洲国产小视频在线观看| 久久久久九九九九| 亚洲欧美国产毛片在线| 日韩午夜激情av| 亚洲成色www久久网站| 国产区二精品视| 国产精品高潮久久| 欧美人在线视频| 欧美福利视频| 免费不卡在线观看| 久久综合激情| 久久精品国产免费| 欧美一站二站| 亚洲欧美在线免费观看| 亚洲一区二区黄| 亚洲一区二区三区久久| 亚洲欧美日本日韩| 美女日韩欧美| 91久久久国产精品| 99成人在线| 国产麻豆午夜三级精品| 久久久久久久91| 久久婷婷一区| 亚洲一区日韩| 久久夜色精品国产| 欧美一区三区二区在线观看| 一区二区三区**美女毛片 | 狠狠色狠狠色综合| 国产麻豆一精品一av一免费| 欧美小视频在线| 国产精品青草综合久久久久99| 国产精品国产馆在线真实露脸| 欧美日韩免费一区二区三区| 国产精品av久久久久久麻豆网| 国产精品国产三级国产a| 国产精品高潮呻吟久久av无限| 欧美日韩一区二区三区在线视频| 欧美日韩在线免费| 国产精品a级| 国产亚洲第一区| 亚洲福利专区| 9色精品在线| 午夜免费电影一区在线观看| 久久精品国产清自在天天线| 毛片一区二区三区| 亚洲国产婷婷| 亚洲一区二区三区四区五区黄| 欧美影院午夜播放| 老牛嫩草一区二区三区日本| 欧美精品在线观看播放| 欧美日韩伦理在线| 国产欧美精品日韩精品| 在线高清一区| 9色精品在线| 久久精品一二三| 亚洲国产精品悠悠久久琪琪| 在线亚洲精品| 鲁鲁狠狠狠7777一区二区| 欧美日韩一区三区| 国产亚洲精品综合一区91| 亚洲精品乱码久久久久久蜜桃麻豆| 亚洲一区二区三区欧美| 久久午夜精品一区二区| 亚洲欧美一区二区三区久久| 六月婷婷一区| 国产精品久久久久久妇女6080| 精品69视频一区二区三区| 99在线精品视频| 久久一区二区三区超碰国产精品| 亚洲美女中文字幕| 久久精品av麻豆的观看方式| 欧美日韩免费在线视频| 激情久久五月| 午夜一区二区三区在线观看| 欧美高清视频在线观看| 亚洲影视中文字幕| 欧美黄色小视频| 一区二区三区无毛| 亚洲女爱视频在线| 亚洲国产美女精品久久久久∴| 香蕉成人久久| 国产精品高潮呻吟久久av黑人| 91久久综合| 久久久噜噜噜久久久| 亚洲无限av看| 欧美精品黄色| 亚洲国产网站| 玖玖玖国产精品| 欧美亚洲午夜视频在线观看| 欧美色中文字幕| 亚洲精品一区二区三区在线观看| 久久全国免费视频| 午夜亚洲性色视频| 国产精品每日更新在线播放网址| 日韩一级精品视频在线观看| 久久综合狠狠| 欧美呦呦网站| 国产视频精品xxxx| 欧美影片第一页| 亚洲专区免费| 国产精品久在线观看| 亚洲视频专区在线| 亚洲黄色影片| 亚洲综合社区| 午夜精品久久久久久久久| 亚洲欧洲午夜| 欧美精品二区三区四区免费看视频| 一区在线视频| 蜜臀av性久久久久蜜臀aⅴ| 欧美在线视屏| 国产一区二区日韩精品| 久久国产精品久久久久久电车| 亚洲视屏在线播放| 国产精品高潮呻吟| 亚洲女爱视频在线| 亚洲中字黄色| 国精品一区二区| 久久一二三国产| 猫咪成人在线观看| 亚洲精品视频在线| 亚洲毛片在线看| 欧美午夜精品理论片a级按摩| 在线视频亚洲欧美| 在线午夜精品| 国产视频在线观看一区二区三区| 亚洲欧美在线一区二区| 亚洲一区尤物| 国产欧美一区二区三区沐欲| 久久久久国产一区二区三区| 久久久久一区| 亚洲国产精品va在线看黑人动漫 | 久久久午夜视频| 久久精品国产亚洲aⅴ| 亚洲国产精品电影| 亚洲精品久久视频| 欧美日韩亚洲综合在线| 午夜免费日韩视频| 久久都是精品| 亚洲精选成人| 欧美不卡在线视频| 欧美日韩伦理在线免费| 亚洲小视频在线| 午夜激情一区| 亚洲日本欧美日韩高观看| 一本久久青青| 韩国成人精品a∨在线观看| 亚洲电影免费| 国产精品手机在线| 久久青青草原一区二区| 国产精品视频999| 久久综合九色综合欧美狠狠| 欧美欧美全黄|