大头龙仔Blog

A strong man can save himself. A great man can save another.

写给2013,写给我,写给我们

| Comments

2012一转眼就过支了,这么快就踏入2013年。

想想,回来东莞工作已有三年多了,毕业五年,这些时间似是历历在目,似是过眼云烟。

2012年,我在疑惑地问问自己,我是否进步了?我冥思良久,好像也找不到答案,感觉自己是进步了,但似乎这种进步又可以忽略不计。这是否说明,我还没有把自己看作一名教师,从教师角度出发来衡量自己呢?我也在疑惑,我是否有把自己看作为教师而衡量的必要性。

人生面临许许多多的抉择,而在我身上,似乎显得有些无力。不过,我坚信有一那么一些执着,打从孩提时就刻进了骨子里。要是说这样的工作,这样的生活渐渐地磨平了我,倒不如说我是一个顽皮的小孩,喜欢让自己跌跌撞撞,但最终是为了成就更强大的自我,这也许是未雨绸缪吧。

2013年,我会进入人生另一个重要的时期,离30已经很近了,我还有很多东西没有能力去完成。2012年所留下的很多问号,都要在2013年不断地探索,我,很想知道,我能够改变多少东西。

人生有多少个三年,多少个五年,更别说十年了。当你认为,这也许是平衡点的时候而变得懒惰时,其实,那才是最危险的,我一直都这么谨记着,所以我才有动为为那冰山一角剩余的部分去努力奋斗。

Git和.gitignore

| Comments

阮一峰的《Git分支管理策略》可以先看看,很不错

那里这里说到一个.gitignore的文件,就是拿来声明哪些文件或文件夹不需要用Git来跟踪的。
不过刚开始使用Git时,会遇到的即使加入.gitignore的文件,但Git依然会进行跟踪,那么这里得分两种情况来看了:
1、如果该文件(夹)已git add进库,那么此时即使你在.gitignore声明,该文件依旧会进行跟踪,需要通过命令将其删除: git rm –cached -r <path> 2、如果该文件(夹)没有git add进库,那么此时你可以提前在.gitignore进行声名,这样就可以不让Git不跟踪了

当备个忘吧,因为平时都没有用GUI工具,都是命令行来得快捷一些,不知有什么好GUI可以用。

《Pro Git》也是一本很不错的书,推荐一看

服务器基于slackware的KVM布署详解

| Comments

一、背景

首先呢,我发现自己有半年时间没有写技术类的文章了,其次,关于这个话题,我一直都想整理一篇比较好的文章出来,一来可以做个备忘,更重要是起到分享交流,共同进步。

之前一直可能都有一些零零散散关于这部分细节的,但我觉得都看得不是很爽。

另外,网上搜到大多数关于KVM的都是debian系或redhat系的,有部分内容和slackware有差异,并且由于slackware的文化,在KVM虚拟化这块,相比其它发行版要麻烦一点点,而slackware的简洁、稳定、快速是我一直所爱,所以更希望写下这篇文章。

