2013年3月25日星期一

linux没有扩展名的概念

记得以前工作的时候就犯过一个错,认为 linux 和 win 一样都有扩展名的概念, 结果给程序带来了不少问题。

这里也提醒下开始接触 linux 的朋友, linux 下没有扩展名的概念,所有的 .XXX 只是为了方便你去辨识是哪类文件而已。
GCC文件后缀名:
  .c为后缀的文件,C语言源代码文件; 
  .a为后缀的文件,是由目标文件构成的档案库文件; 
  .C,.cc或.cxx 为后缀的文件,是C++源代码文件; 
  .h为后缀的文件,是程序所包含的头文件; 
  .i 为后缀的文件,是已经预处理过的C源代码文件; 
  .ii为后缀的文件,是已经预处理过的C++源代码文件; 
  .m为后缀的文件,是Objective-C源代码文件; 
  .o为后缀的文件,是编译后的目标文件; 
  .s为后缀的文件,是汇编语言源代码文件; 
  .S为后缀的文件,是经过预编译的汇编语言源代码文件。

2013年3月24日星期日

owncloud 私有云平台 (1): 编译 windows client

最近因为工作需要,接触了 owncloud 私有云平台,感觉真的很不错; 最特别的是其 app 扩展功能, 任何人都可以为依据这个私有云平台开发插件和应用, 目前这个平台已经可以集成 email , rss  等相关应用, 我认为以后可能还会集成 blog 或者 微博等相关应用,这样这款应该就可以真正的成为个人应用云平台。

 

下面转入正题,owncloud 有 windows、linux、android 和 ios 的客户端, 这里主要说一下 owncloud windows client 的编译过程。

1. 首先是编译环境,基于 opensuse 12.1 x64 版本,因为要在 linux 上编译 windows 程序,因此需要构建交叉编译环境。 构建这交叉编译环境是个力气活,因为要添加各种源,还有各种依赖要去解决和安装,所以花的时间比较长。 这里可以参考一下官方的文档 和 这篇文档。(在这里我建议在虚拟机里面安装 opensuse 并构建交叉编译环境,这样就可以将安装好的编译环境导出备份,以做后用。)

2. 编译过程。 只要交叉编译环境搭建好之后,剩下的就比较顺利了。

   <code>

   #  cd ~

   #  mkdir owncloud-client

   #  cd owncloud-client

   #  git clone git://git.csync.org/users/freitag/csync.git ocsync

   #  git clone git://github.com/owncloud/mirall.git

   #  mkdir ocsync-build

   #  mkdir mirall-build

   #  cd ocsync

   #  git checkout dav

   #  cd ocsync-build

   #  mingw32-cmake -DCMAKE_BUILD_TYPE="Debug" ../ocsync

   #  mingw32-make

   #  cd ../mirall-build

   #  cmake -DCMAKE_BUILD_TYPE="Debug" ../mirall \

      -DCSYNC_BUILD_PATH=/home/speed/owncloud-client/ocsync-build \

      -DCSYNC_INCLUDE_PATH=/home/speed/owncloud-client/ocsync/src \

      -DCMAKE_TOOLCHAIN_FILE=../mirall/admin/win/Toolchain-mingw32-openSUSE.cmake

   #  mingw32-make

   #  sudo mingw32-make package

  </code>

 

3. 最后看到 owncloud-1.2.2-setup.exe generated  这个字样就可以了,说明 windows 客户端编译完成了。

 

参考文章:owncloud 官方文档: https://github.com/owncloud/mirall/blob/master/doc/building.rst

          另外一篇文档    :  https://gist.github.com/Noxwizard/4011094

 

定制自己的 linux 发行版

首先援引一条官方新闻

 

"日前工信部软件与集成电路促进中心正式宣布与 Canonical 达成协议,双方未来将合力打造专为中国市场而设的 Ubuntu 麒麟(Ubuntu Kylin)操作系统基准架构,为中国的硬件、软件开发者提供参考。据悉在四月的时候基于 Ubuntu 13.04(Raring Ringtail)的版本就会上线,其中会加入具有中国特色的农历、输入法、音乐服务等,未来百度地图、交通资讯、淘宝购物、照片编辑、WPS 等功能也均会被整合到系统之中。" ( 以上文字来自 瘾科技 Engadget )

 

 

看了这条新闻之后还是有些欣慰,毕竟光明正大的和开源社区合作要比银河麒麟涉嫌抄袭 FreeBSD 要好。 好吧转入正题吧,说一下定制自己的 Ubuntu 发行版。

 

为什么要定制呢,可能每个人的原因都不一样,比如说我很不喜欢 Ubuntu 的 unity,系统经常动不动就报错。 如果你只是想换其他的桌面环境的话,你可以直接到 Ubuntu 官方下载包含不同桌面环境的光盘镜像,目前我知道的有, kubuntu(KED),xubuntu( xfce), lubuntu (lxde),其他的还有很多, 如果你不满足以上官方给出的镜像, 你还可以尝试一下定制自己的  Ubuntu 发行版。 链接给出:  http://code.google.com/p/ubuntu-builder/   也就是 Ubuntu build 。  不过这里还是要吐槽一下, 这个和 http://susestudio.com   相比还是逊色不少。 如果你对 suse 或者 opensuse 感兴趣的话, 可以尝试一下 susestudio.com , 功能真的很赞。

2013年3月23日星期六

linux 终端下漂亮的字体

