开源协议的比较——GPL BSD MIT Apache

GPL

GPL,全称 GNU General Public License。

常说的传染性:只要在一个软件中使用(“使用”指类库引用或者修改后的代码) GPL 协议的产品,则该软件产品必须也采用GPL协议,既必须也是开源和免费。

采用这个协议的开源软件有:Linux、 MySQL。

BSD

全称 Berkeley Software Distribution。

这个协议允许使用者修改和重新发布代码,也允许使用或在BSD代码基础上开发商业软件发布和销售,因此是适用于商业软件的。

使用时需要满足三个条件:

  1. 如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。
  2. 如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。
  3. 不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。

适用BSD协议的开源软件有: nginx、CruiseControl、Redis。

MIT

MIT,源自麻省理工学院(Massachusetts Institute of Technology, MIT),又称X11协议。MIT与BSD类似,但是比BSD协议更加宽松,是目前最少限制的协议。

这个协议唯一的条件就是在修改后的代码或者发行包包含原作者的许可信息。

使用MIT的软件项目有:Node.js, jQuery.NET Core, 和 Rails .

Apache License 2.0

比起 BSD,Apache License 2.0 除了为用户提供版权许可之外,还有专利许可,使用者可以获得永久授权,修改时需要放置版权说明。

  1. 需要给代码的用户一份 Apache Licence。
  2. 如果你修改了代码,需要再被修改的文件中说明。
  3. 在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议,商标,专利声明和其他原来作者规定需要包含的说明。
  4. 如果再发布的产品中包含一个Notice文件,则在Notice文件中需要带有Apache Licence。你可以在Notice中增加自己的许可,但不可以表现为对Apache Licence构成更改。

它还有这些好处:

  1. 永久权利 一旦被授权,永久拥有。
  2. 全球范围的权利 在一个国家获得授权,适用于所有国家。假如你在美国,许可是从印度授权的,也没有问题。
  3. 授权免费 无版税, 前期、后期均无任何费用。
  4. 授权无排他性 任何人都可以获得授权
  5. 授权不可撤消 一旦获得授权,没有任何人可以取消。比如,你基于该产品代码开发了衍生产品,你不用担心会在某一天被禁止使用该代码

使用apache Licence vesion 2.0协议的开源软件有:Android、 ApacheSwift 、Hadoop 、Spring Framework、MongoDB 。

举一个例子:

GitHub 上开源项目 SeaweedFS 的作者 Chris Lu 控诉京东 TigLab 项目涉嫌抄袭代码的事情在知乎上闹得沸沸扬扬。Chris Lu 发文表示京东的项目使用了他的源码,但是没有根据 Apache-2.0 协议的许可条款添加引用说明。

jd

最后给张图:

http://choosealicense.online/:

http://choosealicense.online/

参考资料


windows 命令行下用 netsh 实现端口转发(端口映射)

命令

netsh interface portproxy add/set/show/delete v4tov4/v4tov6/v6tov6/v6tov4

例子

增加

netsh interface portproxy add v4tov4 listenport=8080 connectaddress=192.168.56.101 connectport=8080

将本地的8080端口的数据转发至192.168.56.101上的8080端口。

netsh interface portproxy add v4tov4 listenport=9090 connectaddress=192.168.56.101 connectport=9090

将本地的9090端口的数据转发至192.168.56.101上的9090端口。

显示

netsh interface portproxy show all

修改

netsh interface portproxy set v4tov4 listenport=9090 connectaddress=192.168.56.101 connectport=9080

将本地9090端口改成转发至192.168.56.101的9080端口中。

删除

netsh interface portproxy delete v4tov4 listenport=9090

删除本地端口9090的端口转发配置。

参考资料


git 国内加速代理

长期以来都是用着大带宽的或者海外的服务器,最近阿里做了一个云服务器促销活动,只有1M的带宽,连接github下载工具包那是一个慢。这篇文章简单记录下如何使用代理服务器进行下载加速。

  1. 设置本地代理

    http代理或socks代理均可,git目前都支持。

  2. git 的 http 协议代理

    如果是http代理,假设端口为1080,按照如下设置:

    git config --global http.proxy 'http://127.0.0.1:1080' 
    git config --global https.proxy 'https://127.0.0.1:1080'
    

    如果是socks代理,则是如下设置:

    git config --global http.proxy 'socks5://127.0.0.1:1080' 
    git config --global https.proxy 'socks5://127.0.0.1:1080'
       
    # 只对github.com 代理
    git config --global http.https://github.com.proxy socks5://127.0.0.1:1080
       
    # 取消代理
    git config --global --unset http.https://github.com.proxy
    git config --global --unset http.proxy
    git config --global --unset https.proxy
    

    如果使用的是 .gitconfig 文件,则配置如下:

    [http]
    [http "http://git.kelu.orgl"]
    	proxy = socks5://127.0.0.1:1081
    
  3. git 的 git 协议的代理

    git config --global core.gitproxy "git-proxy"
    git config --global socks.proxy "localhost:1080"
       
    git config --global --unset core.gitproxy
    

参考资料


Mac 下安装 php 包管理器 composer

许久未在 Mac 上开发。不想今晚心血来潮试着把玩起老项目,好像最近刚重装了系统,mac 竟然没有 composer 命令。这篇文章记录下如何在 Mac 下安装 composer 命令。

一般来说,使用 brew 命令安装即可:

brew install composer

然而我在安装时出现了上面的错误:


==> Downloading https://getcomposer.org/download/1.7.2/composer.phar

curl: (35) LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to getcomposer.org:443
Error: Failed to download resource "composer"
Download failed: https://getcomposer.org/download/1.7.2/composer.phar

参考 github 的帖子 Mac OS 10.14 Mojave brew upgrade Curl LibreSSL SSL_connect: SSL_ERROR_SYSCALL #4436,设置如下环境变量即可:

export HOMEBREW_FORCE_BREWED_CURL =1

具体如下:

安装完成后,就可以幸福的 composer install 啦!