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

            Error

            C++博客 首頁 新隨筆 聯(lián)系 聚合 管理
              217 Posts :: 61 Stories :: 32 Comments :: 0 Trackbacks

            #

            cp –a [src] [des]

            ps

            kill –9 [pid]

            Xwin –query [ip]

            gdb –tui

            ssh [user]@[ip]

            scp [local file path] [user]@[ip]:[remote path]

            nm -D [so name]

            posted @ 2012-09-12 13:37 Enic 閱讀(68) | 評論 (0)編輯 收藏

            傳說這就是AGG:

            agg

            要理解這張圖上的幾個概念:

            *vertex source: 頂點源。一切的圖像的世界是由點構(gòu)成的。

            *cordinate conversion pipeline: 坐標(biāo)轉(zhuǎn)換管道。不用自己去擔(dān)心各種坐標(biāo)系?

            *scanline rasterizer: 光柵化,把頂點數(shù)據(jù)處理合成一組組線段,這里可能會有一些fix或者effect。

            *renderers: 渲染器

            *rendering buffer: 用于存放像素點的內(nèi)存

            我的理解是這樣:圖像是以點集的方式存在的,要畫圖先是沖一組點集開始,先把這一組點的坐標(biāo)轉(zhuǎn)換成目標(biāo)坐標(biāo),然后通過光柵化形成一組線段,然后通過渲染器把這一組線段渲染到buffer上面形成面。點->線段->面

            *****************************************************************************************************

            一、vertex source

             

            我理解它是一個concept,官方解釋是這個:

                所有實現(xiàn)了void rewind(unsigned path_id);和unsigned vertex(double* x, double* y);的類。

            agg提供的vertex source concept如下(可以自己擴展):

            ellipse 圓

            arc 弧線

            curve3 curve4 貝塞爾曲線

            gsv_text AGG自帶字模的文字輸出(只支持ASCII碼)

            gsv_text_outline<>  可變換文字,輸入為gsv_text和變換矩陣

            rounded_rect  圓角方形

            path_storage 路徑存儲器,可以用join_path方法加入多個頂點源。

            arrowhead  箭頭

             

            二、coordinate conversion pipeline

                坐標(biāo)轉(zhuǎn)換管道用于改變頂點源產(chǎn)生的頂點,包括坐標(biāo)、命令、產(chǎn)生新頂點等。如對頂點進行矩陣變換、插入頂點形成虛線之類的功能。

            1.變化矩陣 trans_affine

            頭文件:#include <agg_trans_affine.h>

            接口:scale 縮放、rotate旋轉(zhuǎn)、translate平移、矩陣*乘法、invert取反矩陣

            2.坐標(biāo)轉(zhuǎn)換管道

            template<class VertexSource, class Markers = null_markers> struct conv_stroke;

            變成連續(xù)線 構(gòu)造參數(shù)為VertexSource width屬性決定線寬。

            template<class VertexSource, class Markers = null_markers> struct conv_dash;

            虛線

            template<class MarkerLocator, class MarkerShapes> class conv_marker;

            建立標(biāo)記

            template<class VertexSource> struct conv_contour;

            輪廓變換

            template<class VertexSource> struct conv_smooth_poly1_curve;

            圓滑過渡多邊形各頂點

            template<class VertexSource> struct conv_bspline;

            圓滑過渡多義線各頂點

            template<class VertexSource, class Curve3 = curve3, class Curve4 = curve4> class conv_curve;

            可識別VertexSource中的曲線信息

            template<class VertexSource, class Transformer = trans_affine> class conv_transform;

            矩陣變換 用變換矩陣重新計算頂點位置

             

            三、scanline rasterizer

            1.scanline

            掃描線是一種保存span的容器,span用于表示一小條(水平方向)細線。圖像中同一行的span組成一個Scanline

            2.rasterizer

            Rasterizer就是把相當(dāng)于矢量數(shù)據(jù)的一堆頂點和命令轉(zhuǎn)換成一行行的掃描線的設(shè)備,它就象粉刷工人對照著圖紙把彩漆刷到墻上一樣

             

            四、renderers

                渲染器負責(zé)表現(xiàn)掃描線Scanline中的每個線段(span)。在渲染器之前,AGG圖形中的線段是沒有顏色值的,只是位置、長度和覆蓋率(透明度)。渲染器賦于線段色彩,最終成為一幅完整的圖像。

                渲染器被分成底中高三層。其中底層負責(zé)像素包裝,由PixelFormat Renderer實現(xiàn);中層是基礎(chǔ)層,在PixelFormat Renderer的基礎(chǔ)上提供更多方法,是所有高層渲染器依賴的基礎(chǔ),由Base Renderer實現(xiàn);高層負責(zé)渲染Scanline中的線段,由Scanline Renderer等實現(xiàn)。

             

            五、rendering buffer

            Rendering Buffer是一個內(nèi)存塊,用于保存圖像數(shù)據(jù)。這是AGG與顯示器之間的橋梁,我們要顯示AGG圖形實際上就是識別這個內(nèi)存塊并使用系統(tǒng)的API顯示出來 而已(實際上幾乎不需要做轉(zhuǎn)換工作,因為無論是Windows還是Linux,API所用的圖像存儲格式與Rendering Buffer都是兼容的)。

             

            差不多了,其他的東東現(xiàn)在看多了白搭,俺們要在戰(zhàn)斗中學(xué)會戰(zhàn)斗,,,

            posted @ 2012-09-10 16:36 Enic 閱讀(253) | 評論 (0)編輯 收藏

            Module.h
                網(wǎng)狐的“com”工具箱:
            簡單介紹下這個東東,其實我以前分析的時候就說過了,這個設(shè)計看上去很美,其實用起來不那么方便。這不6603就沒有這玩意了。
                網(wǎng)狐的COM接口比較簡單,只有兩個接口
            interface IUnknownEx
              void Release()
              void* QueryInterface(REFGUID guid, DWORD dwQueryVer)
            從這個接口可以看出唯一的外部依賴就是guid 和 dwQueryVer

            在來看那個help工具模版類
            template <typename IModeluInterface> class CTempldateHelper
             //構(gòu)造函數(shù)
             CTempldateHelper(REFGUID Guid, DWORD dwVersion);
             //構(gòu)造函數(shù)
             CTempldateHelper(REFGUID Guid, DWORD dwVersion, LPCTSTR pszModuleDll, LPCSTR pszCreateProc);
            兩個構(gòu)造函數(shù),能看出點什么不,,,
            // 這代表DLL的名,和DLL中創(chuàng)建組件的函數(shù)名,別告訴我你不知道動態(tài)加載dll
            LPCTSTR pszModuleDll, LPCSTR pszCreateProc
            // 這些稀爛班子就是隱藏了動態(tài)加載的過程而已
             //獲取錯誤
             inline LPCTSTR GetErrorDescribe() const;
             //指針重載
             inline IModeluInterface * operator->() const;
             //獲取接口
             inline IModeluInterface * GetInterface() const;

            這樣看起來很美,其實隱藏了太多東西,降低了代碼的可讀性。接口都看不到了,,,坑爹的,,,

            posted @ 2012-08-27 17:07 Enic 閱讀(797) | 評論 (0)編輯 收藏

            其實是可以配置的:

            1.界面上Search后面有個下拉框,選擇Advanced View,之后就會發(fā)現(xiàn)下面多了好多選項。

            cmake

            里面有一個CMAKE_USE_RELATIVE_PATHS的定義,選中它,重新配置收工。

            posted @ 2012-08-01 23:44 Enic 閱讀(1649) | 評論 (0)編輯 收藏

            進入vc命令行  dumpbin
            posted @ 2012-07-18 16:06 Enic 閱讀(172) | 評論 (0)編輯 收藏

            dll加載的時候會開辟 全局變量 靜態(tài)變量 的空間,而且每次loader都會,而且多次loader不共享
            posted @ 2012-07-18 15:45 Enic 閱讀(502) | 評論 (0)編輯 收藏

            #實際上是調(diào)用cmake安裝目錄\share\cmake-2.8\Modules\FindQt4.cmake
            #設(shè)置好一批預(yù)定義的東東
            FIND_PACKAGE(Qt4 REQUIRED)

            # 不解釋
            SET(helloworld_SOURCES main.cpp hellowindow.cpp)
            SET(helloworld_HEADERS hellowindow.h)

            #處理helloworld_HEADERS中的MOC宏,處理結(jié)果生成在helloworld_HEADERS_MOC
            QT4_WRAP_CPP(helloworld_HEADERS_MOC ${helloworld_HEADERS})

            #添加QT頭文件和宏
            INCLUDE(${QT_USE_FILE})
            ADD_DEFINITIONS(${QT_DEFINITIONS})






            **********************************************

            Using CMake to Build Qt Projects

            Written by: Johan Thelin

            Qt comes with the QMake tool for handling cross platform building issues. However, there are other build systems available such as autotools, SCons and CMake. These tools meet different criterias, for example external dependencies.

            When the KDE project shifted from Qt 3 to Qt 4 the project changed build tool from autotools to CMake. This has given CMake a special position in the Qt world &emdash; both from the number of users point and from a feature support and quality point. Seen from a workflow point of view, Qt Creator supports CMake since version 1.1 (1.3 if you want to use a Microsoft toolchain).

            A Basic Example

            In this article we will focus on CMake itself, and how to use it in conjunction with Qt. To do this, let's start with an overview of a simple, but typical CMake-based project. As you can tell from the listing below, the project consists of some source files and a text file.

            $ ls CMakeLists.txt hellowindow.cpp hellowindow.h main.cpp 

            Basically, the CMakeLists.txt file replaces the projectfile used by QMake. To build the project, create a build directory and run cmake and then make from there. The reason for creating a build directory is that CMake has been built with out-of-source building in mind from the very start. It is possible to configure QMake to place intermediate files outside the source, but it requires extra steps. With CMake, it is the default.

            $ mkdir build $ cd build $ cmake .. && make 


            CMake building a basic project.

            The argument given to CMake refers to the directory where the CMakeLists.txt file resides. This file controls the whole build process. In order to fully understand it, it is important to recognize how the build process looks. The figure below shows how the user files: sources, headers, forms and resource files are processed by the various Qt code generators before joining the standard C++ compilation flow. Since QMake was designed to handle this flow, it hides all the details of this flow.


            The Qt build system.

            When using CMake, the intermediate steps must be handled explicitly. This means that headers with Q_OBJECT macros must be run through moc, user interface forms must be processed by uic and resource files must pass through rcc.

            In the example that we started with the world is slightly easier, though. It is limited to a single header file that needs to meet moc. But first, the CMakeLists.txt defines a project name and includes the Qt4 package as a required component.

            PROJECT(helloworld) FIND_PACKAGE(Qt4 REQUIRED) 

            Then all sources involved in the build process are assigned to two variables. The SET command assigns the variable listed first with the values that follow. The names, helloworld_SOURCES and helloworld_HEADERS, is by convention. You can name them either way you like.

            SET(helloworld_SOURCES main.cpp hellowindow.cpp) SET(helloworld_HEADERS hellowindow.h) 

            Notice that the headers only include the headers that needs to be processed by moc. All other headers can be left out of the CMakeLists.txt file. This also implicates that if you add a Q_OBJECT macro to any of your classes you must ensure that it is listed here.

            To invoke moc, the macro QT4_WRAP_CPP is used. It assigns the names of the resulting files to the variable listed first. In this case the line looks as follows.

            QT4_WRAP_CPP(helloworld_HEADERS_MOC ${helloworld_HEADERS}) 

            What happens is that all headers are processed by moc and the names of the resulting source files are listed in the helloworld_HEADERS_MOC variable. Again, the variable name is by convention rather than forced.

            In order to build a Qt application, the Qt include directories needs to be added as well as a range of defines need to be set. This is handled through the commands INCLUDE and ADD_DEFINITIONS.

            INCLUDE(${QT_USE_FILE}) ADD_DEFINITIONS(${QT_DEFINITIONS}) 

            Finally, CMake needs to know the name of the resulting executable and what to link it to. This is conveniently handled by by the commands ADD_EXECUTABLE and TARGET_LINK_LIBRARIES. Now CMake knows what to build, from what and through which steps.

            ADD_EXECUTABLE(helloworld ${helloworld_SOURCES}      ${helloworld_HEADERS_MOC}) TARGET_LINK_LIBRARIES(helloworld ${QT_LIBRARIES}) 

            When reviewing the listing above, it relies on a number of variables starting with QT_. These are generated by the Qt4 package. However, as a developer, you must explicitly refer to them as CMake is not build as tightly to suite Qt as QMake.

            Adding More Qt

            Moving beyond the initial example, we now look at a project with both resources and user interface forms. The resulting application will look quite similar to its predecessor, but all the magic takes place under the hood.

            The CMakeLists.txt file start by naming the project and including the Qt4 package - the complete file can be downloaded as a source code package accompanying this article. Then all the input files are listed and assigned to their corresponding variables.

            SET(helloworld_SOURCES main.cpp hellowindow.cpp) SET(helloworld_HEADERS hellowindow.h) SET(helloworld_FORMS hellowindow.ui) SET(helloworld_RESOURCES images.qrc) 

            The new file types are then handled by QT4_WRAP_UI and QT4_ADD_RESOURCES. These macros operate in the same ways as QT4_WRAP_CPP. This means that the resulting files are assigned to variable given as the left-most argument. Notice that the header files generated by uic are needed as we need to build a dependency relationship between them and the final executable. Otherwise they will not be created.

            QT4_WRAP_CPP(helloworld_HEADERS_MOC ${helloworld_HEADERS}) QT4_WRAP_UI(helloworld_FORMS_HEADERS ${helloworld_FORMS}) QT4_ADD_RESOURCES(helloworld_RESOURCES_RCC ${helloworld_RESOURCES}) 

            All the resulting files are then added as dependencies to the ADD_EXECUTABLE macro. This includes the uic generated headerfiles. This establishes the dependency from the executable to the hellowindow.ui file through the intermediary ui_hellowindow.h header.

            ADD_EXECUTABLE(helloworld ${helloworld_SOURCES}      ${helloworld_HEADERS_MOC}      ${helloworld_FORMS_HEADERS}      ${helloworld_RESOURCES_RCC}) 

            Before this file can be used to build the project there is a small caveat to handle. As all intermediate files are generated outside the source tree, the header file generated by uic will not be located by the compiler. In order to handle this, the build directory needs to be added to the list of include directories.

            INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}) 

            With this line, all intermediary files will be available in the include path.

            Qt Modules

            Until now we have relied on the QtCore and QtGui modules. To be able to use more modules, the CMake environment must be tuned to enable them. By setting them to TRUE using the SET command, the included modules can be controlled.

            For instance, to enable OpenGL support add the following line to your CMakeLists.txt.

            SET(QT_USE_QTOPENGL TRUE) 

            The most commonly used modules are controlled using the following variables.

            • QT_USE_QTNETWORK
            • QT_USE_QTOPENGL
            • QT_USE_QTSQL
            • QT_USE_QTXML
            • QT_USE_QTSVG
            • QT_USE_QTTEST
            • QT_USE_QTDBUS
            • QT_USE_QTSCRIPT
            • QT_USE_QTWEBKIT
            • QT_USE_QTXMLPATTERNS
            • QT_USE_PHONON

            In addition to these, the variable QT_DONT_USE_QTGUI can be used to disable the use to QtGui. There is a similar variable to disable QtCore, but that is more to be feature complete than to actually add much useful value.

            Added Value and Complexity

            It is not as trivial to use CMake as QMake, but the rewards are more features. The most notable point when moving from QMake is CMake's built in support for out-of-source builds. It can really change habits, and thus make versioning code much easier.

            It is also possible to add conditionals for various platforms and build scenarios. For instance, use different libraries for different platforms, as well as tuning the same project differently for different situations.

            Other powerful features are the ability to generate multiple executables and libraries in one build as well as using said executables and libraries in the same build. This, in combination with the QtTest module can handle complex build situations from a single configuration.

            The choice between CMake and QMake is really quite easy. For straight forward Qt projects, QMake is the obvious choice. When the build requirements passes the complexity threshold for QMake, CMake can take its place. With Qt Creator's support for CMake, the same tools can still be used.

            posted @ 2012-07-16 12:24 Enic 閱讀(2646) | 評論 (0)編輯 收藏

            1.獲取當(dāng)前路徑:os.getcwd();

            2.獲取指定目錄文件/文件夾列表:os.listdir(path)

            /////////////////////////////////////////////////////////////////

            順便粘一點相關(guān)的東東

            ////////////////////////////////////////////////////////////////

            os.walk()
            函數(shù)聲明:walk(top,topdown=True,onerror=None)
            1>參數(shù)top表示需要遍歷的目錄樹的路徑
            2>參數(shù)topdown的默認值是"True",表示首先返回目錄樹下的文件,然后在遍歷目錄樹的子目錄.Topdown的值為"False"時,則表示先遍歷目錄樹的子目錄,返回子目錄下的文件,最后返回根目錄下的文件
            3>參數(shù)onerror的默認值是"None",表示忽略文件遍歷時產(chǎn)生的錯誤.如果不為空,則提供一個自定義函數(shù)提示錯誤信息后繼續(xù)遍歷或拋出異常中止遍歷
            4>該函數(shù)返回一個元組,該元組有3個元素,這3個元素分別表示每次遍歷的路徑名,目錄列表和文件列表
            os,walk()實例:
            import os
            def VisitDir(path):
            for root,dirs,files in os.walk(path):
            for filespath in files:
            print os.path.join(root,filespath)
            if __name__=="__main__":
            path="/root"
            VisitDir(path)
            os.path.walk()
            函數(shù)聲明:walk(top,func,arg)
            1>參數(shù)top表示需要遍歷的目錄樹的路徑
            2>參數(shù)func表示回調(diào)函數(shù),對遍歷路徑進行處理.所謂回調(diào)函數(shù),是作為某個函數(shù)的參數(shù)使用,當(dāng)某個時間觸發(fā)時,程序?qū)⒄{(diào)用定義好的回調(diào)函數(shù)處理某個任務(wù).回調(diào)函數(shù)必須提供3個參數(shù):第1個參數(shù)為walk()的參數(shù)tag,第2個參數(shù)表示目錄列表,第3個參數(shù)表示文件列表
            3>參數(shù)arg是傳遞給回調(diào)參數(shù)func的元組.回調(diào)函數(shù)的一個參數(shù)必須是arg,為回調(diào)函數(shù)提供處理參數(shù).參數(shù)arg可以為空
            os.path.walk()實例:
            import os,os.path
            def VisitDir(arg,dirname,names):
            for filespath in name:
            print os.path.join(dirname,filespath)
            if __name__=="__main__":
            path="/root"
            os.path.walk(path,VisitDir,())
            os.path.walk()與os.walk()產(chǎn)生的文件名列表并不相同.os.path.walk()產(chǎn)生目錄樹下的目錄路徑和文件路徑,而os.walk()只產(chǎn)生文件路徑
            如下面的例程:
            1 # -*- coding: utf-8 -*-
            2 import os
            3 for root, dirs, files in os.walk('/media/cdrom0'):
            4 open('mycd.cdc', 'a').write("%s %s %s" % (root,dirs,files))
            完成的功能是講/media/cdrom0下的目錄文件寫入到mycd.cdc中。
            代碼解釋:
            1. 聲明是 utf-8 編碼文本;

            2. 引入了 os 模塊;

            3. 使用os.walk() 掃描光盤,并返回三個對象;

            4. 使用open()打開mycd.cdc 文件對象,并聲明成追加模式,逐行記錄以上三個對象。

            posted @ 2012-07-12 23:54 Enic 閱讀(456) | 評論 (0)編輯 收藏

                很久以前就知道emacs在Linux上的默認路徑是×××默認名字是.emacs;

                但是Windows上折騰起來就很麻煩,首先是自己手動傻逼的去創(chuàng)建.emacs無法創(chuàng)建,然后一陣百度谷歌知道名字叫_emacs了突然發(fā)現(xiàn),還是沒用,,,繼續(xù)一陣搜索什么該注冊表啊什么的都來了,,,

             

                今天介紹一種簡單的找默認配置文件路徑的辦法:

            1)啟動emacs

            2)單擊options菜單 –> 單擊下拉中的 “Active Region H,,,”

            3)單擊options菜單 –> 單擊下拉中的 “Save Options”

            4)恩,現(xiàn)在你應(yīng)該能看到配置文件路徑了,,,下面命令或者說叫狀態(tài)欄?就會顯示了

             

             

             

            S2:

            VBYXILFEX_{21L[MSU6W213

            S3:

            image

            S4:

            image

            posted @ 2012-07-04 23:13 Enic 閱讀(603) | 評論 (0)編輯 收藏

            官方文檔:

            FTP Custom Commands

            Not all protocols are HTTP-like, and thus the above may not help you when you want to make, for example, your FTP transfers to behave differently.

            Sending custom commands to a FTP server means that you need to send the commands exactly as the FTP server expects them (RFC 959 is a good guide here), and you can only use commands that work on the control-connection alone. All kinds of commands that require data interchange and thus need a data-connection must be left to libcurl's own judgement. Also be aware that libcurl will do its very best to change directory to the target directory before doing any transfer, so if you change directory (with CWD or similar) you might confuse libcurl and then it might not attempt to transfer the file in the correct remote directory.

            A little example that deletes a given file before an operation:

            headers = curl_slist_append(headers, "DELE file-to-remove");

            /* pass the list of custom commands to the handle */  curl_easy_setopt(easyhandle, CURLOPT_QUOTE, headers);

            curl_easy_perform(easyhandle); /* transfer ftp data! */

            curl_slist_free_all(headers); /* free the header list */

            If you would instead want this operation (or chain of operations) to happen _after_ the data transfer took place the option to curl_easy_setopt(3) would instead be called CURLOPT_POSTQUOTE and used the exact same way.

            The custom FTP command will be issued to the server in the same order they are added to the list, and if a command gets an error code returned back from the server, no more commands will be issued and libcurl will bail out with an error code (CURLE_QUOTE_ERROR). Note that if you use CURLOPT_QUOTE to send commands before a transfer, no transfer will actually take place when a quote command has failed.

            If you set the CURLOPT_HEADER to 1, you will tell libcurl to get information about the target file and output "headers" about it. The headers will be in "HTTP-style", looking like they do in HTTP.

            The option to enable headers or to run custom FTP commands may be useful to combine with CURLOPT_NOBODY. If this option is set, no actual file content transfer will be performed.

            FTP Custom CUSTOMREQUEST

            If you do want to list the contents of a FTP directory using your own defined FTP command, CURLOPT_CUSTOMREQUEST will do just that. "NLST" is the default one for listing directories but you're free to pass in your idea of a good alternative.

             

            中文:

            FTP自定義命令

            并不是所以的協(xié)議都像HTTP那樣,通過消息頭來告訴服務(wù)器如何處理請求。對于FTP,你就要使用另外的方式來處理。

            發(fā)送自定義的命令到ftp服務(wù)器,意味著你發(fā)送的命令必須是能被ftp服務(wù)器理解的命令(FTP協(xié)議中定義的命令,參考rfc959)。

            下面是一個簡單的例子,在文件傳輸操作操作之前刪除指定文件:

            headers = curl_slist_append(headers, "DELE file-to-remove"); /* pass the list of custom commands to the handle */ curl_easy_setopt(easyhandle, CURLOPT_QUOTE, headers); //curl_easy_setopt(easyhandle, CURLOPT_POSTQUOTE, headers); // 在數(shù)據(jù)傳輸之后操行刪除操作
            curl_easy_perform(easyhandle); /* transfer ftp data! */ curl_slist_free_all(headers); /* free the header list */

            FTP服務(wù)器執(zhí)行命令的順序,同這些命令被添加到列表中順序是一致的。發(fā)往服務(wù)器的命令列表中,只要有一個命令執(zhí)行失敗,ftp服務(wù)器就會返回一個錯誤代碼,此時libcurl將直接返回CURLE_QUOTE_ERROR,不再執(zhí)行剩余的FTP命令。

            將CURLOPT_HEADER設(shè)置為1,libcurl獲取目標(biāo)文件的信息,并以HTTP消息頭的樣式來輸出消息頭。

            FTP自定義CUSTOMREQUEST

            使用CURLOPT_CUSTOMREQUEST屬性,可以向FTP服務(wù)器發(fā)送命令。”NLST”是ftp默認的列出文件列表的命令。 下面的代碼用于列出FTP服務(wù)器上的文件列表:

            int main(int argc, char **argv) { curl_global_init(CURL_GLOBAL_WIN32); CURL *easy_handle = curl_easy_init(); curl_easy_setopt(easy_handle, CURLOPT_URL, "ftp://127.0.0.1/");curl_easy_setopt(easy_handle, CURLOPT_CUSTOMREQUEST, "NLST");
            curl_easy_perform(easy_handle); curl_easy_cleanup(easy_handle); curl_global_cleanup(); return 0; }
            posted @ 2012-06-29 00:14 Enic 閱讀(583) | 評論 (0)編輯 收藏

            僅列出標(biāo)題
            共22頁: First 14 15 16 17 18 19 20 21 22 
            国产成人精品久久亚洲高清不卡| 欧美一级久久久久久久大片| 久久精品国产亚洲AV无码娇色| 精品少妇人妻av无码久久| 久久中文骚妇内射| 国产亚洲色婷婷久久99精品91| 中文国产成人精品久久亚洲精品AⅤ无码精品| 亚洲精品无码久久久久AV麻豆| 久久妇女高潮几次MBA| 青青草原精品99久久精品66| 久久综合狠狠综合久久激情 | 亚洲AV无码成人网站久久精品大| 久久久久久久久无码精品亚洲日韩| 免费观看久久精彩视频| 久久九九兔免费精品6| 大伊人青草狠狠久久| 99久久综合国产精品免费| 国产亚洲美女精品久久久久狼| 伊人久久成人成综合网222| 狠狠色丁香婷婷综合久久来| 国产激情久久久久久熟女老人| 久久99精品久久久久久9蜜桃 | 久久久久亚洲AV成人片| 午夜精品久久久久9999高清| 99久久人人爽亚洲精品美女| 日本强好片久久久久久AAA| 久久精品极品盛宴观看| 久久久精品国产亚洲成人满18免费网站| 少妇人妻88久久中文字幕| 久久亚洲国产成人影院| 久久人人超碰精品CAOPOREN| 久久亚洲综合色一区二区三区 | 久久久久亚洲AV无码专区体验| 天堂无码久久综合东京热| 国产精品99久久久久久www| 2021久久国自产拍精品| 色婷婷综合久久久中文字幕| 少妇内射兰兰久久| 国产午夜精品久久久久免费视 | 国产69精品久久久久99| 久久精品成人免费网站|