自己有一台奔4, 512m 的老爷本,安装的 debian 7 + lxde 图形界面环境; 因为自己的台式机上一直使用的是  ubntu , ubuntu 默认的 teminal  的字体就比较漂亮; 今天使用  lxde  上  lx 终端, 字体默认是  Monospace ,而且还不是等宽字体, 感觉真的好丑,连写代码的欲望都没有; 随即 google 了一下, 发现 linux 迷 推荐的linux 终端下最漂亮的字体,于是就安装了 Droid Sans Mono 这款字体。

安装方法很简单: sudo apt-get install ttf-droid

瞬间感觉棒及了!   mark 一下

2013年3月8日星期五

搭建 ipv6 测试环境 (一)

因为最近要做了一个 ipv6 的 cdn 加速项目,所以开始着手准备 ipv6 相关的测试环境,从网上搜出来不少相关的文章:有一篇介绍是通过 DynamipsGUI 加 vmware 来搭建ipv6 测试网络; 照着做了下,发现比较复杂,仅仅是 DynamipsGUI 的设置就比较麻烦; 后来看到老外的一篇文章,在 he.net 申请 ipv6 隧道,会获得一个 /64 的 ipv6 子网, 但因为 he.net 隧道要就客户端这边的 endpoint 要有独立的 ip 才行, 所以我就绕了个弯子; 在自己的美国的 vps ( 有独立的 ipv4 地址 ) 建立了一个 ipv6 隧道,然后再搭建给予 TAP openvpn 服务器,并安装  radvd 服务进行 ipv6 地址的路由; 这样的话,我处于内网的电脑,通过 openvpn 连接到我的  vps 上面,组建一个网络;这样,我处于内网的 电脑就可以获得公网 ipv6 地址了。  这个方案总体满足了测试的需求,并且可以从公网访问。 但是这个方案也有很多的不足,首先就是 openvpn 协议收到  gfw 的影响,很难连的上,第二就是网络延迟比较大,不适合进行测试。 对于 openvpn 协议受到干扰的问题,有好几种方法,整体思路就是修改报文的指纹,使得 gfw 无法认出 openvpn 协议,所以就无法干扰了。 但是对于网络的高延迟这块,就没有办法解决了。 后来因为项目搁浅的原因,我也去忙其他的了。

 

今天因为这个项目又有点消息了,我就又从网上查了一些资料,其中看到 https://wiki.ubuntu.com/IPv6  ubuntu 的关于 ipv6 的相关文档。 有看了一篇 ibm 的一篇关于搭建 ipv6 测试环境的文章 http://www.ibm.com/developerworks/cn/linux/l-cn-ipv6env/ ; 我就尝试了在我的 vmware 局域网中的一台 Ubuntu 服务器上 安装  radvd  服务,并配置了 ipv6 子网; 我发现处于局域网内的其他设备默认就配置好了 ipv6 地址了。 通过测试,发现完全满足自己的 ipv6 需求。

 

下面简单总结一下安装和设置的步骤:

1.       开启 ipv6 的转发功能, 修改 /etc/sysctl.conf  文件,开启 ipv6 的转发功能 ( 去掉对 net.ipv6.conf.all.forwarding=1 的注释),并 sudo sysctl �p  使生效。

 

2.       安装 radvd 服务 (基于  Ubuntu 12.04): sudo apt-get install  radvd

 

3.       配置 ipv6 静态 ip地址; 在 /etc/network/interfaces  中添加下面配置

 

iface eth1 inet6 static

        address 2002:9ba:b4e:6::1

            netmask 64

4.       编辑 /etc/radvd.conf 文件

 

interface eth1

{

   AdvSendAdvert on;

   prefix 2002:9ba:b4e:6::/64

   {

        AdvOnLink on;

        AdvAutonomous on;

   };

};

5. 重启 radvd 服务, /etc/init.d/radvd restart

 

现在看下你局域网里的其他设备是不是已经设置好了 ipv6 的地址了

2013年3月5日星期二

ubuntu 下 vim 插件汇总

转眼就3月了,春天要来了! 距离上篇博客又是半个多月了。最近打算搞一下 php ;工欲善其事,必先利其器, 所以要搞定下 ide ,这里我还是用 vim 。

Vim 有很多的插件,选择合适的插件,并来个完美的vim 配置文件很重要的。  首先默认  ubuntu 并没有安装 vim ,所以要先把 vim 安装上。祭出 Apt 超级牛力命令  sudo apt-get install vim  ;

安装完后,推荐一款 Ubuntu 上的 vim 插件管理工具, vim-addon-manager  可以很方便的管理现在已经安装的插件; 安装完  vim-addon-manager 后在安装  vim-scripts , 里面包含一些常用的 vim 脚本和插件。

 

除此之外, http://www.vim.org/scripts/  这里有任何你需要的 vim 插件和脚本;  这里 make 一下, 通过 http://www.vim.org/scripts/  直接下载并解压安装的 vim 插件; 在完成安装前需要下面的这个步骤:

 

在 console 里面 打开 vim ; 然后执行以下命令       ":helptags  ~/.vim/doc/"    

 

这样就可以在 vim 的 help 里面查到手工安装的 插件的帮助文件了;

 

 

最后备注几个常用或者不错的 vim  插件;  ctags  不是 vim 的插件,但属于使用 vim 必装的软件,ubuntu 下可以用  apt 直接安装; taglist  非常不错;  NERD_commenter  和 NERD­_tree 也是非常的不错的插件;剩下的一些是和具体代码相关的插件, 比如 a.vim  和 c.vim  以及 zencoding  和  phpcomplete 和 php-doc

 

 

时间有限,这里就是简单的罗列一下,mark