• <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>

            2017年11月3日

            64位操作系統安裝 MySQL-python-1.2.3.win 失敗,提示 fatal error C1083: Cannot open include file: 'config-win.h',網上方案均不可行,實際上只需要直接下載 MySQL-python-1.2.3.win-amd64-py2.7.exe 安裝即可。下載地址請自行搜索。
            posted @ 2017-11-03 21:56 修一居士 閱讀(393) | 評論 (0)編輯 收藏

            2012年9月16日

            1、增加windows環境變量以下路徑
            D:\Python26;D:\Python26\Tools\Scripts;D:\Program Files\Sublime Text 2
            2、注銷并重新登錄,使用命令行敲入python可顯示出python的版本信息
            3、使用ctrl+b 如果仍然未出現編譯信息,要查看ctrl+·  是否有錯誤信息,將錯誤的插件remove掉
            posted @ 2012-09-16 22:03 修一居士 閱讀(2738) | 評論 (0)編輯 收藏

            2007年7月28日

                      一直以來都說ogre渲染效率很高,最近想研究一下3d,就下來ogre的代碼,看看有沒有可能改改就能做游戲,沒想到試了一個例子就被打擊了,SkeletalAnimation 中將#define NUM_JAIQUAS 50 設為渲染50 個角色模型,渲染就只剩下4幀了。
                     我的機器配置還是不錯的3.0的雙核intel  2G的內存 GF7600 gs 的顯卡。mmorpg中同屏100人以上是很平常的事情,4幀可真的是沒法玩。
            posted @ 2007-07-28 22:47 修一居士 閱讀(8840) | 評論 (20)編輯 收藏

            2007年7月25日

            1、父子二人經過五星級飯店門口,看到一輛十分豪華的進口轎車。兒子不屑地對他的父親說:「坐這種車的人,肚子里一定沒有學問!」父親則輕描淡寫地回答:「說這種話的人,口袋里一定沒有錢!」 

              (你對事情的看法,是不是也反映出你內心真正的態度?) 

            2、晚飯后,母親和女兒一塊兒洗碗盤,父親和兒子在客廳看電視。突然,廚房里傳來打破盤子的響聲,然后一片沉寂。是兒子望著他父親,說道:「一定是媽媽打破的。」「你怎么知道?」「她沒有罵人。」 

              (我們習慣以不同的標準來看人看己,以致往往是責人以嚴,待己以寬。) 

            3、有兩個臺灣觀光團到日本伊豆半島旅游,路況很壞,到處都是坑洞。其中一位導游連聲抱歉,說路面簡直像麻子一樣。而另一個導游卻詩意盎然地對游客說:諸位先生女士,我們現在走的這條道路,正是赫赫有名的伊豆迷人酒窩大道。」 

              (雖是同樣的情況,然而不同的意念,就會產生不同的態度。思想是何等奇妙的事,如何去想,決定權在你。) 

            4、同樣是小學三年級的學生,在作文中說他們將來的志愿是當小丑。中國的老師斥之為:「胸無大志,孺子不可教也!」外國的老師則會說:「愿你把歡笑帶給全世界!」 

              (身為長輩的我們,不但容易要求多于鼓勵,更狹窄的界定了成功的定義。) 

            5、在故宮博物院中,有一個太太不耐煩地對她先生說:「我說你為甚么走得這么慢。原來你老是停下來看這些東西。」 

              (有人只知道在人生的道路上狂奔,結果失去了觀看兩旁美麗花朵的機會。) 

            6、妻子正在廚房炒菜。丈夫在她旁邊一直嘮叨不停:慢些。小心!火太大了。趕快把魚翻過來。快鏟起來,油放太多了!把豆腐整平一下!「哎厎」妻子脫口而出,「我懂得怎樣炒菜。」「你當然懂,太太,」丈夫平靜地答道:「我只是要讓你知道,我在開車時,你在旁邊喋喋不休,我的感覺如何。」 

              (學會體諒他人并不困難,只要你愿意認真地站在對方的角度和立場看問題。) 

            7、理由充份:一輛載滿乘客的公共汽車沿著下坡路快速前進著,有一個人後面緊緊地追趕著這輛車子。一個乘客從車窗中伸出頭來對追車子的人說:“老兄!算啦,你追不上的!”“我必須追上它,”這人氣喘吁吁地說:“我是這輛車的司機!” 

              (有些人必須非常認真努力,因為不這樣的話,後果就十分悲慘了!然而也正因為必須全力以赴,潛在的本能和不為人知的特質終將充份展現出來。) 

            8、原來如此-甲:「新搬來的鄰居好可惡,昨天晚上三更半夜、夜深人靜之時跑來猛按我家的門鈴。」乙:「的確可惡!你有沒有馬上報警?」甲:「沒有。我當他們是瘋子,繼續吹我的小喇叭。」 

              (事出必有因,如果能先看到自己的不是,答案就會不一樣在你面對沖突和爭執時,先想一想是否心中有虧,或許很快就能釋懷了。) 

            9、誤會-某日,張三在山間小路開車,正當他悠哉地欣賞美麗風景時,突然迎面開來一輛貨車,而且滿囗黑牙的司機還搖下窗戶對他大罵一聲:“豬!”張三越想越納悶,也越想越氣,於是他也搖下車窗回頭大罵:“你才是豬!”才剛罵完,他便迎頭撞上一群過馬路的豬。 

              (不要錯誤的詮釋別人的好意,那只會讓自己吃虧,并且使別人受辱。在不明所以之前,先學會按捺情緒,耐心觀察,以免事後生發悔意。) 

            10、後生可畏-小男孩問爸爸:“是不是做父親的總比做兒子的知道得多?”爸爸回答:“當然啦!”小男孩問:“電燈是誰發明的?”爸爸:“是愛迪生。”小男孩又問:“那愛迪生的爸爸怎麼沒有發明電燈?” 

              (很奇怪,喜歡倚老賣老的人,特別容易栽跟斗。權威往往只是一個經不起考驗的空殼子,尤其在現今這個多元開放的時代。) 

            11、不必緊張-小明洗澡時不小心吞下一小塊肥皂,他的媽媽慌慌張張地打電話向家庭醫生求助。醫生說:“我現在還有幾個病人在,可能要半小時後才能趕過去。”小明媽媽說:“在你來之前,我該做甚麼?”醫生說:“給小明喝一杯白開水,然後用力跳一跳,你就可以讓小明用嘴巴吹泡泡消磨時間了。” 

              (take it easy,放輕松放輕松些,生活何必太緊張?事情既然已經發生了,何不坦然自在的面對。擔心不如寬心,窮緊張不如窮開心。) 

            12、鑰匙-一把堅實的大鎖掛在大門上,一根鐵桿費了九牛二虎之力,還是無法將它撬開。鑰匙來了,他瘦小的身子鉆進鎖孔,只輕輕一轉,大鎖就“啪”地一聲打開了。鐵桿奇怪地問:“為什麼我費了那麼大力氣也打不開,而你卻輕而易舉地就把它打開了呢?”鑰匙說:“因為我最了解他的心。” 

              (每個人的心,都像上了鎖的大門,任你再粗的鐵棒也撬不開。唯有關懷,才能把自己變成一只細膩的鑰匙,進入別人的心中,了解別人。)
            posted @ 2007-07-25 11:55 修一居士 閱讀(809) | 評論 (1)編輯 收藏

            2007年5月11日

                 摘要: 利用匿名管道在父子進程間傳遞數據 進程間傳遞數據有很多種方法,常用到的有命令行、共享內存、內存映射文件、剪貼板、windows消息、socket等。 命令行的缺點是數據長度限制。Windows2000只能傳遞256個字節,內存映射文件、共享內存都需要一些進程同步才能很好的配合讀寫數據,剪貼板可能會被其他進程擦數數據。當多開的時候很難控制進程間的對應關系。 一種解決方案是生成隨機命名的同步...  閱讀全文
            posted @ 2007-05-11 00:24 修一居士 閱讀(7783) | 評論 (4)編輯 收藏
            用DX自繪Edit控件往往沒有真是的EDIT窗口存在,所以輸入法窗口無法跟隨,這里給出一個解決方案

            計算當前光標的位置
            用API ImmSetCompositionWindow指定IME 窗口到當前光標位置
            在WM_KEYDOWN消息中處理

            以下是代碼:

            ------------------------------------------------------------------------------------------------
            int nSelStart = 0, nSelEnd = 0
            this->GetSel( nSelStart, nSelEnd );
            CPoint pntCursor 
            = this->PosFromChar( nSelEnd );

            if ( pntCursor.x == -1)
            {
            nSelEnd 
            -=1
            if ( nSelEnd < 0 )
            {
            nSelEnd 
            = 0;
            }

            pntCursor 
            = this->PosFromChar( nSelEnd );
            }


            HIMC hImc 
            = ImmGetContext(m_hWnd);
            COMPOSITIONFORM form;
            form.dwStyle 
            = CFS_RECT;
            form.ptCurrentPos 
            = CPoint(pntCursor.x,0);
            form.rcArea 
            = CRect(pntCursor.x,0,pntCursor.x+300,100);
            ImmSetCompositionWindow(hImc,
            &form);
            posted @ 2007-05-11 00:16 修一居士 閱讀(2647) | 評論 (0)編輯 收藏

            2007年3月27日

            Dump 調用堆棧的原理以及異常信息的反饋

            動機:

            在游戲開發過程中,我們利用 QA 部門來做產品的質量保證,盡可能將絕大部分錯誤消化在內部,保證游戲的版本質量,但是 QA 部門畢竟有他的局限性,盡管經過嚴格的測試也很難保證將所有的問題一網打盡.

             

            通過在 Log 中轉儲的錯誤信息,我們可以進一步找出問題,但是 Log 文件產生在終端,我們拿到的也僅僅是公司內部測試部門產生的 Log 文件,顯然公司內部得到的信息是很有限的,如果能從玩家那里拿到異常信息,我們才能最快的去解決問題,盡可能在錯誤產生重大影響之前將其解決,所以我們有必要從被動的獲取異常信息,轉為主動去獲取.

             

            可行性 :

                   在錯誤發生時 Dump 調用堆棧,可以讓我們知道錯誤發生的位置,這比已往普通的 LOG 更加有效的多.我們可以將出錯的堆棧地址反饋回來.這一切在終端出現異常的時候自動進行. Windows 操作系統提供的 SEH 結構化異常機制可能讓我們在程序崩潰的瞬間處理這些事情.

             

            效率問題 :

                   SEH windows 的異常機制,除非在編譯時候特別指定不使用,否則總有默認的 SEH 處理機制, kernel32.dll 中有默認的 SEH 處理接口,當我們需要自己處理異常的時候,我們的處理點會掛接在異常處理鏈的最前端,這種鏈類似 Hook 的鏈.鏈的頭部放在 fs[0] 的位置.也就是說效率的問題是可以不必考慮,

             

             

            具體實現 :

                   通過閱讀反匯編代碼可以了解函數調用過程中堆棧的結構 :

                  

                   1 函數調用時 CALL 將下一行指令地址壓入堆棧

                   2 函數運行第一行會將 EBP 壓入堆棧

                   3 保存當前堆棧地址到 EBP (mov ebp,esp)

                  

                   再遇到 call 時從第一步執行,所以每次第二步壓入堆棧的都是上一層函數調用的 ESP 地址,而這個地址 +4 字節偏移則是當前調用函數返回后的下一條指令,也就是上一層函數的地址,所以我們只要知道當前函數的 EBP ( 也就是當前函數的棧頂 ) 就能夠遍歷得到所有調用堆棧層次.

                   dumpebp.jpg

            我們將windows SEH 結構化異常引入后,可以在異常發生的時候得到當前的EBP值,從而通過這個值得到整個調用堆棧的地址.

             

            在發布工程的時候,我們只需要生成map文件,就可以通過這個地址得到崩潰位置.使用HTTP GET 或POST方式可以將我們所需要的崩潰信息提交到我們指定的網站.這種方式只是通過URL參數來提交數據,只需要使用API InternetOpenUrl就可以很方便的將信息提交.此外如果不使用HTTP方式,我們也可以在這個時候創建新的socket 對指定的服務器進行連接來傳輸數據.

                
                static TCHAR hdrs[] 
            = _T("Content-Type: application/x-www-form-urlencoded"); 
                static 
            const TCHAR* accept= _T("Accept: */*"); 
                    static TCHAR action[]=_T("datecomit.aspx");//預提交的頁面
                    static TCHAR server[]=_T("192.168.9.119");//提交的server地址

                static TCHAR frmdata[
            1024={0}; 
                _tcscpy(frmdata,_T("message=this is a test message");  //提交數據, message為提交名字   
                
                
            // for clarity, error-checking has been removed 
                HINTERNET hSession 
            = InternetOpen("MyAgent"
                INTERNET_OPEN_TYPE_PRECONFIG, 
            NULLNULL0); 
                HINTERNET hConnect 
            = InternetConnect(hSession, server
                INTERNET_DEFAULT_HTTP_PORT, 
            NULLNULL, INTERNET_SERVICE_HTTP, 01); 
                HINTERNET hRequest 
            = HttpOpenRequest(hConnect, "POST", actionNULLNULL&accept, 01); 
                HttpSendRequest(hRequest, hdrs, strlen(hdrs), frmdata, strlen(frmdata)); 

             

            此后我們只需要定期觀察所提交的內容,便可以立即得知是否有異常出現.根據同一異常出現的幾率可以得知是否是致命的錯誤,是否需要緊急更新.

             


            posted @ 2007-03-27 16:32 修一居士 閱讀(5304) | 評論 (7)編輯 收藏

            2007年3月12日

            成員函數的調用是編譯器內部使用的 __thiscall 即需要this指針,
            所以我們調用成員函數必須滿足的條件是
            1 需要this指針,
            2 成員函數有固定的函數地址

            先看條件 1 ?
            this指針是在函數調用前用ECX寄存器傳入的,
            所以我們只需要提前講this指針賦值給ECX即可

            條件2
            成員函數是有固定的地址的,也就是說我們可以直接調用,不過大多數情況下因為要訪問成員變量,所以如果沒有this指針,會在訪問時產生異常.對于不需要this指針的成員函數可以正常調用.
            如類 CTest

            class?CTest
            {
            public :

            ?CTest()?:?m_nData?(
            5 ){}

            ?
            int ?GetNum(){reutrn? 3 ;]

            ?
            int ?GetAmount(){return? 2 ? + ?m_nData;}
            private :
            ?
            int ?m_nData;
            };


            // 可以這樣調用GetNum
            return?((CTest
            * ) 0 ) -> GetNum();


            這兩個條件都可以滿足,所以代碼如下:
            typedef?int?(CTest::*GETAMOUNT)();

            void?Process(CTest
            &?t?,?GETAMOUNT?GetAmont)
            {
            ??
            int?nResult?=0;
            ??__asm{
            ?????mov?ecx,[t]??????;傳入this指針
            ?????
            call?GetAmont????;調用成員函數
            ?????mov?nResult,?eax?;返回值在EAX中
            ????????}
            ??cout
            <<nResult<<endl;
            }

            int?main(int?argc,?char*?argv[])
            {
            ??CTest?test;

            ??Process(test,?
            &CTest::GetAmount);????
            ??return?
            0;
            }????
            posted @ 2007-03-12 23:05 修一居士 閱讀(2329) | 評論 (3)編輯 收藏

            2007年2月2日

            IRQ全稱為Interrupt Request,即是“中斷請求”的意思(以下使用IRQ稱呼)。IRQ的作用就是在我們所用的電腦中,執行硬件中斷請求的動作,用來停止其相關硬件的工作狀態,比如我們在打印一份圖片,在打印結束時就需要由系統對打印機提出相應的中斷請求,來以此結束這個打印的操作。在每臺電腦的系統中,是由一個中斷控制器8259或是8259A的芯片(現在此芯片大都集成到其它的芯片內)來控制系統中每個硬件的中斷控制。目前共有16組IRQ,去掉其中用來作橋接的一組IRQ,實際上只有15組IRQ可供硬件調用。這16組IRQ的主要用途如下表:

            IRQ編號
            設備名稱
            用途

            IRQ0
            Time
            電腦系統計時器

            IRQ1
            KeyBoard
            鍵盤

            IRQ2
            Redirect IRQ9
            與IRQ9相接,MPU-401 MDI使用該IRQ

            IRQ3
            COM2
            串口設備

            IRQ4
            COM1
            串口設備

            IRQ5
            LPT2
            建議聲卡使用該IRQ

            IRQ6
            FDD
            軟驅傳輸控制用

            IRQ7
            LPT1
            打印機傳輸控制用

            IRQ8
            CMOS Alert
            即時時鐘

            IRQ9
            Redirect IRQ2
            與IRQ2相接;可設定給其它硬件使用

            IRQ10
            Reversed
            建議保留給網卡使用該IRQ

            IRQ11
            Reversed
            建議保留給AGP顯卡使用

            IRQ12
            PS/2Mouse
            接PS/2鼠標,若無也可設定給其他硬件使用

            IRQ13
            FPU
            協處理器用,例如FPU(浮點運算器)

            IRQ14
            Primary IDE
            主硬盤傳輸控制用

            IRQ15
            Secondary Ide
            從硬盤傳輸控制用
            posted @ 2007-02-02 22:47 修一居士 閱讀(681) | 評論 (0)編輯 收藏
            Windbg調試Release版exe .dll .ocx 等 (轉)
            v0.1 2006-6-1(兒童節)
            1.生成符號信息
            更改Relase版的設置(2處):
            一、Project Setting ->C/C++
            Debug info:
            選擇Program Database
            二、Project Setting ->Link
            選中Generate debug info
            重新編譯
            2.安裝Windbg
            下載安裝最新的Windbg
            http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx
            3.設定環境變量
            對于user32.dll等系統文件,Windbg可以自動從微軟網站下載所需的符號信息.我們只需設定_NT_SYMBOL_PATH
            這個環境變量告訴Winddbg.方法如下:
            我的電腦>右鍵菜單>屬性>高級選項卡>環境變量>系統變量>新建
            變量名: _NT_SYMBOL_PATH
            ? ? 變量值:SRV*F:\websymbols*
            http://msdl.microsoft.com/download/symbols
            解釋一下: F:\websymbols用來存儲系統符號.你可以指定其他的路徑.Windbg會自動創建該文件夾
            4.設定符號路徑
            新建一個文件夾,譬如C:\MyAppSymbols
            將第一步中生成的Release目錄下<youapp>.pdb文件拷貝到該文件夾,該pdb文件包含了調試所需的符號信息.
            打開Windbg,選擇File>Symbol file path>將C:\MyAppSymbols路徑添加進去
            5.調試程序
            選擇 File > Open Executable 然后選擇你需要調試的Exe文件,就可以調試了,其他操作和VC6差不多.

            posted @ 2007-02-02 15:47 修一居士 閱讀(4832) | 評論 (0)編輯 收藏
            僅列出標題  下一頁

            導航

            <2025年5月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            統計

            常用鏈接

            留言簿(3)

            隨筆檔案

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            国产成人久久精品一区二区三区 | 日本亚洲色大成网站WWW久久| 精品久久久久久成人AV| 久久综合88熟人妻| 国产69精品久久久久9999| 亚洲国产香蕉人人爽成AV片久久| 午夜天堂av天堂久久久| 久久精品国产精品国产精品污| 久久青青草原精品国产软件| 精品久久久久久无码不卡| 99精品久久精品一区二区| 午夜精品久久久久久影视777| 久久精品国产久精国产果冻传媒 | 亚洲欧洲精品成人久久曰影片 | 久久综合成人网| 伊人久久大香线焦AV综合影院| 国产精品岛国久久久久| 国内精品伊人久久久影院| 国产精品亚洲美女久久久| 蜜臀av性久久久久蜜臀aⅴ| 人妻精品久久久久中文字幕| 久久久久人妻一区二区三区vr| 日韩AV毛片精品久久久| 国产女人aaa级久久久级| 色妞色综合久久夜夜| 伊人久久久AV老熟妇色| 国产精品久久婷婷六月丁香| 欧美午夜A∨大片久久| 国产福利电影一区二区三区久久老子无码午夜伦不 | 国产激情久久久久久熟女老人| 久久99亚洲综合精品首页| 国产精品久久午夜夜伦鲁鲁| 亚洲精品国精品久久99热一 | 久久精品无码午夜福利理论片| 亚洲欧美国产日韩综合久久| 91久久九九无码成人网站| 人人狠狠综合久久亚洲婷婷| 91久久婷婷国产综合精品青草| 性做久久久久久久| 99精品国产在热久久无毒不卡 | 大美女久久久久久j久久|