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 windowslinuxandroid 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.04Raring Ringtail)的版本就会上线,其中会加入具有中国特色的农历、输入法、音乐服务等,未来百度地图、交通资讯、淘宝购物、照片编辑、WPS 等功能也均会被整合到系统之中。" ( 以上文字来自 瘾科技 Engadget )

 

 

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

 

为什么要定制呢,可能每个人的原因都不一样,比如说我很不喜欢 Ubuntu unity,系统经常动不动就报错。 如果你只是想换其他的桌面环境的话,你可以直接到 Ubuntu 官方下载包含不同桌面环境的光盘镜像,目前我知道的有, kubuntuKED),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