2012年6月28日星期四

使用Jekyll写博客

几个月前来到了Google Blog,感觉也没什么不妥;Google提供的服务你很难找出什么明显的破绽或者不好,这是Google的能事,但是正如我在这个开篇中说的那样,这是一个版本控制的时代,如果一个码农(高级点我们叫程序猿)没有一个GitHub帐号,都不好意思说自己是写程序的,这同样是一个社交编程的时代;

有时候将一个东西变的复杂很简单,但是相反,如果变回小清新则困难无比;

我们写博客为了什么,炫技吗?当然不是,我们不是魔术师;我们说的好听一点是程序猿;我想如果写博客不关心一些所谓的html标签的细节问题,能专注于我想写什么,我觉得效果会好一点,所以我发现了Jekyll,一个基于GitHub Pages的轻博客,我想这是我需要的;

一切回归本源,将复杂的事情变简单,只需要;

git add .
git commit
git push
不管你身在何方,只要你有网络信号,有git,足矣:-)所以我觉得,Google Blog是时候该说再见了;

Google Blog -> 新的Blog

2012年6月21日星期四

Fedora 删除多余内核

今天偶然更新Fedora 17系统,出现了一个内核更新的错误,boot空间不足了,怎么办呢?依然抵挡不住新的内核(3.4.2)的诱惑,果断升级啊,肿么办?

一个值得一试的Python IDE:PyCharm

说实话,有时候用久了vim,emacs真得会得一种病:审美疲劳:);我也喜欢摆弄vim以及emacs的各种编辑技巧,但是在我学习使用Python的过程中,却意外收获了一个不错的Python IDE:PyCharm(cool,真的,我记得我说这个词是几个月前夸奖Hotot的时候),真的,这哥们使用Java写的(就这一点来说的话,很多哥们要嗤之以鼻了,真的,Java开发的东西也不都慢,比如eclipse,InteliJ等,当然这货跟InteliJ是本家,都是jetbrains出品,一个牛xx的类似当年borland的公司),话不多说,多图杀猫:

2012年6月12日星期二

Vim Tips(技巧每天一积累)

记录vim的一些技巧,每天一积累
6.12:xxxxxxxxxxxxxxxxxxxxxxxx

2012年5月12日星期六

Go语言:这个世界需要另外一门语言?

一直对于语言这个东西充满着好奇心,前辈常常会教导后辈:“c语言是精华语言,如果你精通了它,比如类似的语言Java,C++等,都是小kiss诸如此类的警世名言”,在我这行不通的,喜欢鼓捣,虽然不是很精通:)

关于Go语言的描述,来自维基百科:
Go是Google开发的一种编译型,并发型,并具有垃圾回收功能的编程语言。罗伯特·格瑞史莫(Robert Griesemer),罗勃·派克(Rob Pike)及肯·汤普逊于2007年9月开始设计Go语言,Go语言是基于Inferno操作系统所开发的。Go语言于2009年11月正式宣布推出,并在Linux及Mac OS X平台上进行了实现。Go 1(2012/03/28发布)是Go语言开发的一个主要里程碑,它为Go程序和项目提供了一个稳定的平台。

关于Go语言的特点:
Go编程语言是一个开源项目,其目的是提高开发人员的生产效率。Go语言的特点是表达力强、简明、整洁和高效。可以使用它的并发机制轻易地编写运行在多核或网络计算机上的程序,其新型的类型系统使程序的构建变得更加灵活和模块化。Go程序能快速地被编译为机器码,并且具有垃圾回收和运行时反射功能。它是一个快速的、静态类型的、编译型的语言,但使用起来却像一个动态类型的、解释型的语言。

祖师爷教导我们,学习一门语言的最简洁的途径就是用它,好,let‘s go:)

2012年5月10日星期四

Python解惑:main方法?

最近由于工作的需要,开始了Python的修炼,一门语言有一门语言的规则,Python也不例外;自己修炼了那么久,忽然发现了一个现实的问题,Python的main方法怎么玩的?为什么一个py程序,没有main方法,也可以运行?

下面来自于前辈的一些说法,很是解惑,下面就摘取一下:

1.http://blog.csdn.net/noodies/article/details/6034105
在C/C++/Java中,main是程序执行的起点,Python中,也有类似的运行机制,但方式却截然不同:Python使用缩进对齐组织代码的执行,所有没有缩进的代码(非函数定义和类定义),都会在载入时自动执行,这些代码,可以认为是Python的main函数。

