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

            看前面黑咚咚,待俺上前殺它個(gè)干干凈凈。。。

             

            2014年3月21日

            db2 818坑

            項(xiàng)目中有一個(gè)sqC產(chǎn)生的實(shí)體調(diào)用方法時(shí),始終報(bào)818錯(cuò)。刪掉bnd得編問(wèn)題照舊。在同事的提示下--所有sqC文件名的前8個(gè)字符不能一樣--,找到重復(fù)文件重命名,刪掉BND文件,重編譯,搞定。

            posted @ 2014-03-21 10:35 山城,山 閱讀(378) | 評(píng)論 (0)編輯 收藏

            2013年5月18日

            在Win7上編譯 google V8

            一、環(huán)境
            編譯工具:VS2012 Express
            操作系統(tǒng):Win7旗艦版 64
            SVN客戶端
             
            二、下載
            1、創(chuàng)建目錄v8,用v8目錄,check out: http://v8.googlecode.com/svn/trunk/
            2、創(chuàng)建目錄v8\build\gyp,用gyp目錄,check out:http://gyp.googlecode.com/svn/trunk
            3、創(chuàng)建目錄v8\third_party\cygwin,用cygwin目錄,check out:http://src.chromium.org/svn/trunk/deps/third_party/cygwin
            4、創(chuàng)建目錄v8\third_party\python_26,用python_26目錄,check out:http://src.chromium.org/svn/trunk/tools/third_party/python_26
             
            注:上面的check out目錄同https://code.google.com/p/v8/wiki/BuildingWithGYP一文所述目錄不一致,文中所述目錄是無(wú)效的。
             
            三、編譯
            1、打開(kāi)VS2012 開(kāi)發(fā)人員命令提示。
            2、cd v8目錄。
            3、執(zhí)行命令:
               third_party\python_26\python.exe build\gyp_v8 -G msvs_version=2010
               系統(tǒng)顯示
               Updating projects from gyp files...
            4、在命令行中輸入:build\all.sln,回車。
            5、系統(tǒng)自動(dòng)打開(kāi)VS2012 IDE環(huán)境。
            6、在IDE環(huán)境項(xiàng)目菜單中,更新項(xiàng)目,升級(jí)項(xiàng)目文件。
            7、編譯。

            posted @ 2013-05-18 13:03 山城,山 閱讀(505) | 評(píng)論 (0)編輯 收藏

            2013年5月14日

            Linux守護(hù)程序類-daemon

            /////////////////////////////////////////////////////////////////////////////////////
            ///   daemon 測(cè)試類
            #include <unistd.h>
            #include <syslog.h>
            #include <stdlib.h>
            #include "daemon.h"

            class logger : public daemon
            {
            public:
                logger() : daemon("日志")
                {}

                void do_something()
                {
                    while(true)
                    {
                        syslog (LOG_NOTICE, "Writing to my Syslog");

                        sleep(5);
                    }
                }
            };

            int main(int argc, char *argv[]) {
                logger l;

                l.run();

                return 0;
            }

            ////////////////////////////////////////////////////////////////////////////
            //   .h

            #ifndef DAEMON_H
            #define DAEMON_H

            #include <string>

            class daemon{
            public:
                const std::string name;
            public:
                daemon(const char* nm);

                void run();

            private:
                static void fork_off_parent();
                static void set_child_context();
                virtual void open_log();
                virtual void do_something() =0;
                virtual void finish();
            private:
                daemon(const daemon&);
                daemon& operator=(const daemon&);
            };

            #endif // DAEMON_H

            /////////////////////////////////////////////////////////////////////////////////
            //  .cpp
            /*
             * cp from  
            http://shahmirj.com/blog/beginners-guide-to-creating-a-daemon-in-linux
             
            */

            #include "daemon.h"

            #include <sys/stat.h>
            #include <stdlib.h>
            #include <unistd.h>
            #include <syslog.h>

            daemon::daemon(const char *nm) : name(nm)
            {}

            void daemon::run()
            {
                fork_off_parent();
                set_child_context();
                open_log();
                do_something();
                finish();
            }

            void daemon::fork_off_parent()
            {
                //Fork the Parent Process
                pid_t pid = fork();

                if (pid < 0)
                {
                    exit(EXIT_FAILURE);
                }

                //We got a good pid, Close the Parent Process
                if (pid > 0)
                {
                    exit(EXIT_SUCCESS);
                }
            }

            void daemon::set_child_context()
            {
                //Change File Mask
                umask(0);

                //Create a new Signature Id for our child
                pid_t sid = setsid();
                if (sid < 0)
                {
                    exit(EXIT_FAILURE);
                }

                //Change Directory
                
            //If we cant find the directory we exit with failure.
                if ((chdir("/")) < 0)
                {
                    exit(EXIT_FAILURE);
                }

                //Close Standard File Descriptors
                close(STDIN_FILENO);
                close(STDOUT_FILENO);
                close(STDERR_FILENO);
            }

            void daemon::open_log()
            {
                //Set our Logging Mask and open the Log
                setlogmask(LOG_UPTO(LOG_NOTICE));
                openlog(name.c_str(), LOG_CONS | LOG_NDELAY | LOG_PERROR | LOG_PID, LOG_USER);

                syslog(LOG_INFO, "Entering Daemon");
            }

            void daemon::finish()
            {
                //Close the log
                closelog ();
            }

            posted @ 2013-05-14 14:01 山城,山 閱讀(324) | 評(píng)論 (0)編輯 收藏

            2013年5月10日

            Qt程序源碼中,中文常量字符串問(wèn)題及翻譯家的使用

                在Windows7下使用Qt creator開(kāi)發(fā)程序,想直接在源代碼中使用中文字符串常量,源碼是utf8的,保持utf8是便于遷移到linux,VC編譯器總是報(bào)錯(cuò),串中有換行符,怪異的是如果恰好串只有兩個(gè)中文字符時(shí),一切都是那么美好,多了,VC編譯器就會(huì)讓你痛苦了。
                經(jīng)過(guò)一番google,我總結(jié)了解決問(wèn)題的原則:
                絕對(duì)不要在源碼中使用中文字符串常量。
                那要顯示的中文怎么做?用Qt Linguist.

            下面是方法:


            第一步:打開(kāi)
            .pro文件,在最后面加入一行

            TRANSLATIONS = cn.ts

            可以自由命名右邊的.ts文件

             

            第二步:選擇菜單:工具/外部/Qt翻譯家/更新翻譯(lupdate)

            此時(shí),系統(tǒng)將在.pro文件所在目錄生成cn.ts文件

             

            第三步:打開(kāi)cn.ts文件,注意是用菜單:打開(kāi)文件,用...。這種方式,在對(duì)話框中選擇

            Qt Linguist

             

            第四步:在Qt Linguist中,漢化找到的源代碼中的字符串常量。

             

            第五步:完成漢化后,保存并選擇【發(fā)布】。系統(tǒng)會(huì)在cn.ts文件所在目錄生成cn.qm文件。

            第六步:把漢文件文件添加到,項(xiàng)目資源中。打開(kāi).qrc文件,添加cn.qm文件

            /tr

                 cn.qm

             

             

            第七步:使用漢化結(jié)果. 在主窗口顯示前,應(yīng)用實(shí)例創(chuàng)建后安裝翻譯器。

            QApplication a(argc, argv);

             

            QTranslator translator;

             

            translator.load(":tr/cn.qm");

            a.installTranslator(&translator);

             

            經(jīng)驗(yàn):有些時(shí)候明明已經(jīng)翻譯了,程序還是不生效,此時(shí)你可以選擇【清理項(xiàng)目】后再次構(gòu)建,試一下。

            posted @ 2013-05-10 16:09 山城,山 閱讀(2381) | 評(píng)論 (0)編輯 收藏

            2012年5月7日

            Linux 平臺(tái)Eclipse與CMake結(jié)合的方法

             

            1、項(xiàng)目目錄規(guī)劃

             

                project_dir下建立build, cmake, src三個(gè)目錄。

              

            2、按照CMake要求,為項(xiàng)目編寫CMakeLists.txt文件。

             

            3、調(diào)用CMake命令為eclipse生成項(xiàng)目文件,我把這些命令寫成腳本來(lái)執(zhí)行:

                    make_project.sh

             

            #!/bin/sh

            mkdir -p build/release

            mkdir -p build/debug

            cmake -E chdir build/release cmake -G "Eclipse CDT4 - Unix Makefiles" -DCMAKE_BUILD_TYPE=release ../../

            cmake -E chdir build/debug cmake -G "Eclipse CDT4 - Unix Makefiles" -DCMAKE_BUILD_TYPE=debug ../../

             

            4、打開(kāi)eclipse,選擇菜單:文件/ 導(dǎo)入/常規(guī)/現(xiàn)有項(xiàng)目到工作空間中.。在“導(dǎo)入”對(duì)話框中,在“選擇根目錄”項(xiàng)目中指定目錄為project_dir/build.

                eclipse會(huì)自動(dòng)搜索到debug, release兩個(gè)目錄下的項(xiàng)目。

                點(diǎn)擊“完成”按鈕。eclipse將自動(dòng)加入項(xiàng)目。

             

            5build項(xiàng)目。

             

            6、調(diào)試項(xiàng)目時(shí),你需要在菜單:運(yùn)行/調(diào)試配置 里新增配置信息,指定執(zhí)行文件的路徑。

            posted @ 2012-05-07 15:55 山城,山 閱讀(6690) | 評(píng)論 (0)編輯 收藏

            2012年2月28日

            一張圖

            圖本身沒(méi)有什么特別的,只是用來(lái)分析任務(wù)隊(duì)列,圖是用來(lái)推理的。

            posted @ 2012-02-28 17:20 山城,山 閱讀(226) | 評(píng)論 (0)編輯 收藏

            2010年9月30日

            wxFormBuildert雜記二則

            一、wxFormBuilder選擇utf8生成的cpp代碼,是無(wú)代碼簽名的,VS2008 express編譯過(guò)程中可能會(huì)出現(xiàn)字符串錯(cuò)誤。
                     解決辦法是:打開(kāi)文件菜單,選擇保存高級(jí)選項(xiàng),在“編碼”中選擇“unicode - 代碼頁(yè)1200”,確定后,重新編譯。
            二、wxFormBuilder制作wxFlexGridSizer布局時(shí),其默認(rèn)rows,cols都是2,這個(gè)值不會(huì)自動(dòng)變化,因此,你添加了超個(gè)2*2個(gè)窗體后,生成的cpp代碼可以順利編譯,但運(yùn)行過(guò)程會(huì)報(bào)超過(guò)2*2的錯(cuò)。
                     解決辦法:調(diào)整rows, cols值。


            更正:方法一,更簡(jiǎn)單的處理是在項(xiàng)目屬性中勾選c++ properties/ use_microsoft_bom 設(shè)置,這樣生成的cpp文件,VS2008 Express 無(wú)礙編譯。

            posted @ 2010-09-30 08:29 山城,山 閱讀(425) | 評(píng)論 (0)編輯 收藏

            2010年7月29日

            sqlite簡(jiǎn)明使用

            跑題
            據(jù)說(shuō)Oracle Berkeley DB"很好",就去試用一下,但是,它,很不給我面子,在put了半天之后,我想get一下寫入的東西,運(yùn)行正常,但沒(méi)有結(jié)果返回,看了幾遍幫助,copy文檔的代碼,也是這個(gè)結(jié)果,就很是郁悶了。沒(méi)有太多的時(shí)間去追究問(wèn)題,還好世上還有一些“美好”的東西。sqlite,也是嵌入數(shù)據(jù)庫(kù),據(jù)說(shuō)它快但是比Oracle Berkeley DB“遜色”,但Oracle Berkeley DB 11g的sql引擎是用sqlite的,最重要的它還是免費(fèi)的。
            有興趣了解的朋友可以去這里看一下。
            http://www.bdbchina.com/2010/03/oracle-berkeley-db-%E6%94%AF%E6%8C%81sql%E5%95%A6%EF%BC%81/
            BDB中國(guó)研發(fā)團(tuán)隊(duì)的博客,講了一些與sqlite的關(guān)系。這里摘錄一下:

            “Oracle Berkeley DB引入了SQLite的SQL層:包括用戶接口(sqlite3(), ODBC, JDBC等)和SQL語(yǔ)言處理層(Tokenizer、Parser及Generator),而底層引擎(虛擬機(jī))則使用了BDB的存儲(chǔ)引擎。從而,將原來(lái)SQLite基于數(shù)據(jù)庫(kù)級(jí)別的并發(fā)提升一個(gè)級(jí)別 - 至BDB的基于頁(yè)(Page)級(jí)別的并發(fā),并可以利用BDB的更好的內(nèi)存管理、數(shù)據(jù)和事務(wù)恢復(fù)功能、更多的擴(kuò)展(如Berkeley DB的db_hotbackup、db_stat、db_archive等一系列命令行工具)。”


            Berkeley DB SQL和SQLite使用上的區(qū)別

            a) 對(duì)于用戶和開(kāi)發(fā)人員來(lái)說(shuō),這兩個(gè)產(chǎn)品是沒(méi)有區(qū)別的。它們?cè)赟QL語(yǔ)法、API、命令行交互、PRAGAMAs 等方面都是一致的。我認(rèn)為,用戶可以體驗(yàn)的顯著區(qū)別有可能是性能和并發(fā)了 - 由于SQLite提供的是數(shù)據(jù)庫(kù)級(jí)別的鎖,而B(niǎo)erkeley DB SQL是頁(yè)(Page)級(jí)別的鎖,因此后者在絕大多數(shù)測(cè)試中都會(huì)快很多 (如Insert, Update, Delete, 并發(fā)操作等)。但是,由于DBSQL提供的細(xì)粒度鎖的機(jī)制,它又會(huì)帶來(lái)一些額外的開(kāi)銷,一些極端的測(cè)試用例下會(huì)比SQLite慢上少許(但不明顯)。并且對(duì)于這些極端測(cè)試的案例,我們一直在進(jìn)行性能優(yōu)化。

            b) 對(duì)于已有的SQLite應(yīng)用程序和工具而言,由于這兩者在調(diào)用接口都是一致的,因而都可以無(wú)縫支持。

            c) 對(duì)于DBA人員來(lái)說(shuō),除了可以繼續(xù)使用SQLite原來(lái)的管理工具,您還可以使用BDB提供的db_hotbackup、db_stat、db_archive等一系列命令行工具來(lái)備份,監(jiān)控,升級(jí)等。另外,您還可以聯(lián)系Oracle尋求支持。

            總體而言,我們有充分理由相信Oracle Berkeley DB SQL將會(huì)比SQLite更快,更穩(wěn)定。同時(shí),我們也將會(huì)提供更好的支持服務(wù)。


            正題
            使用http://sqlitewrapper.kompex-online.com/ Kompex SQLite Wrapper 呵呵,超好用

            完了

            posted @ 2010-07-29 17:32 山城,山 閱讀(709) | 評(píng)論 (0)編輯 收藏

            wcsftime,_wcsftime_l之困

            本想用wcsftime,_wcsftime_l來(lái)簡(jiǎn)化時(shí)間格式化操作,顯示中文時(shí)間,于是就這樣整:
                wchar_t buf[128];
                wcsftime(buf, 128, L"%y年%m月%d ...." ...)
            誰(shuí)知道執(zhí)行成功,但buf里邊內(nèi)容為空,注意不是"\0",是什么也沒(méi)有返回. 東找西查,可能是local相關(guān)問(wèn)題。
            好,我設(shè)置  "CHS",OK,(調(diào)試。。),再F5 , NND,sqlite又報(bào)一個(gè)互斥量錯(cuò)誤,額的娘喲!消滅一個(gè)問(wèn)題,又引入一個(gè)新問(wèn)題。。。立即癡呆3分鐘:-(。
               好了,好了,惹來(lái)起,躲得起,我可不會(huì)去探尋為什么sqlite會(huì)不給面子,不然這一天又過(guò)去了。
            還好,有數(shù)據(jù),毛老人家講“自力更生,豐衣足食”,wcsprintf一樣的可用。。。

            posted @ 2010-07-29 17:27 山城,山 閱讀(1076) | 評(píng)論 (0)編輯 收藏

            2010年6月4日

            當(dāng)前路徑 !=程序路徑 --我吃了它的苦頭

                第一次,我在寫一個(gè)MFC程序,用CFile打開(kāi)文件時(shí),我認(rèn)為當(dāng)前路徑==程序路徑,文件名沒(méi)有采用絕對(duì)路徑。在程序執(zhí)行過(guò)程中,沒(méi)有打開(kāi)任何文件對(duì)話框時(shí),我的想當(dāng)然是對(duì)的,可是只要彈出一個(gè)文件對(duì)話后,我就跌入了沼澤,耗時(shí)三天,才發(fā)現(xiàn)文件對(duì)話框是要更改當(dāng)前路徑的。
                每二次,我在寫一個(gè)服務(wù)時(shí),一個(gè)函數(shù)里邊要打開(kāi)讀取一個(gè)文件,在非服務(wù)程序的執(zhí)行過(guò)程中,函數(shù)表現(xiàn)正常。當(dāng)我轉(zhuǎn)換成服務(wù),在主函中調(diào)用它后,在服務(wù)啟動(dòng)運(yùn)行期間,它運(yùn)行不正常。我又認(rèn)為當(dāng)前路徑==程序路徑,文件打開(kāi)失敗,調(diào)試了一下午才找出原因。

            “同一個(gè)錯(cuò)誤,不能犯兩次”

            posted @ 2010-06-04 23:17 山城,山 閱讀(518) | 評(píng)論 (1)編輯 收藏

            僅列出標(biāo)題  下一頁(yè)

            導(dǎo)航

            統(tǒng)計(jì)

            常用鏈接

            留言簿

            隨筆分類

            隨筆檔案

            搜索

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            亚洲欧美日韩中文久久| 久久综合综合久久综合| 久久激情亚洲精品无码?V| 精品免费久久久久国产一区| 欧美午夜A∨大片久久 | 久久婷婷五月综合色奶水99啪| 久久精品免费一区二区| 伊人色综合久久| 久久九九兔免费精品6| 狠狠干狠狠久久| 久久亚洲AV成人无码软件| 久久午夜无码鲁丝片| 久久伊人中文无码| 久久精品国产一区二区三区日韩| 午夜精品久久久久久| 国产成人久久精品一区二区三区| 久久综合久久伊人| 久久婷婷综合中文字幕| 浪潮AV色综合久久天堂| 久久九九兔免费精品6| 久久高潮一级毛片免费| 国产精品久久久久久吹潮| 久久夜色精品国产亚洲| 久久久久香蕉视频| 激情五月综合综合久久69| 国产99精品久久| 久久国产亚洲精品无码| 亚洲女久久久噜噜噜熟女| 亚洲精品成人久久久| 久久久WWW成人| 精品国产91久久久久久久a| 久久最近最新中文字幕大全| 国产精品无码久久综合| 久久久一本精品99久久精品66| 伊人久久大香线蕉综合影院首页 | 欧美一区二区精品久久| 蜜桃麻豆www久久| 精品无码久久久久久久动漫| 久久精品无码av| 三级三级久久三级久久| 伊人久久大香线蕉综合Av|