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

            Onway

            我是一只菜菜菜菜鳥(niǎo)...
            posts - 61, comments - 56, trackbacks - 0, articles - 34

            2017年2月11日

            一,matplotlib是什么

            python中用于數(shù)據(jù)庫(kù)可視化的2D繪圖庫(kù)。


            二,安裝

            http://matplotlib.org/users/installing.html


            三,交互模式與非交互模式

            1,非交互模式

            python shell里面執(zhí)行

            import matplotlib.pyplot as plt
            plt.plot([12])
            plt.show()

            執(zhí)行show之后會(huì)打開(kāi)一個(gè)GUI窗口顯示,同時(shí)交互命令會(huì)阻塞。



            2,交互模式

            matplotlib.is_interactive()可以查看當(dāng)前是否在交互模式;

            matplotlib.pyplot.ion()用于打開(kāi)交互模式;

            matplotlib.pyplot.ioff()用于關(guān)閉交互模式;

            import matplotlib.pyplot as plt
            plt.ion()
            plt.plot([12])

            執(zhí)行plot之后打開(kāi)了一個(gè)GUI窗口,交互命令沒(méi)有阻塞,繼續(xù)執(zhí)行:

            plt.plot([23])

            可以看到在窗口里面再畫(huà)了一條線。

            也就是在非交互模式,需要一次畫(huà)好再調(diào)用show顯示;而交互模式在每次繪制后都能實(shí)時(shí)看到效果。


            3,ipython的magic command 

            在ipython的%matplotlib也可以打開(kāi)交互模式。

            在交互模式中如果某些修改沒(méi)有自動(dòng)刷新,可以調(diào)用matplotlib.pyplot.draw()刷新。


            四,在jupyter notebook中使用matplotlib

            1,%matplotlib

            以交互模式打開(kāi)獨(dú)立的GUI窗口,對(duì)同一個(gè)figure的繪制都自動(dòng)刷新到對(duì)應(yīng)的GUI窗口。


            2,%matplotlib notebook

            同%matplotlib,只是會(huì)將GUI窗口嵌入到cell的輸出。



            3,%matplotlib inline

            將繪制的圖轉(zhuǎn)換為靜態(tài)圖片嵌入到cell的輸出。在不同的cell進(jìn)行繪制效果不會(huì)疊加。




            五,figure的各個(gè)組成部分

            http://matplotlib.org/faq/usage_faq.html#parts-of-a-figure


            六,matplotlib的兩種繪圖接口

            1matlab風(fēng)格接口

            所有的plt命令都會(huì)應(yīng)用到自動(dòng)創(chuàng)建的當(dāng)前figureaxes對(duì)象。使用plt.gcfplt.gca獲取當(dāng)前figureaxes

            調(diào)用plt.plot([1, 2])即繪制到自動(dòng)創(chuàng)建的figureaxes

            plt.plot([12])
            plt.plot([21])


            2,面向?qū)ο蠼涌?/span>

            顯式獲得繪制對(duì)象,在特定對(duì)象執(zhí)行相應(yīng)操作。

            fig, ax = plt.subplots()
            ax.plot([12])
            ax.plot([21])


            3,差別

            對(duì)于簡(jiǎn)單繪制兩種接口的差別不大,復(fù)雜情況面向?qū)ο蠼涌跁?huì)更合適。

            另外plt的很多函數(shù)都可以直接轉(zhuǎn)為ax的函數(shù),例如plt.plot() -> ax.plot(),但某些會(huì)有差別,例如plt.xlabel() -> ax.set_xlabel()


            七,各類(lèi)圖形demo

            http://matplotlib.org/gallery.html


            八,API

            http://matplotlib.org/api/index.html



            參考:

            1http://matplotlib.org/index.html#

            2http://matplotlib.org/faq/usage_faq.html#what-is-interactive-mode

            3http://jupyter.org

            4http://www.labri.fr/perso/nrougier/teaching/matplotlib/#introduction

            5http://nbviewer.jupyter.org/github/jakevdp/PythonDataScienceHandbook/blob/master/notebooks/04.00-Introduction-To-Matplotlib.ipynb#Two-Interfaces-for-the-Price-of-One

            posted @ 2017-02-11 15:12 Onway 閱讀(1648) | 評(píng)論 (0)編輯 收藏

            2016年2月15日

            一晃N年過(guò)去了。

            windows的有道詞典都不知道升級(jí)到哪個(gè)版本了。
            linux的有道詞典官方版本也出來(lái)了。
            goldendict已經(jīng)1.5版本了。

            博客上幾個(gè)月前居然還有一條關(guān)于這個(gè)東西的評(píng)論。
            將代碼找回來(lái)試了一下居然還能跑,有道的api和xml格式還是真是穩(wěn)定啊。

            簡(jiǎn)單修改了一下install腳本,重寫(xiě)了README,收到github了:
            原1.3版本:

            posted @ 2016-02-15 19:57 Onway 閱讀(2110) | 評(píng)論 (2)編輯 收藏

            2016年2月12日

            背景
            前段時(shí)間在digitalocean租了vps搭建shadowsocks,簡(jiǎn)單看了一下socks5協(xié)議,決定自己也造一個(gè)小輪子玩玩。
            春節(jié)在家整理了一下代碼,大神輕拍。
            功能
            代碼是c++,在linux基于perfork+select實(shí)現(xiàn)的,目前的功能有:
            • TCP代理
            • 遠(yuǎn)程DNS
            • 用戶(hù)驗(yàn)證
            • 數(shù)據(jù)加密

            過(guò)程
            開(kāi)發(fā)調(diào)試的過(guò)程發(fā)現(xiàn)兩點(diǎn)比較有意思:
            1. 偶爾會(huì)收到RST的數(shù)據(jù)包,查看代碼日志,用tcpdump在兩端抓包并無(wú)發(fā)現(xiàn)異常
            2. 訪問(wèn)某些網(wǎng)站總是會(huì)收到RST數(shù)據(jù)包造成無(wú)法訪問(wèn)
            對(duì)上述第二點(diǎn)加入了非常簡(jiǎn)單的數(shù)據(jù)加密后就解決了哈,shadowsocks的加密應(yīng)該就是這么用的吧。

            缺陷
            功能上沒(méi)有支持UDP,ie和chrome瀏覽器似乎都不支持socks5,只能先用著firefox了。
            在windows也用c#做了一個(gè)客戶(hù)端,但無(wú)暇顧及已經(jīng)好久沒(méi)更新了。

            其他
            可能跟所用寬帶有關(guān),訪問(wèn)digitalocean的時(shí)延超過(guò)300ms,網(wǎng)站只能打開(kāi)首頁(yè),登錄頁(yè)面都加載不全,慎用。
            前些天收到郵件說(shuō)是vps出現(xiàn)流量異常被關(guān)閉了,還無(wú)法登錄管理頁(yè)面,用lantern也一直連不上。(T_T)

            posted @ 2016-02-12 17:50 Onway 閱讀(2173) | 評(píng)論 (0)編輯 收藏

            2015年12月8日

            1, 三個(gè)標(biāo)準(zhǔn)
            1.1, ISO C標(biāo)準(zhǔn)由ISO/IEC維護(hù)開(kāi)發(fā)
            最新版本是C11,共有29個(gè)標(biāo)準(zhǔn)頭文件。

            1.2, POSIX是一系列由IEEE制定的標(biāo)準(zhǔn)
            POSIX包括ISO C標(biāo)準(zhǔn)庫(kù)函數(shù)。
            POSIX標(biāo)準(zhǔn)的1988版本是IEEE 1003.1-1988,經(jīng)過(guò)修改后作為IEEE Std.1003.1-1990提交ISO,成為國(guó)際標(biāo)準(zhǔn)ISO/IEC 9945-1:1990,該標(biāo)準(zhǔn)通常稱(chēng)為POSIX.1。
            當(dāng)前最新版本是POSIX.1-2008,由IEEE和Open Group共同開(kāi)發(fā)。

            1.3, SUS是POSIX的超集,其系統(tǒng)接口全集稱(chēng)為XSI
            The core specifications of the SUS are developed and maintained by the Austin Group, which is a joint working group of IEEE, ISO JTC 1 SC22 and The Open Group.
            只有遵循XSI的實(shí)現(xiàn)才能稱(chēng)為UNIX系統(tǒng)。
            當(dāng)前的最新版本是SUSv4。

            1.4, 找到一些網(wǎng)址
            C11
            http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=57853

            POSIX.1-2008
            http://pubs.opengroup.org/onlinepubs/9699919799/
            https://standards.ieee.org/findstds/standard/1003.1-2008.html

            SUSv4
            https://www2.opengroup.org/ogsys/jsp/publications/PublicationDetails.jsp?publicationid=12310
            https://en.wikipedia.org/wiki/Single_UNIX_Specification#cite_note-11

            2, 限制
            2.1 兩種限制
            編譯時(shí)限制和運(yùn)行時(shí)限制。
            編譯時(shí)限制通過(guò)頭文件獲取;
            不與文件或目錄相關(guān)的運(yùn)行時(shí)限制通過(guò)sysconf函數(shù)獲取;
            與文件或目錄相關(guān)的運(yùn)行時(shí)限制通過(guò)pathconf和fpathconf函數(shù)獲取。

            2.2 ISO C限制
            都是編譯時(shí)限制,主要定義在<limits.h>里面。
            http://en.cppreference.com/w/c/types/limits

            2.3 POSIX限制和XSI限制
            書(shū)中列出的都是實(shí)現(xiàn)中必須支持的各種最小值,特定系統(tǒng)實(shí)際支持的限制值需要通過(guò)頭文件或者三個(gè)函數(shù)函數(shù)獲取。
            三個(gè)函數(shù)的name參數(shù)是限制名前面加_SC_或者_(dá)PC_前綴得到。
            http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html

            2.4 書(shū)中代碼
            /*
             * If  name  is  invalid, -1 is returned, and errno is set to EINVAL.
             * Otherwise, the value returned is the value of the system resource and errno is not changed.
             * In the case of options, a positive value is returned if a queried option is available, and -1 if it is not.
             * In the case of limits, -1 means that there is no definite limit.
            */

            #include 
            "apue.h"
            #include 
            <errno.h>
            #include 
            <limits.h>

            #ifdef OPEN_MAX
            static long openmax = OPEN_MAX;
            #else
            static long openmax = 0;
            #endif

            /*
             * If OPEN_MAX is indeterminate, we're not
             * guaranteed that this is adequate
             
            */
            #define OPEN_MAX_GUESS 256

            long
            open_max(
            void)
            {
                
            if (openmax == 0) { /* first time through */
                    errno 
            = 0;
                    
            if ((openmax = sysconf(_SC_OPEN_MAX)) < 0) {
                        
            if (errno == 0)
                            openmax 
            = OPEN_MAX_GUESS; /* it's indeterminate */
                        
            else
                            err_sys(
            "sysconf error for _SC_OPEN_MAX";)
                    }
                }

                
            return(openmax);
            }

            3, 選項(xiàng)
            3.1, 選項(xiàng)確定方式
            編譯時(shí)選項(xiàng)定義在<unistd.h>中;
            與文件或目錄無(wú)關(guān)的選項(xiàng)用sysconf確定;
            與文件或目錄有關(guān)的選項(xiàng)用pathconf或者fpathconf確定;
            http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/unistd.h.html

            3.2, 選項(xiàng)確定流程
            如果符號(hào)常量未定義,
            對(duì)_POSIX前綴的選項(xiàng),將_POSIX前綴替換為_(kāi)SC或_PC前綴,
            對(duì)_XOPEN前綴的選項(xiàng),在_XOPEN前面加上_SC或_PC前綴,
            然后調(diào)用sysconf, pathconf或fpathconf函數(shù)。
            如果符號(hào)常量已經(jīng)定義,則有三種可能:
            值為-1,不支持相應(yīng)的選項(xiàng);
            值大于0,支持相應(yīng)的選項(xiàng);
            值為0,需調(diào)用函數(shù)確定選項(xiàng)是否支持。
            注:某些系統(tǒng)可能出現(xiàn)定義了符號(hào)常量,但沒(méi)有定義值的情況。

            3.4, 代碼示例
            先占坑。

            4, 功能測(cè)試宏
            Feature test macros allow the programmer to control the definitions that are exposed by system header files when a program is compiled.
            NOTE:  In  order  to be effective, a feature test macro must be defined before including any header files.  This can be done either in the compilation command (cc -DMACRO=value) or by defining the macro within the source code before including any headers.
            see man page feature_test_macros(7).

            posted @ 2015-12-08 22:35 Onway 閱讀(436) | 評(píng)論 (0)編輯 收藏

            2015年12月6日

            1, shadowsocks home page
            https://shadowsocks.org/en/index.html

            2, install shadowsocks server
            $ sudo apt-get install python-pip
            $ sudo pip install shadowsocks
            https://shadowsocks.org/en/download/servers.html

            3, shadowsocks server config file
            $ vi /etc/shadowsocks.json
            {
                "server":"my_server_ip",
                "server_port":8388,
                "local_port":1080,
                "password":"barfoo!",
                "timeout":600,
                "method":"table"
            }
            https://shadowsocks.org/en/config/quick-guide.html

            4, shadowsocks server command
            $ ssserver -h // help message
            $ ssserver -c /etc/shadowsocks.json -d start // start in daemon mode
            $ ssserver -d stop // stop the server

            5, shadowsocks-qt5 client for ubuntu 14.04
            $ sudo add-apt-repository ppa:hzwhuang/ss-qt5
            $ sudo apt-get update
            $ sudo apt-get install shadowsocks-qt5
            https://github.com/shadowsocks/shadowsocks-qt5/wiki/Installation

            6, install genpac to generate PAC file from gfwlist
            $ sudo pip install genpac // install
            $ genpac --init // generate config.ini and user-rules.txt
            -- modify config.ini
            $ vi config.ini
            [config]
            proxy = SOCKS5 127.0.0.1:1080
            gfwlist-url = https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt
            user-rule-from = /path/to/user-rules.txt
            output = /path/to/proxy.pac
            $ genpac -c config.ini // generate pac file
            https://github.com/JinnLynn/genpac
            https://github.com/gfwlist/gfwlist

            7, using a PAC file in Firefox
            about:preferences#advanced -> Network -> Settings
            check 'Automatic proxy configuration URL:'
            file:///path/to/proxy.pac
            enable 'Remote DNS'
            https://www.youtube.com/watch?v=nKB4FoPw15k

            posted @ 2015-12-06 17:18 Onway 閱讀(247) | 評(píng)論 (0)編輯 收藏

            2015年8月1日

                 摘要: 1,最先學(xué)會(huì)的是,繼承了IEnumerable接口的類(lèi)都可以使用foreach遍歷,但一直沒(méi)有多想。2,IEnumerable和IEnumerable<out T>的定義:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->  &nb...  閱讀全文

            posted @ 2015-08-01 14:00 Onway 閱讀(601) | 評(píng)論 (1)編輯 收藏

            2015年7月29日

            1,兩個(gè)鏈接里面已經(jīng)解析完Dispose模式了,其他的只是自己的一些理解。

            2,如果自定義類(lèi)型封裝了非托管資源,或者引用了一個(gè)封裝了非托管資源的對(duì)象時(shí)(比如引用了SqlConnection對(duì)象),應(yīng)該實(shí)現(xiàn)Dispose模式。

            3,如果自定義類(lèi)型繼承的基類(lèi)需要Dispose,但該對(duì)象本身并沒(méi)有需要Dispose的資源時(shí)(比如只是附加了一些簡(jiǎn)單類(lèi)型),無(wú)需考慮Dispose模式。

            4,如果基類(lèi)實(shí)現(xiàn)了Dispose,則其派生類(lèi)只需重寫(xiě)protected級(jí)別的Dispose方法,釋放本類(lèi)型的使用到的資源。
            public級(jí)別的Dispose和Finalize方法都來(lái)自繼承。
            重寫(xiě)的Dispose方法,記得最后調(diào)用基類(lèi)帶參的Dispose。

            5,附加的Close方法都是直接調(diào)用public無(wú)參的Dispose方法。

            6,類(lèi)型的析構(gòu)函數(shù)會(huì)被編譯器改為Finalize方法,不要重載這個(gè)方法。
            基類(lèi)的Finalize方法總是會(huì)被自動(dòng)調(diào)用的。
            Finalize方法都不應(yīng)該引用任何對(duì)象。

            7,不懂這段話,既然基類(lèi)沒(méi)有需要釋放的資源,為何要實(shí)現(xiàn)Dispose模式,而為了性能考慮,又不寫(xiě)析構(gòu)函數(shù)?
            那我的派生類(lèi),還要先看一下基類(lèi),再?zèng)Q定要不要寫(xiě)析構(gòu)函數(shù)?
            Implement the dispose design pattern on a base type that commonly has derived types that hold onto resources, even if the base type does not. If the base type has a Close method, often this indicates the need to implement Dispose. In such cases, do not implement a Finalize method on the base type. Finalize should be implemented in any derived types that introduce resources that require cleanup.

            8,對(duì)象在調(diào)用Dispose之后,除了Dispose以外,都應(yīng)該拋出ObjectDisposedException異常。

            9,實(shí)現(xiàn)了Finalize的對(duì)象,在第一次垃圾回收的時(shí)候,不會(huì)釋放對(duì)象,而只是調(diào)用其Finalize方法,第二次回收才會(huì)真正釋放對(duì)象。

            posted @ 2015-07-29 22:50 Onway 閱讀(718) | 評(píng)論 (0)編輯 收藏

            因?yàn)槟承┰颍恢庇玫亩际?NET2,但渣也總得有些追求是不,說(shuō)不定哪天就用上了呢?

            using System;
            using System.Collections.Generic;
            using System.Text;

            namespace ConsoleApplicationTest
            {
                /*
                 * 變體泛型
                 *
                 * .NET4,在泛型接口類(lèi)型或者泛型委托類(lèi)型里面,
                 * 被關(guān)鍵字in聲明的泛型參數(shù),其類(lèi)型可以從父類(lèi)向子類(lèi)逆變,只能用作輸入?yún)?shù)
                 * 被關(guān)鍵字out聲明的泛型參數(shù),其類(lèi)型可以從子類(lèi)向父類(lèi)協(xié)變,只能用于返回值
                 * 整個(gè)泛型類(lèi)型是不限于用作輸入?yún)?shù)還是作為返回值
                 *
                 * interface IType_IN_OUT<in T1, out T2>
                 * IType_IN_OUT<Farmer, Person> farmerPersonType = null;
                 * IType_IN_OUT<Person, Farmer> personfarmerType = null;
                 * farmerPersonFinder = personFarmerFinder;
                 *
                 * 為什么不支持“變體”class呢?跟字段有關(guān)系么?
                 
            */

                class Program
                {
                    static void Main(string[] args)
                    {
                        IType_IN<Person> person_in = null;
                        IType_IN<Farmer> farmer_in = null;
                        farmer_in = person_in;
                        Greeting(person_in);
                        Console.WriteLine(GetTypeIn() == null);

                        IType_OUT<Person> person_out = null;
                        IType_OUT<Farmer> farmer_out = null;
                        person_out = farmer_out;
                        Greeting(farmer_out);
                        Console.WriteLine(GetTypeOut() == null);

                        Finder_IN<Person> personFinderIn = p => Console.WriteLine(p.GetType());
                        Finder_IN<Farmer> farmerFinderIn = f => Console.WriteLine(f.GetType());
                        farmerFinderIn = personFinderIn;
                        Greeting(personFinderIn);
                        Console.WriteLine(GetFarmerFinder().GetType());

                        Finder_OUT<Person> personFinderOut = () => new Person();
                        Finder_OUT<Farmer> farmerFinderOut = () => new Farmer();
                        personFinderOut = farmerFinderOut;
                        Greeting(personFinderOut);
                        Console.WriteLine(GetPersonFinder().GetType());

                        Finder_IN_OUT<Farmer, Person> farmerPersonFinder = f => new Person();
                        Finder_IN_OUT<Person, Farmer> personFarmerFinder = p => new Farmer();
                        farmerPersonFinder = personFarmerFinder;

                        // interface IType_IN_OUT<in T1, out T2>
                        IType_IN_OUT<Farmer, Person> farmerPersonType = null;
                        IType_IN_OUT<Person, Farmer> personfarmerType = null;
                        farmerPersonType = personfarmerType;

                        Console.ReadKey();
                    }

                    static void Greeting(IType_OUT<Person> person)
                    {
                        Console.WriteLine(person == null);
                    }

                    static void Greeting(IType_IN<Farmer> farmer)
                    {
                        Console.WriteLine(farmer == null);
                    }

                    static IType_OUT<Person> GetTypeOut()
                    {
                        IType_OUT<Farmer> farmer = null;
                        return farmer;
                    }

                    static IType_IN<Farmer> GetTypeIn()
                    {
                        IType_IN<Person> person_IN = null;
                        return person_IN;
                    }

                    static void Greeting(Finder_OUT<Person> personFinder)
                    {
                        Console.WriteLine(personFinder().GetType());
                    }

                    static void Greeting(Finder_IN<Farmer> farmerFinder)
                    {
                        Console.WriteLine(farmerFinder.GetType());
                    }

                    static Finder_OUT<Person> GetPersonFinder()
                    {
                        Finder_OUT<Farmer> farmerFinder = () => new Farmer();
                        return farmerFinder;
                    }

                    static Finder_IN<Farmer> GetFarmerFinder()
                    {
                        Finder_IN<Person> person = p => Console.WriteLine(p.GetType());
                        return person;
                    }
                }

                interface IType_OUT<out T>
                {
                }

                interface IType_IN<in T>
                {
                }

                interface IType_IN_OUT<in T1, out T2>
                {
                }

                delegate T Finder_OUT<out T>();

                delegate void Finder_IN<in T>(T t);

                delegate T2 Finder_IN_OUT<in T1, out T2>(T1 t1);

                class Person
                {
                }

                class Farmer : Person
                {
                }
            }

            posted @ 2015-07-29 20:23 Onway 閱讀(375) | 評(píng)論 (0)編輯 收藏

            2015年7月19日

            需求:
            地圖上Grid對(duì)象表示一個(gè)40*40的柵格,除了經(jīng)緯度以外,還有一個(gè)指標(biāo)值如信號(hào)強(qiáng)度,以及一個(gè)根據(jù)指標(biāo)值確定的渲染顏色。
            Road對(duì)象是一條矢量道路,由多個(gè)經(jīng)緯度點(diǎn)組成。
            如果道路穿過(guò)某個(gè)柵格,則將穿過(guò)柵格的那一小段道路按柵格的顏色值畫(huà)出來(lái),沒(méi)有穿過(guò)柵格的其他道路部分,用黑色渲染。

            第一次做法:
            對(duì)道路進(jìn)行預(yù)處理,將道路上的各個(gè)點(diǎn)歸類(lèi)到其所屬的柵格內(nèi)。
            然后將柵格內(nèi)的點(diǎn)用線連起來(lái)。
            完成后一看地圖,掉坑里面了。
            1,一條道路穿過(guò)某個(gè)柵格,柵格內(nèi)可能只有一個(gè)點(diǎn),連不成線;
            2,一條直線道路,只記錄了開(kāi)頭和結(jié)尾,中間穿過(guò)的柵格就沒(méi)點(diǎn)了
            后來(lái)想到用補(bǔ)點(diǎn)的方式,兩個(gè)點(diǎn)超過(guò)20米就補(bǔ)一個(gè)
            簡(jiǎn)單試了一下,效果不好就開(kāi)始用第二種方法

            第二次做法:
            先將道路在空白bitmap上畫(huà)出來(lái),顏色用黑色;
            再將柵格在另一空白的bitmap上畫(huà)出來(lái),顏色用原本的柵格顏色;
            對(duì)比兩張bitmap,像素同時(shí)不為0的就是相交像素,用柵格的像素顏色復(fù)制到道路的像素里面;
            效果杠杠的。

            其他方法:
            在討論組里面說(shuō)了以后,發(fā)現(xiàn)另一種是預(yù)處理做法
            判斷兩點(diǎn)之間跟柵格的相交,將相交點(diǎn)記錄到所在柵格里面,這比較適合后臺(tái)。

            以后還是默默寫(xiě)博客吧!

            posted @ 2015-07-19 13:31 Onway 閱讀(753) | 評(píng)論 (0)編輯 收藏

            2015年7月11日

            說(shuō)明
            用于多人開(kāi)發(fā)的項(xiàng)目且在不提交項(xiàng)目文件的情況下,自動(dòng)將新增的源碼文件加入到項(xiàng)目中或者將刪除的文件從項(xiàng)目中移除。
            https://github.com/Onway/AutoProjectFiles

            使用
            安裝后在資源管理器中右鍵項(xiàng)目名稱(chēng)節(jié)點(diǎn),會(huì)看到“自動(dòng)更新項(xiàng)目”和“創(chuàng)建快照...”兩個(gè)選項(xiàng)。  
            “創(chuàng)建快照”是對(duì)項(xiàng)目中指定的源碼目錄建立一份已有文件列表,以便后續(xù)知道新增或者刪除的文件。  
            “自動(dòng)更新項(xiàng)目”之后,將會(huì)對(duì)新增或刪除文件更新至項(xiàng)目,同時(shí)刷新文件快照列表。

            效果圖


            posted @ 2015-07-11 19:39 Onway 閱讀(340) | 評(píng)論 (0)編輯 收藏

            精品国产乱码久久久久久呢| 亚洲精品乱码久久久久久自慰| 亚洲综合日韩久久成人AV| 久久国产成人| 久久99精品久久久久久齐齐| 日本三级久久网| 久久97久久97精品免视看秋霞| 99999久久久久久亚洲| 国产V亚洲V天堂无码久久久| 伊人久久大香线蕉av不变影院| 欧美日韩精品久久久久| 久久久久久久精品成人热色戒| 亚洲精品成人网久久久久久| 久久青青草原精品国产| 狠狠色丁香久久婷婷综合_中 | 伊人色综合久久天天网| 久久国产热这里只有精品| 精品久久久久中文字| 精品久久久久久国产免费了| 欧美午夜精品久久久久久浪潮| 欧洲性大片xxxxx久久久| 久久精品中文无码资源站| 午夜精品久久久久久毛片| 国产精品毛片久久久久久久| 成人a毛片久久免费播放| 久久综合五月丁香久久激情| 成人久久免费网站| 久久久久久久尹人综合网亚洲| 久久精品国产一区二区三区不卡 | 久久亚洲精品无码AV红樱桃| 狠狠色噜噜狠狠狠狠狠色综合久久| 成人亚洲欧美久久久久| 2021国产精品午夜久久| 精品久久久久久亚洲精品 | 久久人人爽人人爽人人片AV东京热 | 2022年国产精品久久久久| 色噜噜狠狠先锋影音久久| 精品国产青草久久久久福利| 国产精品成人精品久久久 | 欧美久久久久久| 久久久久四虎国产精品|