二、相关准备

  • 装有slackware的主机一台,内存最好不要太少吧,如果4G或以上的,就装slackware64,当前slackware最新稳定版是13.37(37这个命名方式是和内核2.6.xx一致),因为是做物理主机的系统,所以稳定至上。至于如何安装slackware,可以看slackbook中文译本,反正基本流程是:光碟或U盘启动 –> cfdisk分区 –> setup安装 –> 重启……,下载slackware可以到这里
  • KVM是什么,可以了解,随便一搜就有,还要确定你的CPU是否支持虚拟化技术;(什么是虚拟化技术?
  • 因为我建立两个kvm,一个是slackware-current,一个是windows 2003,所以你也得要有2003的iso,安装2003请选择手动安装,最好是MSDN版本;
  • 虚拟机访问外网要使用网桥(package bridge-utils),但听说用VDE更方面,老实说,VDE我弄了一下,好像很麻烦就没弄了。

三、软件准备

物理服务器机器安装好slackware64 13.37后,那得得要准备相关的软件环境(均运行在root下面):qemu-kvmtunctl(用来tap通讯)

  • qemu-kvm

首先到slackbuilds.org下载qemu-kvm相关的编译准备文件(还有源码包),运行qemu-kvm.SlackBuild进行编译,OK后会在tmp生成一个名为qemu-kvm-1.0.1-x86_64-1_SBo.tgz的包,installpkg之。如果在编译过程中出现错误,那就得先排错,一般都是相关的依赖问题。

  • tunctl

同样地,下载tunctl并编译之,得到tunctl-1.5-x86_64-2_SBo.tgz并installpkg之 这部分完毕

四、设置网桥和Tap

KVM虚拟机通过tap来访问互联网,那么物理主机得设置好网桥,下面是我/etc/rc.d/rc.local里设置网桥和tap的代码

1
2
3
4
5
6
# create brige 
ifconfig eth0 0.0.0.0
brctl addbr br0
ifconfig br0 x.x.x.x(物理主机IP) netmask 255.255.255.0(物理主机掩码) up
route add default gw x.x.x.x(网关) br0
brctl addif br0 eth0
1
2
3
4
5
6
7
8
# create tap0 for windows 2003 
tunctl -t tap0
ifconfig tap0 up
brctl addif br0 tap0
# create tap1 for slackware-current 
tunctl -t tap1
ifconfig tap1 up
brctl addif br0 tap1

五、安装windows server 2003

windows方面我们使用virtio来提高磁盘和网络的IO性能,那么这里得准备virtio的两个文件:virtio-win-0.1-30.isovirtio-win-1.1.16.vfd

来说明一下,virtio-win-0.1-30.iso里面放有windows的virtio磁盘控制器和网卡的驱动,是安装2003成功后,进入系统后进行相关驱动安装或更新用的。而virtio-win-1.1.16.vfd是一个软盘镜像,是用来安装2003时,通过F6来指定磁盘驱动用的。 在使用qemu-kvm前,需要载入kvm内核模块:

1
$ modprobe kvm_intel

创建大小为20G的win2003.qcow2磁盘文件:

1
$ qemu-img create -f qcow2 win2003.qcow 20G

启动KVM进行2003的安装:

1
$ qemu-kvm -m 768 -boot d -drive file=/xxx/win2003.qcow2,cache=writeback,if=virtio -fda /xxx/virtio-win-1.1.16.vfd -cdrom /xxx/Windows.Server.2003.R2.iso -vnc :1

命令运行后,没有提示任何错误就应该是没有问题了,打开tightVNC,登录到该远程桌面进行安装的操作(VNC登录地址是IP1:1)。启动安装是按F6,之后再安“S”,进入后选择“Redhat I/O for windows 2003”相应的驱动,32或64位。之后的安装过程是和平时装2003的过程一样。 安装成功并启动一次,之后将2003关机,换用另外一条指令来启动虚拟机:

1
$ qemu-kvm -m 768 -net nic,model=virtio -net tap,ifname=tap0,script=no -drive file=/xxx/win2003.qcow2,cache=writeback,if=virtio -cdrom /xxx/virtio-win-0.1-30.iso -vnc :1

此次启动将载入virtio-win-0.1-30.iso镜像,包含有磁盘控制器和网卡的驱动 启动后,同样使用VNC远程接入,把2003里的网卡安装好,也可以把磁盘控制器也升级一下,因为之前软盘镜像带的是2010年的,现在iso里包含的是最新的驱动

到这里,windows 2003安装步骤就完毕了,之后就像平时新装系统设定IP,网关什么的就好,并开启windows远程桌面方便后续的远程操作 六、安装slackware-current 另一台虚拟机我装的是slackware-current,安装步骤要比windows 2003简单一些 创建大小为20G的slackware.qcow2磁盘文件:

1
$ qemu-img create -f qcow2 slackware.qcow 20G

启动KVM进行slackware的安装:

1
$ qemu-kvm -m 768 -boot d -drive file=/xxx/slackware.qcow2,cache=writeback -cdrom /xxx/slackware-13.37-install-d1.iso -vnc :1

用VNC连接,像平时一样来安装,current的安装方法就略去了 安装成功后就换另外一条指令来启动:

1
$ qemu-kvm -m 768 -net nic -net tap,ifname=tap1,script=no -drive file=/xxx/slackware.qcow2,cache=writeback -vnc :1

之后进行一些必要的设定,之后就可以用ssh来连接

六、加入rc.local

两台KVM虚拟机都安装设置成功了,所以就需要将其加入到rc.local脚本,使两个虚拟机在开机时随系统启动,下面是我的rc.local:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# create brige 
ifconfig eth0 0.0.0.0
brctl addbr br0
ifconfig br0 x.x.x.x(物理主机IP) netmask 255.255.255.0(物理主机掩码) up
route add default gw x.x.x.x(网关) br0
brctl addif br0 eth0
# create tap0 for windows 2003 
tunctl -t tap0
ifconfig tap0 up
brctl addif br0 tap0
# create tap1 for slackware-current 
tunctl -t tap1
ifconfig tap1 up
brctl addif br0 tap1
# macaddr 
macaddr1=`printf ‘DE:AD:BE:EF:%02X:%02X\n$((RANDOM%256)) $((RANDOM%256))`
macaddr2=`printf ‘DE:AD:BE:EF:%02X:%02X\n$((RANDOM%256)) $((RANDOM%256))`
# start kvm
qemu-kvm -m 768 -drive file=/home/qcow2/win2003.qcow2,cache=writeback,if=virtio -net nic,model=virtio,macaddr=$macaddr1 -net tap,ifname=tap0,script=no -daemonize -nographic -localtime
qemu-kvm -m 768 -drive file=/home/qcow2/slackware.qcow2,cache=writeback -net nic,macaddr=$macaddr2 -net tap,ifname=tap1,script=no -daemonize -nographic -localtime

启动参数多了个mac地址,是用随机数生成的,建议生成mac地址后将其固定,不然每次启动机器都会有不同的mac地址…… 另外,因为不需要用vnc,所以参数里也没有vnc的启动参数,这样也是保证安全的一个做法

  • -daemonize:让KVM在后台运行
  • -nographic:关闭图形输出
  • -localtime:让虚拟机的时间显示正常

七、总结与展望

到这里,文章也快要结束了。 文中没有使用libvirt来进行虚拟机管理,这个后续可以进行改进,并且也没有相应的watchdog,这也是一个不足。 文中所讲述是一个相对为通用的方法,希望读者能有所启发。 如果你按照这些步骤进展顺利,那么恭喜你:)