每个文件(模块)都可以任意写一些没有缩进的代码,并且在载入时自动执行,为了区分主执行文件还是被调用的文件,Python引入了一个变量__name__,当文件是被调用时,__name__的值为模块名,当文件被执行时,__name__为'__main__'。这个特性,为测试驱动开发提供了极好的支持,我们可以在每个模块中写上测试代码,这些测试代码仅当模块被Python直接执行时才会运行,代码和测试完美的结合在一起。

2012年5月9日星期三

用Python计算身份证校验码

最近在疯狂的恶补Python(少壮不努力,长大编程序),偶然发现一个仁兄的文章,大喜过望,转过来了,再一次印证了Python的强大、便利,言归正传,转贴地址: 用Python计算身份证校验码

原来的天朝良民证是15位,构成如下:
1~6位:地址码。采用的是行政区划代码,可以去统计局的网站查。
7~12位:生日期码。构成为yymmdd。
13~15位:顺序码。每个地区出生人口按顺序递增,最后一位奇数分给男的,偶数分给女的。

18位则有2点改动:
1.生日期码变为8位,构成为yyyymmdd。
2.增加校验码,即第18位。按照ISO 7064:1983.MOD 11-2校验码计算。

计算方法很无聊:

    将身份证号码的前17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
    将这17位数字和系数相乘的结果相加。
    用加出来和除以11,得到余数。
    余数的结果只可能为0 1 2 3 4 5 6 7 8 9 10这11种,分别对应的最后一位身份证的号码为1 0 X 9 8 7 6 5 4 3 2。

弄懂这个后,很快就能写出Python的计算程序了:

2012年4月28日星期六

Fedora 下安装 lighttpd

在fedora下装个lighttpd其实挺简单的,这里不过是怕自己忘,记下来吧,安装:
sudo yum install lighttpd
# 如果sudo不可用,则使用su
su -c 'yum install lighttpd'
安装服务:
sudo chkconfig --levels 235 lighttpd on
启动它:
sudo service lighttpd start
ok,搞定!

2012年4月27日星期五

Grub2 引导 fedora 16 硬盘安装

今天在公司,用着蛋疼的ubuntu 11.10,那慢的跟S一样,因为家里用的fedora 16,对gnome3慢慢喜欢的不得了,所以果断换了,当然第一天晚上下载DVD镜像,3.6G啊,所以不要等了,果断让它下着,第二天,满满的都在那。接下来,就开始使用grub2进行安装。

说实话,就现在linux版本的日新月异来说,刻盘安装简直就是浪费!既然机器上面已经安装了ubuntu,所以果断使用grub2引导了。

首先将下载的fedora iso文件放到某个分区(注意不能是ntfs分区,可以是fat32,ext3/ext4,否则无法识别,后果比较严重),这里拿我的做例子(/dev/sda4),怎么查看是sda多少呢?
df
文件系统           1K-块      已用      可用 已用% 挂载点
rootfs         235151876   9307992 214072340    5% /
devtmpfs         2039932         0   2039932    0% /dev
tmpfs            2048604       256   2048348    1% /dev/shm
/dev/sda5      235151876   9307992 214072340    5% /
tmpfs            2048604     42352   2006252    3% /run
tmpfs            2048604         0   2048604    0% /sys/fs/cgroup
tmpfs            2048604         0   2048604    0% /media
/dev/sda4      244319032 134652976  97253836   59% /work
/dev/sda1         508745     72081    411064   15% /boot

2012年4月26日星期四

Vim:dd 和 cc的区别

今天使用一个vim插件(vundle)来查找、安装、更新管理其他插件的时候,偶然发现了一个快捷指令:cc,竟然和传说中的删除当前行的dd命令有异曲同工之妙。

比如我们现在有一段python代码:
#!/usr/bin/env python

if __name__ == '__main__':
    print "Hello World!"
    sys.exit(0)

2012年4月22日星期日

Hotot:A cool twitter client in Linux

周日在家,闲来无事,准备在linux上安装个twitter客户端玩玩,说实话,现在Linux下的Gwibber界面丑的要命,真不想用,然后就在Google上搜索,不经意间一个叫作Hotot(中文傲兔)吸引了我,她是中国人的作品(少见的小而精悍的东东,在这里需要向作者道歉,我以为是外国人做的,但是不可否认的是它抄袭了Turpial的创意),然后在我的fedora 16上安装了一下,下面是安装的命令(root下):
yum install hotot
ok,来张小图:

2012年4月20日星期五

初试 Gerrit

初次接触Gerrit还是2011年下半年的事情,那时候接触android也就1年左右,但是由Gerrit的git仓库可以看出,实际上Gerrit的第一次完整提交是在2008年10月,Gerrit的开发应该在2008年初,所以Gerrit跟android一直在一起,亦即Google在android出现之前已经意识到仓库管理的问题,然后研究自己的管理工具。

