• <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>
            隨筆-18  評(píng)論-11  文章-12  trackbacks-0
              2009年6月21日
                  2009年6月的一天,我在甲方辦公室加班調(diào)試程序,筆記本的屏幕只有12英寸,我得不停地在調(diào)試器和編輯器之間切換,觀察斷點(diǎn)的執(zhí)行情況,發(fā)現(xiàn)代碼中的問題。在那一刻,我突然覺得所做的完全是低水平重復(fù)工作。
                    1. 對(duì)業(yè)務(wù)流程不熟悉,對(duì)自己的代碼不熟悉,編譯運(yùn)行后不能預(yù)測(cè)結(jié)果。
                    2. 做管理軟件,重復(fù)性工作太多。
                    3. 技術(shù)視野有限,不能從一個(gè)更廣的角度去看待問題。
                    對(duì)于第一個(gè)問題,首要要求在寫完代碼后做review,把代碼詳細(xì)讀一遍想一遍,確認(rèn)無誤后才編譯。review要隨時(shí)地做,寫完一個(gè)函數(shù)完成一個(gè)功能塊,都要檢查,想一想這段代碼在整個(gè)業(yè)務(wù)流程中的位置。對(duì)代碼做到心中有數(shù),而不至于不停的開調(diào)試器(調(diào)試器是一個(gè)效率低下的緣由之一)。
                   重復(fù)性工作多,這個(gè)是管理軟件固有屬性,能否將重復(fù)性的工作抽離出來?在之前的項(xiàng)目中,做了很多這方面的嘗試。有一定成效。但另一方面,由于經(jīng)驗(yàn)不足,強(qiáng)扭地將一些個(gè)性化的東西抽離出來,最后代碼組織結(jié)構(gòu)混亂。要達(dá)到重用,有很多條路可以達(dá)到,但由于技術(shù)的積累不夠,看到一條路就以為這條路是最好的,一往無前地闖過去。其實(shí)還有很多更好的選擇,只是因?yàn)榧夹g(shù)積累不夠,而工期緊張,沒得選了。
                   視野有限,所看到僅僅是所寫的,而不能引發(fā)更加廣度的聯(lián)想。比如說在asp.net中的master頁面,自定義控件,管理軟件三層架構(gòu)的優(yōu)勢(shì),mvc等等。沒有深刻地了解和實(shí)際的體驗(yàn),在項(xiàng)目中自然無法聯(lián)想到。所以只能做一些簡(jiǎn)單的重復(fù)工作。
            posted @ 2009-06-21 20:18 ronliu 閱讀(332) | 評(píng)論 (0)編輯 收藏
              2009年3月11日

                在日常生活中,經(jīng)常有大量的文本需要處理,正則表達(dá)式正是基于此提出的。本文將結(jié)合一些具體的實(shí)例來解釋它。雖然在不同的語言環(huán)境中,正則表達(dá)式有不同的語法規(guī)則,但其基本語義卻是一致的。http://en.wikipedia.org/wiki/Regular_expression。這將是一個(gè)系列教程。本節(jié)只是一個(gè)開胃菜:)

                某一次同學(xué)很無聊,然后問我電腦上有無小說。這是顯然的,我是網(wǎng)絡(luò)小說迷嘛!從起點(diǎn)down下無數(shù)小說存在電腦上,名字都懶得改,都是以數(shù)字打頭,然后以“.txt”結(jié)尾,比如23432.txt之類的。當(dāng)然,文件查找還是得用Everything,要不然電腦上的上百萬個(gè)文件,手會(huì)抽筋的。

                (注:我以為Everything是史上最快的文件查找工具,強(qiáng)烈推薦?。?/p>

               先用"*.txt"嘗試一下,:(,給出一大堆文本文件呀。范圍太廣。還是得用正則表達(dá)式來。

              ^[0-9]*\.txt

                Yes!給出了我電腦上存儲(chǔ)的所有小說了。

            image

                解釋一下:
                ^[0-9]表示文件名以0-9之間的數(shù)字開頭,^是開頭的意思($結(jié)尾)
                *表示它前面的字符(這里是數(shù)字)要重復(fù)若干次(>=0)
                \.匹配139869.txt中的那個(gè)小數(shù)點(diǎn)。因?yàn)檎齽t表達(dá)式中,‘.’被占用了,表示任意字符,所以要轉(zhuǎn)義一下
                txt,這就不說了,緊接著小數(shù)點(diǎn)的是‘txt’三個(gè)字符。

                Everything只支持部分正則表達(dá)式, | () ? * + . [] [^] ^ $ {m,n} 不過已經(jīng)完全夠用了。
            http://xbeta.info/everything/faq.htm#How_do_I_use_regex

                考慮這樣一個(gè)問題:項(xiàng)目組在驗(yàn)收的時(shí)候,被指出代碼的注釋量不夠,需要達(dá)到至少30%才行,也就是至少需要添加6500行注釋。此時(shí)老師提出,要將所有的函數(shù)加上注釋,函數(shù)的名稱、功能、參數(shù)、返回值。這個(gè)時(shí)候,考慮能不能用正則表達(dá)式,提取源代碼中的函數(shù)信息,然后自動(dòng)生成注釋模板?比如:

            int foo(int x, int y);
            替換為:
            /**
            * @method foo
            * @para x
            * @para y
            * @return
            */
            int foo(int x, int y);

                注意到,這個(gè)函數(shù)參數(shù)的個(gè)數(shù)和類型可以是變動(dòng)的,返回值限定符的個(gè)數(shù)和類型也是變動(dòng)的,比如static類型函數(shù),有兩個(gè)限定符,而構(gòu)造函數(shù),則沒有限定符,還有部分virtual類型函數(shù)。

            posted @ 2009-03-11 20:01 ronliu 閱讀(646) | 評(píng)論 (1)編輯 收藏
              2009年3月8日

                    本例學(xué)習(xí)QDialog。預(yù)期目的:1. 組織多個(gè)窗體。2. 學(xué)習(xí)Dialog的相關(guān)屬性。3. 學(xué)習(xí)一些widget。

                    1. 本例中,定義了3個(gè)不同的PageWidget,都是從QWidget中派生。用戶在左側(cè)list更換后,切換到不同的配置頁。

                    2. QStackedWidget提供一組widget,但一次只能有一個(gè)顯示。將這個(gè)widget添加到layout中。

                    3. 在layout設(shè)置中,一般為MainWindow設(shè)置一個(gè)layout,然后向這個(gè)layout中添加不同的widget,layout。

                    4. 一個(gè)窗體是Window或者Dialog,向這個(gè)窗體中添加其他的Widget,這些Widget可以使系統(tǒng)提供的,也可以是用戶自己定義的。

                    5. 本例中使用兩次QListWidget。一次為圖文,一次為文字。setViewMode(),設(shè)置ListWidget為圖標(biāo)模式。通過setIcon(),設(shè)置Item的圖標(biāo)。configButton->setIcon(QIcon(":/images/config.png"));

                    6. 定義QListWidgetItem的父類為QListWidget,設(shè)置QListWidget的項(xiàng)?;蛘呤褂胊ddWidget()之類的方法。

                    7. 左側(cè)select切換時(shí),if(!current)  current = previous;防止current為0的意外情況。

                    8. 自定義了一個(gè)slot,用來處理contentList被選中項(xiàng)切換時(shí),相應(yīng)的處理方法。也就是設(shè)置stackedWidget的被選中項(xiàng)。通過contentlist的row()確定index,然后設(shè)置第index項(xiàng)為當(dāng)前item。

            posted @ 2009-03-08 22:20 ronliu 閱讀(776) | 評(píng)論 (0)編輯 收藏
              2009年2月26日

            2008.2.27 by RonLiu

            方法一:使用tr()函數(shù)

            QT中,用QString存儲(chǔ)所有可見得文本/字符串,使用tr()將各種字符編碼的文本轉(zhuǎn)化為QString,然后既可以將他們?cè)O(shè)置為控件的顯示文本。

            在Widget的構(gòu)造函數(shù)中加入:

            QTextCodec::setCodecForTr(QTextCodec::codecForName("gbk"));

            QFont font1("Times", 12, QFont::Normal, FALSE);

            this->setFont(font1);

            這樣在該窗體的其他位置,可以使用tr()設(shè)置控件的內(nèi)容,他們均可以顯示為中文了。

            setWindowTitle(tr("消息嗅探器"));

            注意:這種方式設(shè)置的中文顯示對(duì)于整個(gè)控件,以及它們的子控件都生效。如果在子控件中另外設(shè)置了setFont(),那么全局的字體方案將會(huì)失效。

            方法二:使用translate()轉(zhuǎn)換

            先將需要顯示的中文轉(zhuǎn)化為gbk編碼的unicode,然后將unicode轉(zhuǎn)化為QByteArray,在將只轉(zhuǎn)化為char指針,并傳遞給translate()函數(shù)。

            注意:這種方法顯示中文時(shí),會(huì)出現(xiàn)失效的情況。譬如在菜單欄中可以顯示中文,但是在Label或者Button中卻無法顯示中文。

            另外,這種方法僅僅建議只有少數(shù)按鈕顯示中文時(shí)選用,否則,代碼寫得也麻煩呀。

            如果使用QDesigner生成的ui文件,后創(chuàng)建的界面類,一般都有一個(gè)retranslateUI,就是做這個(gè)用的。

            const char * stringToUnicode(const char *str)

            {

            static QTextCodec *codec = QTextCodec::codecForName("gbk");

            QByteArray qba = (codec->toUnicode(str)).toLocal8Bit();

            const char * c_str = qba.data();

            return c_str;

            }

            menuFile->setTitle(QApplication::translate("MainWindow", stringToUnicode("文件"), 0, QApplication::CodecForTr));

            QTextCodeC用于在不同的編碼方案之間進(jìn)行轉(zhuǎn)換。

            方法三:使用Linguist

            這是QT自帶的用于軟件本地化的軟件的工具。沒仔細(xì)研究過。

            這種方式可以用于外文軟件的本地化,那么相比于前兩者方式,處于更高的層次。

            延生一:編寫多語言版本的QT程序

            (本部分內(nèi)容參考QT手冊(cè)Internationalization一節(jié))

            在方法一和方法二種,仍然是一個(gè)程序?qū)?yīng)一個(gè)語言。如果希望QT程序針對(duì)不同的語言,有不同的版本,該如何操作?

            準(zhǔn)備一個(gè).pro文件,如:

            HEADERS         = funnydialog.h \

                               wackywidget.h

            SOURCES         = funnydialog.cpp \

                               main.cpp \

                               wackywidget.cpp

            FORMS           = fancybox.ui

            TRANSLATIONS    = superapp_dk.ts \

                               superapp_fi.ts \

                               superapp_no.ts \

                               superapp_se.ts

            1. 使用lupdate,從QT程序中抽取可轉(zhuǎn)換的文本,生成一個(gè)ts文件。

            2. 使用Linguist工具,在原始文本間轉(zhuǎn)換。ts文件以xml格式保存,可以手動(dòng)修改。

            3. 運(yùn)行l(wèi)release,生成輕量級(jí)的qm格式的消息文件。這種文件可以在程序中使用。

            4. In your application, you must QTranslator::load()  the translation files appropriate for the user's language, and install them using QCoreApplication::installTranslator().

            posted @ 2009-02-26 20:09 ronliu 閱讀(839) | 評(píng)論 (0)編輯 收藏
              2009年2月20日

            1. 為什么使用Eclipse進(jìn)行C++的開發(fā)。

                  因?yàn)镋clipse的IDE支持多種語言,如Java、Python、C++,也支持不同的操作系統(tǒng)。這樣不管換到什么環(huán)境,或者換一種語言,熟悉的環(huán)境不會(huì)變化。

            2. 安裝和設(shè)置Eclipse/CDT的環(huán)境。

                  a. mingw的安裝與配置。http://www.shnenglu.com/romangol/archive/2008/04/19/47595.html。(PATH,C_INCLUDEPATH,CPLUS_INCLUDE_PATH, LIBRARY_PATH)

                  b. Java虛擬機(jī)的安裝與設(shè)置。(PATH)

                  c. Eclipse/CDT的下載與安裝。http://www.ibm.com/developerworks/cn/linux/opensource/os-ecc/index.html

            3. toolchain設(shè)置

                  新建一個(gè)自帶makefile的helloworld程序,build可以通過。但點(diǎn)擊運(yùn)行時(shí),提示找不到可執(zhí)行文件。原因在于,新建項(xiàng)目時(shí),沒有選擇合適的toolchain。如果是下載后解壓后得到的CDT,那么toolchain已經(jīng)內(nèi)置在其中了。但如果是update的方式獲取,則需要手動(dòng)下載。

                 我安裝的是mingw的編譯環(huán)境,但選擇cygwin,卻仍然可以生成可執(zhí)行的程序。奇怪的事情。獲取是因?yàn)?,設(shè)置configuration時(shí),通過檢查環(huán)境變量來獲取實(shí)際調(diào)用的編譯器?

                  image   image
                  image 

            4. 何為toolchain?

                  A toolchain is a set of tools (such as a compiler, linker, and assembler) intended to build your project. Additional tools, such as a debugger, can be associated with a toolchain. There can be several toolchains available, depending on the compilers installed on your system.

            5. 有哪些toolchain可供選擇?

                 Cygwin,通過支持GNU libc運(yùn)行庫,它完全實(shí)現(xiàn)gun toolchain,使用dll向上提供Windows的兼容層。

                 mingw。windows平臺(tái)下gnu toolchain的入口,它直接使用windows c運(yùn)行庫,不需要兼容層,但可移植性要差一些。

            6. Eclipse如何使用這些toolchain? TODO

                 The CDT is designed to provide an extensible architecture, that will provide support for integration of tools provided by Independent Software Vendors。

             

            附:

                   Eclipse 平臺(tái)只是用于開發(fā)者工具的一個(gè)框架,它不直接支持 C/C++;它使用外部插件來提供支持。CDT 是完全用 Java 實(shí)現(xiàn)的開放源碼項(xiàng)目(根據(jù) Common Public License 特許的),它作為 Eclipse SDK 平臺(tái)的一組插件。這些插件將 C/C++ 透視圖添加到 Eclipse 工作臺(tái)(Workbench)中,現(xiàn)在后者可以用許多視圖和向?qū)б约案呒?jí)編輯和調(diào)試支持來支持 C/C++ 開發(fā)。

            下面是 CDT 插件/組件的完整列表:

            • 主 CDT 插件(Primary CDT plug-in)是“框架”CDT 插件。
            • CDT 功能 Eclipse(CDT Feature Eclipse)是 CDT 功能組件(Feature Component)。
            • CDT 核心(CDT Core)提供了核心模型(Core Model)、CDOM 和核心組件(Core Component)。
            • CDT UI是核心 UI、視圖、編輯器和向?qū)А?
            • CDT 啟動(dòng)(CDT Launch)為諸如編譯器和調(diào)試器之類的外部工具提供了啟動(dòng)機(jī)制。
            • CDT 調(diào)試核心(CDT Debug Core)提供了調(diào)試功能。
            • CDT 調(diào)試 UI(CDT Debug UI)為 CDT 調(diào)試編輯器、視圖和向?qū)峁┝擞脩艚缑妗?
            • CDT 調(diào)試 MI(CDT Debug MI)是用于與 MI 兼容的調(diào)試器的應(yīng)用程序連接器。
            posted @ 2009-02-20 14:15 ronliu 閱讀(7633) | 評(píng)論 (0)編輯 收藏
              2009年2月16日

                  對(duì)于QT的學(xué)習(xí),一直處于半懂不懂的狀態(tài),看文檔也只處于“貌似”的境界,導(dǎo)致真正碰到問題時(shí)就個(gè)屁掉。這次閱讀basiclayout的demo說明,甚感慚愧,之前學(xué)得太膚淺。

                  1. 設(shè)計(jì)一個(gè)窗體,安排好它的函數(shù)和屬性。

                  2. 基本的layout包括四類,QHBoxLayout,QVBoxLayout,QGridLayout,QFormLayout。前兩個(gè)將widget水平或豎直防止,grid將widget以格子的形式放置,formlayout將widget以row的形式放置。

                  3. layout的使用方法是,先定一個(gè)layout,再向這個(gè)layout中添加widget,然后使用父類中的setlayout(),設(shè)置這個(gè)widget的layout。

                  4. layout有一個(gè)setMenubar,可以使得Dialog也可以設(shè)置菜單欄。

                  5. 在定義類時(shí),定義一個(gè)enum,之后就可以直接使用這個(gè)enum中的元素。

                  6. QT賦參數(shù)的方法為tr("Button %1").arg(i + 1)。

                  7. QGridLayout有setColumnStretch(int, int)方法,用于設(shè)置grid中格子的伸長因子,也就是能夠占用多大的空間。

                  8. QDialogButtonBox指用于確定/退出的button組。它是這兩類常用button的一個(gè)box組合。

                  9. 本例中涉及到的其它widget包括:

                         a.  QTextEdit,文本編輯框,支持plain text和html text

                         b.  QPushButton,按鈕

                         c.  QGroupBox,將widget以box的形式組織在一起

                         d. QLineEdit,行編輯框

                         e. QComboBox,下拉框

                         f. QSpinBox,spin框,提供數(shù)值選擇。

            posted @ 2009-02-16 22:28 ronliu 閱讀(9626) | 評(píng)論 (3)編輯 收藏
              2009年2月11日

                  cppblog提供了metablog接口,供用戶使用一些桌面工具操作blog。MetaBlogAPI是一個(gè)XML-RPC Service。它可以讓用戶遠(yuǎn)程調(diào)用Blog程序提供的接口來完成一些功能,比如發(fā)布新的文章,查看最新文章的列表等。http://dudu.cnblogs.com/articles/411388.html

                  先看cppblog的一個(gè)接口:

            metaWeblog.getCategories()的參數(shù)

            image

            返回結(jié)構(gòu)體

            image

                  下面介紹使用Python來操作metablog接口。既然metablog是一個(gè)xml-rpc接口,那么就使用Python的xmlrpc庫吧,好消息是這個(gè)庫Python已經(jīng)提供了,就是xmlrpclib。

                  代碼如下:

            import xmlrpclib

            user = 'ronliu'

            pass = '123'

            url = 'http://www.shnenglu.com/ronliu/services/metaweblog.aspx'

            server = xmlrpclib.Server(url)

            cata = server.metaWeblog.getCategories('', user, pass)    #典型的rpc調(diào)用

            for e in cata:

                 print e['categoryid'], e['title']

            操作結(jié)果:

            image 

             

                  使用xmlrpclib的Server()方法,可以創(chuàng)建一個(gè)rpc服務(wù)器的代理,然后通過這個(gè)代理訪問遠(yuǎn)程的方法。可以使用Python提供的調(diào)試功能查看rpc的執(zhí)行過程:

            import httplib

            httplib.HTTPConnection.debuglevel = 1

            image

            image

            posted @ 2009-02-11 22:36 ronliu 閱讀(474) | 評(píng)論 (0)編輯 收藏

                   使用這些api,即使一個(gè)門外漢也可以為自己的網(wǎng)站添加地圖。

                  下面的代碼,將會(huì)創(chuàng)建一個(gè)簡(jiǎn)單的地圖網(wǎng)頁。如:

            <html xmlns=" >
            <head runat="server">
                <title>地圖測(cè)試</title>
                <script language="javascript" src="
            </head>

            <body>
                <form id="form1" runat="server">
                    <div id="myMap" style="position:relative; width:400px; height:300px;"></div>
                    <script language="javascript">
                        var maps = new LTMaps( "myMap" );   //LTMaps類有一個(gè)參數(shù),是該地圖所在div的name
                        maps.cityNameAndZoom( "beijing" , 5 );
                        var c = new LTSmallMapControl();   //簡(jiǎn)單的放大縮小條
                        maps.addControl(c);
                        var point = new LTPoint( 11640969 , 3989945 );//北京
                        var marker = new LTMarker( point );  //一個(gè)標(biāo)記
                        maps.addOverLay( marker );  //將標(biāo)記覆蓋到地圖涂層上
                        var text = new LTMapText( marker );
                        text.setLabel( "我的位置" );
                        maps.addOverLay( text );
                    </script>
                </form>
            </body>
            </html>

            詳細(xì)的API說明在http://api.51ditu.com/docs/index.html可以查詢。

            51API架構(gòu)

            posted @ 2009-02-11 20:25 ronliu 閱讀(374) | 評(píng)論 (0)編輯 收藏
              2009年1月6日
            現(xiàn)象:服務(wù)器端意外退出后馬上重啟,提示端口綁定錯(cuò)誤,端口正在使用中。稍等一會(huì)后再次重啟,可以正常運(yùn)行。
            可以設(shè)置socket的選項(xiàng)為SO_REUSEADDR,使其允許完全重復(fù)的綁定。
                int rc = 1;
                setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (char *)&rc, sizeof(rc));
                bind(fd, (struct sockaddr *) &addr, sizeof(addr));

            setsockopt的函數(shù)原型為:
                   int getsockopt(int s, int level, int optname, void *optval, socklen_t *optlen);
                   int setsockopt(int s, int level, int optname, const void *optval, socklen_t optlen);
                   其中optval為選項(xiàng)的開關(guān)標(biāo)志符,例如我使用rc=1開啟SO_REUSEADDR。

            fcntl 文件控制,file control,譬如控制socket為非阻塞IO,信號(hào)驅(qū)動(dòng)IO等。類似的有ioctl
            posted @ 2009-01-06 11:52 ronliu 閱讀(1418) | 評(píng)論 (0)編輯 收藏
              2009年1月4日
                 (一)感冒了,渾身發(fā)抖,頭疼,胸口疼,胃疼。不注意保暖,以及嚴(yán)重的不規(guī)律飲食帶來的。現(xiàn)在只想早些跑回去鉆被窩加衣服。網(wǎng)絡(luò)小說是不能看了,不規(guī)律的飲食很大程度與此有關(guān),且影響學(xué)習(xí)狀態(tài)。可以多讀一些歷史,政治,經(jīng)濟(jì)方面的書,比如世界通史之類。關(guān)注養(yǎng)生,病殃殃的狀況實(shí)在難受,學(xué)會(huì)調(diào)養(yǎng)自己的身體。有條件的話,可以多鍛煉一些。
                 (二)找工作期間,最遺憾的是,沒有拿得出手的技能,以及拿得出手的成果。在找完工作之后,就開始急于求成,一心想作一個(gè)東西出來,但經(jīng)常是想了卻不做,做時(shí)半途而廢,然后又開始新的想法。很浮躁,急于求成。在今后的三個(gè)月,可以多作技能方面的鍛煉。比如編程語言,能否作到精通?需要鍛煉的技能包括:
                  甲。語言是表達(dá)思想的工具,語言說不好,不精通,再好的思想也表達(dá)不出來。反過來,語言學(xué)得好了,會(huì)促進(jìn)思維的成長。然后,掌握一門專精的語言,也是將來安身立命,向更深層次的架構(gòu)師成長的根本。但就目前,有什么語言是真正拿的出手的?C++是最熟悉的,卻仍然談不上精通。在今后的三個(gè)月,對(duì)C++的深入鍛煉,是重點(diǎn)。
                  乙。在平常的編程中,算法用的似乎并不多,但對(duì)培養(yǎng)計(jì)算機(jī)的思維,培養(yǎng)設(shè)計(jì)能力,很有好處。更高層的,如設(shè)計(jì)模式之類??梢詫⒄Z言的學(xué)習(xí)和算法,設(shè)計(jì)模式的學(xué)習(xí)結(jié)合起來。
                 (三)新的一年,增大一歲。不知不覺,二十好幾?;仡^看時(shí),什么也沒有做成。感情上,學(xué)業(yè)上,以及和家人的關(guān)系,都不如意。這是浮躁的根本原因。但這些問題,卻不是一蹴而就的,需要時(shí)間的積累,需要精力的積累,不是隨想就有的。就像Scott信中的那位技術(shù)總監(jiān),沒有5年甚至5年以上的技術(shù)沉淀,能夠?qū)⒓夹g(shù)玩到如指臂使?淡然,做好自己該做的。清風(fēng)撫山崗,明月照大江。高三畢業(yè)那年,能夠坐在河邊,對(duì)廣場(chǎng)上人來人往充耳不聞,和尚念經(jīng)般默誦這兩句話,心中淡然。年齡增大,考慮增多,卻越來越浮躁了。在浮躁和淡然之間,需要有一個(gè)平衡。
                 (四)做好接下來的三個(gè)月!
            posted @ 2009-01-04 11:13 ronliu 閱讀(339) | 評(píng)論 (0)編輯 收藏
            僅列出標(biāo)題  下一頁
            久久久久久青草大香综合精品| 狠狠色综合久久久久尤物| 色噜噜狠狠先锋影音久久| 久久婷婷五月综合97色直播| 国产精品久久久久aaaa| 久久久久久国产精品免费无码| 中文国产成人精品久久亚洲精品AⅤ无码精品| 日韩乱码人妻无码中文字幕久久| 久久人人爽人爽人人爽av| 青青青伊人色综合久久| 久久精品国产69国产精品亚洲| 国产精品无码久久综合| 久久r热这里有精品视频| 国产成人精品久久免费动漫| 热re99久久精品国产99热| 久久亚洲精品中文字幕三区| 激情久久久久久久久久| 久久久精品人妻无码专区不卡| 天天影视色香欲综合久久| 久久免费看黄a级毛片| 久久99国产综合精品女同| 亚洲综合婷婷久久| 久久久久久久久66精品片| 亚洲色欲久久久综合网| 精品久久久久中文字| 久久午夜无码鲁丝片秋霞 | 热综合一本伊人久久精品 | 国产精品天天影视久久综合网| 久久精品国产色蜜蜜麻豆| 亚洲中文字幕久久精品无码喷水| 久久精品一区二区三区不卡| 亚洲午夜久久久久久久久久| 久久精品国产99国产精品| 精品久久久久中文字幕日本| 久久亚洲高清综合| 精品国产综合区久久久久久| 久久不见久久见免费视频7| 久久久久免费精品国产| 人妻中文久久久久| 一本久久精品一区二区| 午夜精品久久久久9999高清|