所谓码农(摘自《码农》第1期)

| Comments

《码农》第1期,当时看到,马上在群里推荐,不过第一时间听到的是,“我不是码农”,“我不做码农”。随后,我看到里面讲的这篇,《所谓码农》,觉得挺有意思的,于是决定分享给码农与非码农:

对于码农这个称呼,有些人喜爱有加,有些人不以为然。区别在于对待“农”这个字的感觉。农当然是指农民,这个词寓义很丰富,既可以说它伟大,也可以说它渺小。说它伟大,是因为我们的生存离不开农民,而且中国⼀直是个农业为本的国家,曾经说是百分之八十的人是农民,这意味着往前翻⼀两代,你我众人皆是农民出身。以此观之,农可谓大哉。说它渺小,则是因为大家的观念里,农民意味着有很多缺点,冠冕堂皇的说法是劣根性,比如目光短浅、思维陈旧、自私小气,等等,总之是为我们受过教育的人群所看不惯的种种毛病——这些毛病虽然我们自己也有,但是我们看不见——于是乎“农民”成为了骂人时常用的字眼。

其实,把自己的编程生涯与田间地头的锄禾日当午对应起来,确是有那么些相似之处的。你能想象得到,田间整齐栽种的秧苗,与屏幕上显示的错落有致的代码行有几分神似。各种庄稼的种植是有讲究的,正如你要注意编程风格。施肥灌溉,犹如你对代码进行的编译链接。除草除虫,自然是在做着debug 。你挑水来我浇园,大概是在小菜园中进行的结对编程。因为靠天吃饭,农民们也要学点云计算,去五道口职业技术学校进修的人也多起来了。收割的季节,活多人少,也常常是要搞外包的,因为deadline 很重要,time to market 不容错过。

不过坦率地说,码农这个叫法让人体会更多的是滑稽、搞怪、无厘头。毕竟⼀个是简单的体力劳动,⼀个是高智商的脑力劳动,不可同日而语。而程序员却偏爱这样的时空错乱的感觉,自嘲(我就是个农民!)的同时却又自命不凡(我是码农我怕谁?!),特立独行极了。

码农的草帽底下,是⼀颗充满创造力的自由不羁的头脑。他们遵从最佳实践而痛恨陈规教条,他们欣赏天才而不迷信权威,他们喜欢思考而不轻易苟同。他们是技术人,却追求人文理想;他们敢于呐喊,说出自己的观点和主张,也更善于脚踏实地,用自己的点滴工作去改变现状。码农们是勤奋的,加班加点的工作是常有的事情,城市夜间的灯火,有多少是在码农们的办公室和居所点燃?周末四处举办的技术交流和讲座,又活跃着多少码农的身影?线下读书,线上讨论,冥思苦想,动手实践,新技术驱动着码农们的脚步,码农们在改变着我们的生活。

生存离不开农民,生活离不开码农。

[转]ZIP,一个没落天才的故事

| Comments

via: http://cnbeta.com/articles/185863.htm

ZIP,一个没落天才的故事,Phil Katz不愿意为一个压缩软件付钱,就索性自己写了一个更好的算法,然后无偿公开。2000年4月14日,他被发现死于一家汽车旅馆,年仅37岁,死时手中握着一个空酒瓶。他留下了zip算法,却没有留下一张像样的照片。