搞android开发的人,难免会接触到Gerrit,因为除非你一直在搞应用,不搞DIY,否则公司对于公司的管理,很少能避免Gerrit,其实Gerrit没我们大多数人想的那么差,那么不好用,其实类似于git的诞生,Gerrit同样是一款不错的作品。为了显示Gerrit的一个全貌,下面的截图取自Google自家使用的Gerrit(https://android-review.googlesource.com/):

2012年4月14日星期六

Fedora 16 下编译 android 4.0.4

最近也是从ubuntu下迁移到fedora中来,以前也用过fedora,但是效果不是很好,自从gnome3出来以后,觉得unity经ubuntu开发后感觉很一般,为了视觉效果,果断玩起fedora,gnome3真的很帅,尽管和其他一些新鲜事物一样,刚出现总是受到各方面的质疑,说白了还是个人习惯的问题,现在已经基本适应gnome3,fedora 16使用起来也很给力。
从ubuntu下迁移过来,首要的一个问题需要解决,那就是如何解决android编译问题?我们知道android源码的编译,android官方(http://source.android.com/)推荐64位ubuntu(10.04--11.10),对于其他linux版本的编译,完全需要自己的琢磨,不得不说android,你大爷的。说归说,骂归骂,还是要靠android吃饭的,所以自己来搞定一切吧(这也是linux geek的一个习惯):P

2012年4月12日星期四

Buildbot:持续集成(CI)构建利器

BuildBot是一个系统的自动化编译/测试周期最需要的软件,以验证代码的变化。通过自动重建和测试每次发生了变化的东西,在建设迅速查明之前,减少不必要的失败。有警告计数, 图像大小,编译时间,以及其他参数,随着时间的推移可进行跟踪,让信息变得更明显,因此更容易得到改善。

BuildBot使用python编写,使用到了python Twisted网络包,总体来说,功能十分强大。

功能和特点:
  • 运行于各种各样的平台
  • 编译过程:使用C,Python等任何语言处理
  • 最小的环境要求:Python和网线
  • 通过网页,电子邮件,IRC等方式工作
  • 轨道在进步的基础,提供估计完工时间
  • 通过类进行灵活的配置
  • 新工作方式的调试工具

2012年4月8日星期日

Mercurial 小记

记得接触Git的时候,就有种相见恨晚的感觉,比较惭愧的是,把玩linux那么久了,接触Git还是毕业设计时候的事情。好在Git的设计优良,很多时候感觉特别顺手,当然这不是说其他的SCM不顺手,还跟个人的习惯有关系。python是最近才接触的一门脚本语言,熟悉它的大牛想必也是赞不绝口,个人认为python的优雅程度不亚于其他主流语言。既然学习python,示例代码肯定是很重要的一个东东,所以学习python就是要看python写的东东,最近也是对SCM版本控制比较感冒,所以认识了Mercurial。

话说Mercurial,作为一个SCM,分布式版本控制系统,其实它还有个小名:Hg,当然这是命令,官方网站:http://mercurial.selenic.com/。由于它的学名太长,就以Hg替代了。

Google博客代码高亮的模板设置

最近深陷Google blogger不能自拔,当然代码的分享也不能没有,所以就想:Google blogger有没有代码高亮的工具或者脚本呢?

答案是有的,具体的设置通过强大的Google搜索到一个哥们的帖子(http://blackanger.blogspot.com/2009/01/blogspot.html),里面有相关的提示,我就索性记录一下吧:

Google blogger正式启用

很久不写blog了,但对于我这种有分享僻的人还是喜欢写点东西的,既可以满足自己的技术虚荣心,也可以帮助他人,何乐而不为呢?

从2011年毕业至今,工作中、平时,linux伴随我的每一步岁月,有欢乐、有焦虑、有挣扎、有收获,每一步脚印都走的不同寻常,随着时间的流逝,忽然发现少了点什么,不是钱! 有时候,很乐于分享自己的所见所得。记得大学的时候,对面宿舍的峰哥也算是我的技术之友,犹记当年学习linux的喜怒哀乐,现在回想起来也是很有滋味。

在 Shell 提示符中显示 Git 分支以及当前的仓库状态

git是个好工具,我们使用的时候当然希望在shell提示符显示git分支的相关情况,方法有那么两种,下面一一介绍:

1.非git官方脚本,来自Aaron Crane,实现方式比较简单,具体的分析可以点击链接查看该大神的网站,下面简单描述一下: