ngrok安装问题

ngrok是一个反向代理,通过公网服务器与内网机器建立一条安全通道,使用得在其它地方的电脑能够通过这条通道访问内网服务。类似的技术还有SSH反向隧道。

在国内环境中使用ngrok官网提供的服务会被墙,所以需要自己搭建ngrok服务器,那么就涉及到安装的问题,如果安装可以参考其它资料。

在安装ngrok服务器端的过程发现,执行到下面这步就卡死不动了

gopkg.in/inconshreveable/go-update.v0  (download)

这是由于使用yum install git方式安装的git,需要下载git源码进行编译安装

yum -y install perl-devel perl-CPAN
yum install tcl  build-essential tk gettext
yum install -y curl curl-devel
git clone https://github.com/git/git.git
cd git
./configure
make && make install
cp /usr/local/bin/git /usr/bin/

安装成功后,就能继续编译ngrok了

虚拟机克隆Ubuntu启动网络报No such device eth0

在安装完Ubuntu Server 11.10及相关软件后,需要发给其他人使用,在启动系统后,执行ifconfig发现只有本地回路,之前设置好的eth0找不到了,执行

/etc/init.d/networking restart

报No such device eth0错误,这是由于新克隆的虚拟机镜像的网卡mac地址已经变更,删除/etc/udev/rules.d/70-persistent-net.rules,重启系统,会自动生成该文件,并生效设置好的eth0

sudo rm /etc/udev/rules.d/70-persistent-net.rules
reboot

解决SecureCRT下vim不高亮问题

在上篇文章中已经打开了vim的代码高亮开关,且能正确显示代码颜色,但在使用SecureCRT连接时,发现代码是以下划线显示,并不是代码高亮显示,需要修改服务器端的配置。

使用vim打开/etc/profile,在文件最后加上

export TERM=xterm-color

然后保存退出,并执行

source /etc/profile

这样就能正确显示代码高亮了。

vim配置高亮行号及智能缩进

在终端下使用vim进行编辑时,默认情况下,编辑的界面上是没有显示行号、语法高亮度显示、智能缩进等功能的。为了更好的在vim下进行工作,需要手动设置一个配置文件,该配置文件在/etc/下面,有些系统是在/etc/vim/下面,打开该文件并进行编辑,加入以下内容。

syntax on	 "语法高亮度显示
set number	 "显示行号
set autoindent	 "vim使用自动对起,也就是把当前行的对起格式应用到下一行
set smartindent	 "依据上面的对起格式,智能的选择对起方式,对于类似C语言编
set tabstop=4	 "设置tab键为4个空格
set shiftwidth=4 "设置tab键为4个空格,第二行设置当行之间交错时使用4个空格
set incsearch	 "快速查找
set showmatch	 "设置匹配模式,类似当输入一个左括号时会匹配相应的那个右括号

开源许可证的一些介绍

Apache v2 License

Apache Licence是著名的非盈利开源组织Apache采用的协议。该协议和BSD类似,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布(作为开源或商业软件)。需要满足的条件也和BSD类似:

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

Apache Licence也是对商业应用友好的许可。使用者也可以在需要的时候修改代码来满足需要并作为开源或商业产品发布/销售。

MIT License

MIT许可证之名源自麻省理工学院(Massachusetts Institute of Technology, MIT),又称「X条款」(X License)或「X11条款」(X11 License)

MIT内容与三条款BSD许可证(3-clause BSD license)内容颇为近似,但是赋予软体被授权人更大的权利与更少的限制。

被授权人有权利使用、复制、修改、合并、出版发行、散布、再授权及贩售软体及软体的副本。

被授权人可根据程式的需要修改授权条款为适当的内容。

在软件和软件的所有副本中都必须包含版权声明和许可声明。

此授权条款并非属copyleft的自由软体授权条款,允许在自由/开放源码软体或非自由软体(proprietary software)所使用。

此亦为MIT与BSD(The BSD license, 3-clause BSD license)本质上不同处。

MIT条款可与其他授权条款并存。另外,MIT条款也是自由软体基金会(FSF)所认可的自由软体授权条款,与GPL相容。

GPL v2

我们很熟悉的Linux就是采用了GPL。GPL协议和BSD, Apache Licence等鼓励代码重用的许可很不一样。GPL的出发点是代码的开源/免费使用和引用/修改/衍生代码的开源/免费使用,但不允许修改后和衍生的代码做为闭源的商业软件发布和销售。这也就是为什么我们能用免费的各种linux,包括商业公司的linux和linux上各种各样的由个人,组织,以及商业软件公司开发的免费软件了。

GPL协议的主要内容是只要在一个软件中使用(“使用”指类库引用,修改后的代码或者衍生代码)GPL 协议的产品,则该软件产品必须也采用GPL协议,既必须也是开源和免费。这就是所谓的”传染性”。GPL协议的产品作为一个单独的产品使用没有任何问题,还可以享受免费的优势。

由于GPL严格要求使用了GPL类库的软件产品必须使用GPL协议,对于使用GPL协议的开源代码,商业软件或者对代码有保密要求的部门就不适合集成/采用作为类库和二次开发的基础。

其它细节如再发布的时候需要伴随GPL协议等和BSD/Apache等类似。
Continue reading ‘开源许可证的一些介绍’ »

解决Unable to rewind rpc post data

在使用git提交项目到服务器上时,会提示Unable to rewind rpc post data – try increasing http.postBuffer

git commit -m "commit"
git push origin

在提交的项目内容都很小时没有问题,如果文件较大,则会提交失败,提示

Unable to rewind rpc post data - try increasing http.postBuffer

需要将http.postBuffer设置成适合的值

git config --global http.postBuffer 20480000
git config --list

再次提交即可成功。

解决unable to locate package

在安装了Ubuntu Server 11.10后,要安装git软件,使用命令

sudo apt-get install git

提示unable to locate package git

这是因为刚刚安装系统,没有更新软件源,使用命令更新软件包

sudo apt-get update

在更新时却提示Failed to fetch http://xxx/xxx 404 Not Found,这是因为软件源访问不到了,需要更新软件源,找到/etc/apt/sources.list,使用vi编辑,加入以下源

deb http://ubuntu.cn99.com/ubuntu/ precise main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu/ precise-updates main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu/ precise-security main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu/ precise-backports main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu-cn/ precise main restricted universe multiverse

再次执行

sudo apt-get update

更新完成后,安装软件即可

sudo apt-get install git

setsockopt设置组播返回10042(WSAENOPROTOOPT)错误

在编写组播程序时,需要加入组播组,调用setsockopt设置IP_ADD_MEMBERSHIP,代码如下:

/* join a multicast group */
if (multiaddr)
{ 
	struct ip_mreq mreq;
	mreq.imr_multiaddr.s_addr = inet_addr(multiaddr);
	mreq.imr_interface.s_addr = htonl(INADDR_ANY);
	if (setsockopt(socket, IPPROTO_IP, IP_ADD_MEMBERSHIP, (const char*)&mreq, sizeof(mreq)) < 0)
	{
		printf("setsockopt error, code;"<<WSAGetLastError());
	}
}

Continue reading ‘setsockopt设置组播返回10042(WSAENOPROTOOPT)错误’ »

钥匙原来是这样开锁的

1

每天努力一点点,和每天颓废一点点的差别!

1