久违了的zip在你的脑海里还能占据多少空间?或许,你跟本就把它忘记了。
记得刚上大学的2001年,在电脑报上看到过一篇介绍Philip Katz的文章,那时,我才知道,原来zip是曾经是那么的“不可一世”,那么广泛的被使用着。
Winzip的创始人是Philip Katz。用Ultraedit打开任一个zip文件,可以看到文件最前面PK两个字母,这便是zip文件格式的创始人Philip Katz的名字缩写。
在19年前,也就是公元1988年,那时候互联网还刚刚开始有了雏形,而最流行的是一种使用电话线拨号登陆别人在家里搭建的服务平台——交换信息的电子公告牌(BBS)系统。这种系统有些类似现在的论坛和新闻组,由于站长之间互相转信也成为了一个庞大的信息网络(惠多网)。
老一点的网虫可能都有印象,在没有 Internet的年代,中国大地上也曾有几十个这样的BBS存在,著名的字处理软件WPS的作者求伯君和CCED的作者朱崇君当年都是非常有名的个人站长。
由于电话线的接入速度慢的可怜,通过BBS传输较大文件实在是叫人痛苦的一件事。于是,使用文件压缩技术减小文件的体积并将多个文件压缩到一个封包中就成为了BBS用户的一项必须掌握的技巧。当时的美国BBS上,比较流行的是一种叫做ARC的压缩技术,由于它是一家商业公司开发的压缩技术,使用这种软件进行工作是需要付费的。那时候的菲利普·卡兹是一个沉迷于BBS 上的毛头小伙,由于经常混迹于BBS上,对于ARC的收费非常不满的他自己开发了一个程序叫PKARC,这个程序与ARC完全兼容,可以压缩和解压缩 ARC文件。这样一来,大批的ARC用户自然转而使用菲利普·卡兹的免费软件。ARC的制作公司一怒之下将菲利普·卡兹告上了法庭,法庭自然判决菲利普· 卡兹禁止继续开发和传播PKARC。这种判决并没有磨灭菲利普·卡兹的斗志,而是激起了他要与ARC斗争到底的决心。在虚拟的世界中,自由、平等永远是真正的程序员永久的追求。
他放弃了PKARC的开发,发誓要写出一款比ARC更好的压缩软件来打败ARC。这一场官司造就了一名编程天才的横空出世,也造就了一个后来在互联网时代的文件标准。几周以后,后来统治整个BBS世界乃至Internet世界的ZIP在菲利普·卡兹手中发出了第一声响亮的啼哭!
不名则已,一鸣惊人,这种名为PKZIP的程序可以将一个或多个文件压缩到一个后缀为“.zip”的文件中,无论从压缩比、压缩速度方面都超过了商业软件 ARC。卡兹将PKZIP作为自由软件免费发放,使其如同草原上的星星之火般在全美的各大BBS上蔓延开来,用户以几何级数的增长,各大BBS的站长自发将原来使用ARC格式压缩的文件转换成ZIP格式,卡兹用他天才的头脑和顽强的毅力堂堂正正的击败了ARC,ARC的制作公司在PKZIP的强大攻势下很快就消声匿迹了。用自由软件打败商业公司的传奇故事很快传遍了整个BBS世界,疾恶如仇而又身手不凡的菲利普·卡兹如同数字世界的大侠般仗剑江湖,劫富济贫,以一人之力擎起了压缩软件的大旗。
此后卡兹一直继续着对 PKZIP的开发和维护工作,PKZIP建立和统治了DOS时代的压缩标准。直到Windows的诞生,使用卡兹创造的压缩算法的软件Winzip的出现更使ZIP格式成为Internet的传输标准,ZIP压缩格式也成为压缩文档的事实标准。
PKZIP及其“克隆”作品Winzip成为Internet历史上最有名的共享软件之一,ZIP压缩格式也成为压缩文档的事实标准,建立起一个统治Internet的“ZIP王朝”。菲利普·卡兹为世界贡献了一个伟大的共享软件,而他自己却几乎没有从中获得任何好处!因为从一开始,ZIP就是为了反抗收费的PKARC“而生”的。
但是,不良的生活习惯,长期巨大的精神压力,导致了潦倒无助的他在2000年的4月14号,死在了美国威斯康星州密尔沃基的一家汽车旅馆里,死时,手里还紧握着一个烈性酒的酒瓶。
Philip Katz从未在ZIP身上得到半点好处,坚持信念的结果往往是潦倒的生活,糟糕的个人生活和长期编写软件的巨大压力使卡兹染上了酗酒的恶习,最终断送了他那年轻的生命。他为世界贡献了一个伟大的免费软件,更为重要的是他缔造了一种大众化的压缩格式,然而却过早地离开了这个世界。
就在Philip Katz去世的前后,ZIP的最大对手:WINRAR,正在悄然崛起。当时Winzip早已稳坐压缩界头把交椅,但随着2.7版本的出现,Wrar却日益壮大,两者斗争得异常激烈(注:与Winzip一样,其实早在DOS时代,就存在RAR的DOS版本,只是RAR在DOS时代敌不过只能用命令行的ARJ,到了Windows时代又招架不住WinZip的进攻,皆因RAR压缩率低和速度慢,并且RAR压缩格式以前一直缺少其它软件的支持,导致WinRAR都未能广泛流行)。
就当时两者的性能而言,Winzip压缩只支持ZIP格式,解压缩支持ZIP、CAB,还有TAR、GZip、UUencode、XXencode、BinHex、MIME等几种Internet常用格式(可以看出WinZip的重心之所在),ARJ、LHA和ARC则需要相应的外挂程序。但WinZip跟Windows资源管理器结合得很紧密,最常用的压缩和解压缩操作已集成到鼠标右键菜单中,点按右键即可轻松完成压缩解压缩。并且增加了不少人性化的功能如E-mail功能,分卷压缩,密码加密等;那Winrar又凭什么与其争锋呢?答案是格式支持与功能!WinRAR压缩格式支持自家的RAR和ZIP(即可“兼容”ZIP),解压缩支持RAR、ZIP、CAB、ACE、ARJ、LHA、TAR、GZip、UUE,基本上常用的都有了。WinRAR在界面上类似WinZip在功能上基本是WinZip有的它都有,甚至有好多比WinZip还更好更强大。如有特色的”Repair archive”功能甚至可以修复损坏的zip文件;”Convert archive to SFX”功能把RAR和ZIP文件转换成自解压文件,同WinZip不同的是,在压缩时就可以直接存为自解压文件…取对手之精华,并改进之,这就是Winrar敢于与压缩界龙头叫板的原因。
或许到了这里,你会问:为什么zip不去支持rar呢?这样竞争不就“公平”了吗?但我告诉你的是:zip格式是开放的,任何压缩软件都可以免费使用,RAR是RARLab的专利算法,其它软件要想提供对Rar格式支持必须交纳费用以获得授权,如果winzip想要支持zip,就必须向rarlab付费,这根本就是拿自己的血汗去喂饱对手。我们须明白:winzip和winrar都是共享软件,中国人用惯了盗版的winrar,以为rar才是压缩格式的王道,如果自以为全天下的压缩软件都应该支持rar格式,那么只能说这是一种极其荒谬的认知。
虽然ZIP仍然是压缩文件的标准格式,但随着WinRAR的功能越来越强大,并且对ZIP的兼容性和ISO镜像文件的支持,固步自封的WinZip已经逐渐开始被网民们所遗忘。面临被打倒,昔日的强者做出了最后的反击–Winzip9.0。2004年发布的Winzip9.0是Winzip公司在02年后两年内第一次发布的Winzip软件更新,可见这次Winzip反击的决心。本版本的Winzip带来了很多新的功能特性,如:加密标准提高,支持符合AES技术的128位和256位的高级加密标准;支持64位扩展技术;内置了先进的“真空”压缩算法(Enhanced Deflate)等。这一切都是针对WinRAR 3.30,誓求夺回压缩界的王座。
可惜就像乔丹的最后出场一样,也许真的是老了,我们再难看到英雄昔日的光彩。
WinZip 9.0对压缩格式的支持并没有什么增加,支持原有的18种压缩格式,但仍然不支持ISO这一非常流行的镜像文件格式,并且最大的问题是不兼容RAR,这就令许多用户敬而远之了;相对而言,WinRAR 3.30目前的压缩格式虽然只有15种,但由于兼容ZIP和支持ISO,仅仅这两条就使不少WinZip的老用户心动神移了。
随着绝唱反击的失败,于2005年7月,WinZip被Vector Capital收购。
也许在天之灵的Philip Katz并没有想到有这一天,作为下载量达到1亿4000万次,成就压缩标准zip的Winzip计算公司好象没有考虑过用其技术来赚钱的事(实际上很少有人会在WinZip试用期过后支付29美元购买正版授权,因此WinZip至今都没有获得太多利润)。它为大家提供一款如此经典的压缩软件,曾经,它是何等辉煌,但如今却威风难再。或者正如歌词所说:”想回到过去,试着让故事继续,至少不再让你离我而去…”