• <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>
            隨筆-91  評(píng)論-137  文章-0  trackbacks-0
                其實(shí)早就想寫(xiě)本文了,一直想緬懷一下過(guò)去的自己。說(shuō)是說(shuō)5年,其實(shí)在很久之前我已經(jīng)用按鍵游俠(一個(gè)用VBS作為引擎的東西)開(kāi)始寫(xiě)腳本了,說(shuō)起編程還需要感謝豬哥,是他將我?guī)肓司幊踢@一領(lǐng)域(可悲的是現(xiàn)在都找不到QQ列表中的哪位了,豬哥希望您看到這篇文章之后能聯(lián)系我)。5年前,我性質(zhì)匆匆的買來(lái)了一本VC6和VS2005(好像是這個(gè)版本)入門的書(shū)打算開(kāi)始學(xué)習(xí)C++(目前這兩本書(shū)在某個(gè)妹子手里)。然后開(kāi)始了漫長(zhǎng)的C++學(xué)習(xí)之旅,記得當(dāng)時(shí)我是一邊摸索著學(xué)習(xí)C++的語(yǔ)法,一邊在寫(xiě)按鍵娃娃(值得慶幸的是目前這貨居然還能搜的到),下面我們來(lái)看一段有意思的代碼。
             
                可以看到當(dāng)時(shí)的我是多么的稚嫩,居然把一個(gè)功能函數(shù)包裝成了一個(gè)類,居然還滿心歡喜的加上了一段注釋(很簡(jiǎn)單實(shí)用吧)-_-||

                接下來(lái)是兩個(gè)比較奇怪的函數(shù)
             
                看里面的兩個(gè)變量m_hDebugWnd和m_hCodeWnd按照道理來(lái)說(shuō)這兩個(gè)變量應(yīng)該是全局變量才對(duì),為什么被套上了m的定義?(我也是進(jìn)了理客才知道m(xù)是member的縮寫(xiě)-_-||請(qǐng)不要噴我),可能當(dāng)時(shí)看到別人代碼里是這么寫(xiě)的于是我也就照葫蘆畫(huà)瓢了。還有很多個(gè)文件里就這么幾行代碼兩三個(gè)函數(shù)的,這里就不列舉出來(lái)了。

                然后是一個(gè)switch,先看代碼
             
                以我現(xiàn)在的風(fēng)格來(lái)看,這里肯定變成一個(gè)enum,否則這里一改調(diào)用方也需要跟著改定義(可能當(dāng)時(shí)考慮到是給VB用的,所以就沒(méi)那么做了吧:))。
                寫(xiě)著寫(xiě)著就寫(xiě)到了圖像查找的模塊,為了有效的實(shí)現(xiàn)一個(gè)查找算法我買來(lái)了一本
            圖片 
                但是可悲的是,我至今都還停留在入門的階段,我也只是把里面模板匹配的部分看了一遍。直到幾個(gè)月前,BOSS提出需求說(shuō)是要做名片之類東西的矩形校正,我才完完整整的把這本書(shū)又看了一遍,雖然最后還是夭折了-_-||
                與此同時(shí),看到網(wǎng)上說(shuō)數(shù)據(jù)結(jié)構(gòu)很重要,于是我也買了一本
            圖片
                但對(duì)于一個(gè)完全沒(méi)有系統(tǒng)的學(xué)習(xí)過(guò)編程的我來(lái)說(shuō),買的時(shí)候都沒(méi)有看清它里面講的是什么語(yǔ)言的,買回來(lái)才發(fā)現(xiàn)這個(gè)是Pascal版本的,當(dāng)時(shí)就崩潰了。。。(雖然之前有用過(guò)Delphi,但都沒(méi)用它寫(xiě)過(guò)過(guò)千行的代碼,然后就被我拋棄了)。
                當(dāng)時(shí)為了讓模擬鍵盤(pán)鼠標(biāo)那些能過(guò)NP(NProtect當(dāng)時(shí)是個(gè)很牛逼的東西),我甚至還自己動(dòng)手寫(xiě)了個(gè)驅(qū)動(dòng),當(dāng)時(shí)對(duì)我來(lái)說(shuō)絕對(duì)是個(gè)非常大的挑戰(zhàn)。當(dāng)時(shí)看的資料也不知道已經(jīng)被我丟到哪里去了,說(shuō)實(shí)話其實(shí)驅(qū)動(dòng)寫(xiě)起來(lái)也沒(méi)什么復(fù)雜的,按照它的API和框架來(lái)寫(xiě)就是了,不過(guò)當(dāng)時(shí)比較蛋疼的是調(diào)試的時(shí)候經(jīng)常藍(lán)屏,最后我甚至搞了臺(tái)虛擬機(jī)來(lái)專門調(diào)試,奇怪的是當(dāng)時(shí)的那臺(tái)破機(jī)器跑虛擬機(jī)居然不卡。

                這里有兩個(gè)函數(shù)非常熟悉,是從ring3切換到ring0和切回來(lái)的,在之后寫(xiě)OS的代碼里也有類似的代碼。其中有一些代碼現(xiàn)在不去翻資料已經(jīng)看不懂了:)



                這里有一些有關(guān)于在驅(qū)動(dòng)中讀寫(xiě)內(nèi)存和隱藏進(jìn)程的代碼,隱藏進(jìn)程其實(shí)很簡(jiǎn)單,只要把這個(gè)進(jìn)程從鏈表中拿掉就可以了,而讀寫(xiě)內(nèi)存則需要切到Ring0(因?yàn)橛蠳P嘛)。
                最后為了支持自定義窗口,我還為他做了一個(gè)窗口編輯器

                很炫吧,呵呵:)下面我們來(lái)看一下它的幫助文檔,做的還是很不錯(cuò)的嘛

                其實(shí)這個(gè)是按鍵娃娃的第一個(gè)版本。

                原來(lái)它有這么多模塊

                當(dāng)然我還為按鍵娃娃做了一些網(wǎng)站啊之類的東西,沒(méi)記錯(cuò)的話,按鍵娃娃應(yīng)該是在08年的時(shí)候做的,當(dāng)時(shí)開(kāi)奧運(yùn)會(huì),我甚至還為他配上了一堆福娃的圖標(biāo)。之后我記得應(yīng)該是和按鍵游俠的作者商量好了,一起來(lái)開(kāi)發(fā)自己的引擎,但比較糾結(jié)的是自始至終也只有我一個(gè)人在做(據(jù)說(shuō)他好像帶小孩去了),人家畢竟不是專業(yè)的程序員。應(yīng)此就有了QLanguage的第一個(gè)版本,當(dāng)時(shí)我給他取名叫ES(Easy to Study) 語(yǔ)言。對(duì)于一個(gè)沒(méi)有學(xué)習(xí)過(guò)編譯原理的我來(lái)說(shuō),一切都是手寫(xiě)的,而且當(dāng)時(shí)還把詞法分析和語(yǔ)法分析都并在了一起,代碼真是一團(tuán)糟。我沒(méi)有記錯(cuò)的話,但是應(yīng)該是我讀南湖3年級(jí)和大一的時(shí)候,說(shuō)到考大學(xué),那真是簡(jiǎn)單加輕松啊,當(dāng)時(shí)就以211分進(jìn)了科技學(xué)院(名字很霸氣吧~還有不要鄙視我,三校生高考滿分是300分,我還是我們班最高的!)。
                之后便開(kāi)始了大學(xué)生活,當(dāng)然大學(xué)生活是相當(dāng)無(wú)聊的,可悲的是大學(xué)三年我只去過(guò)一次圖書(shū)館,而且那次還是去輔導(dǎo)別人的。其他時(shí)間都在墮落的打著游戲(當(dāng)然偶爾無(wú)聊的時(shí)候也會(huì)寫(xiě)寫(xiě)代碼,前提是寢室里非常安靜的情況下,估計(jì)也只有沒(méi)人的時(shí)候),其實(shí)在這段時(shí)間里我多數(shù)時(shí)間是在周末回到家才去寫(xiě)QLanguage的,從大一到大二我一共做了兩個(gè)版本的QLanguage,第一個(gè)完全是手寫(xiě)的,手寫(xiě)的Lexer和手寫(xiě)的Parser。在這個(gè)版本做了一半的時(shí)候我看到了
            vczh的博客從他的博客里我知道了有《編譯原理》這門課,于是我就買來(lái)了下面這本書(shū)
            圖片
                通過(guò)讀了這本書(shū)之后,便有了第二個(gè)版本的QLanguage,當(dāng)時(shí)我瞬間就覺(jué)得代碼寫(xiě)的更結(jié)構(gòu)化了,不過(guò)這類書(shū)更偏理論,里面有一些算法但很少會(huì)有實(shí)現(xiàn)的代碼,于是我就在網(wǎng)上各種找代碼來(lái)看(其實(shí)這本書(shū)是我目前為止翻的次數(shù)最多的)。 話不多說(shuō),讓我們來(lái)看看當(dāng)時(shí)的代碼

                當(dāng)時(shí)的編碼風(fēng)格簡(jiǎn)直糟透了隨意的有空格沒(méi)空格,加括號(hào)和不加括號(hào)之類的這里就不展開(kāi)說(shuō)了。就在我完成之際,我又迎來(lái)了人生的一個(gè)轉(zhuǎn)折點(diǎn)。大三了要實(shí)習(xí)了,當(dāng)時(shí)那是瘋狂的投簡(jiǎn)歷啊,看到一家有興趣的給他投簡(jiǎn)歷,有幸的是理客是第一家聯(lián)系我的,也就是我待到現(xiàn)在的公司(前三個(gè)月去過(guò)另外一家公司,反正背后的老板是同一個(gè),只是那邊人手不夠我去幫忙的罷了),而這家公司也是離我家最近的。當(dāng)時(shí)我?guī)е患埡?jiǎn)歷就這么過(guò)去了,進(jìn)了理客之后我才知道什么是編碼規(guī)范,易讀的代碼應(yīng)該是什么樣的,雖然現(xiàn)在QLanguage的代碼里還是有一些沒(méi)有按照規(guī)范來(lái)寫(xiě)的,不過(guò)我覺(jué)得看起來(lái)應(yīng)該還不算糟糕。其實(shí)在大三那年還有段小插曲,當(dāng)時(shí)看上個(gè)妹子,糾結(jié)了許久,最后毅然決定不再聯(lián)系,之后我便下定決心要把QLanguage做好,這才有了一個(gè)穩(wěn)定的功能豐富的QLanguage的第二個(gè)版本。
                記得剛進(jìn)理客的時(shí)候還是個(gè)毛頭小子,根本不知天高地厚,總覺(jué)得別人的代碼寫(xiě)的沒(méi)我的好。但隨著時(shí)間的慢慢推移,我終于實(shí)習(xí)期滿了轉(zhuǎn)正了。當(dāng)初的高傲也不復(fù)存在了。在理客我做過(guò)PHP、Office Plugin、iOS、Android和Researcher,其中最復(fù)雜的莫過(guò)于圖像校正,說(shuō)是拍出來(lái)的名片圍成的四邊形要將他校正為一個(gè)正常的矩形,里面的難點(diǎn)在于要找到這四條邊。題外話,在理客的日子我覺(jué)得很開(kāi)心,不光因?yàn)槲艺J(rèn)識(shí)了新的妹子,更有一幫基友可以陪我扯淡,可以扯游戲也可以扯編程還可以扯東扯西的扯到宇宙去-_-||不過(guò)我覺(jué)得理客更像是一所學(xué)校(我剛進(jìn)去的時(shí)候就是做教育軟件的,可能老板的理念就是從這起的)。而現(xiàn)在看著一個(gè)一個(gè)辭職的辭職,被辭職的被辭職,心里難免會(huì)有一種淡淡的憂傷,不過(guò)我覺(jué)得最對(duì)不起的還是某個(gè)同事,我說(shuō)我要過(guò)來(lái),結(jié)果老板把他給開(kāi)掉了。
                啰啰嗦嗦的終于把本文寫(xiě)完了,其實(shí)我看過(guò)的書(shū)還有很多,這里我簡(jiǎn)單的把他羅列出來(lái)

            圖片

            圖片

            圖片
                還有沒(méi)空看的
            圖片
                雖然這些書(shū)并不是最經(jīng)典的,但當(dāng)你把它們都看完的時(shí)候,工作也不成問(wèn)題了。
                最后我發(fā)現(xiàn),要找以前的代碼真不是一件容易的事情,應(yīng)此我要做個(gè)文件和目錄的管理工具,具體的實(shí)現(xiàn)方案正在起草。可能本文中間會(huì)有些遺漏的地方,等以后想起來(lái)了再補(bǔ)上。其實(shí)這條路是沒(méi)有盡頭的,人類為了簡(jiǎn)化各種工作而發(fā)明了電腦和編程語(yǔ)言,應(yīng)此本著這個(gè)宗旨我會(huì)開(kāi)發(fā)更多簡(jiǎn)單實(shí)用的工具來(lái)簡(jiǎn)化工作和生活。

            posted on 2013-06-17 23:22 lwch 閱讀(2217) 評(píng)論(7)  編輯 收藏 引用 所屬分類: 其他

            評(píng)論:
            # re: 5年編程之旅 2013-06-18 02:24 | zapline
            哪兩個(gè)函數(shù)不是從ring3切換到ring0和切回來(lái)的
            是關(guān)閉是/開(kāi)啟寫(xiě)保護(hù)
              回復(fù)  更多評(píng)論
              
            # re: 5年編程之旅 2013-06-18 08:56 | lwch
            @zapline
            一個(gè)意思的啦~  回復(fù)  更多評(píng)論
              
            # re: 5年編程之旅 2013-06-18 09:28 | Richard Wei
            還很年輕,加油  回復(fù)  更多評(píng)論
              
            # re: 5年編程之旅[未登錄](méi) 2013-06-18 10:20 | jains
            這精神我很敬仰, 我是散修, 目前還是入門, 我已經(jīng)入了差不多4年門.
            為自己汗顏.  回復(fù)  更多評(píng)論
              
            # re: 5年編程之旅 2013-06-18 10:28 | zapline
            @lwch
            你這篇文章里面很多錯(cuò)誤
            例如 “而讀寫(xiě)內(nèi)存則需要切到Ring0(因?yàn)橛蠳P嘛)。”
            我只能認(rèn)為你過(guò)NP是用的別人的代碼

            要保存好自己的代碼的話,在github建個(gè)庫(kù)吧  回復(fù)  更多評(píng)論
              
            # re: 5年編程之旅 2013-06-18 11:04 | lwch
            @zapline
            當(dāng)時(shí)確實(shí)用的是別人的代碼,幾年前的東西記不清了,不要這么較真。  回復(fù)  更多評(píng)論
              
            # re: 5年編程之旅 2014-08-19 13:35 | 萬(wàn)馬奔騰
            感謝LWCH的娃娃,當(dāng)年陪伴一起度過(guò)了多少游戲時(shí)間.  回復(fù)  更多評(píng)論
              
            亚洲国产一成人久久精品| 日本久久久久久久久久| 亚洲国产精品成人AV无码久久综合影院 | 亚洲国产精品一区二区三区久久| 99热成人精品热久久669| 无码人妻久久久一区二区三区| 欧美亚洲国产精品久久| 国产精品久久久久免费a∨| 久久久噜噜噜久久中文字幕色伊伊 | 国产99精品久久| 97久久超碰成人精品网站| 久久被窝电影亚洲爽爽爽| 日本免费一区二区久久人人澡| 久久久久久亚洲精品成人| 亚洲综合伊人久久综合| 69SEX久久精品国产麻豆| 久久精品国产秦先生| 久久精品国产99国产精品| 色综合久久天天综线观看| 久久婷婷五月综合97色直播| 久久AV高潮AV无码AV| 大伊人青草狠狠久久| 久久久噜噜噜久久| 国产成人久久精品一区二区三区 | 久久精品这里热有精品| 国内精品久久久久久久涩爱| 久久综合鬼色88久久精品综合自在自线噜噜 | 91精品国产高清久久久久久91| 久久影视综合亚洲| 精品久久久噜噜噜久久久| 99久久精品国产一区二区三区 | 久久久久久久波多野结衣高潮 | 欧美久久一级内射wwwwww.| 中文字幕人妻色偷偷久久| 婷婷综合久久狠狠色99h| 国产精品久久新婚兰兰| 久久99国产精品二区不卡| 中文字幕无码久久久| 国产精品成人久久久久久久| MM131亚洲国产美女久久| 久久亚洲国产精品五月天婷|