Skip to content

GoLive, 结束了? 还是没结束?

18-Sep-09
Views: 1

断断续续4个星期了,Golive到底结束了吗?谁知道呢。

这次Golive真是惊心动魄,很多问题都没见过,而且在staging环境上都没出现过。
More…

RDD,新名词,简历驱动开发,以及架构设计杂谈

28-Jul-09
Views: 1

Golive不出意料的被推迟,总算有了点喘气的时间。

忙里也有偷闲的时候,看了几篇Mr.V推荐的文章。

其中一篇是关于MULE的CTO关于如何选择ESB的文章。文章里有一句话提到,那些滥用ESB的架构师和开发人员都是“简历驱动开发”(Resume-driven development)。他们使用ESB大多是为了面对下一次面试的时候,当面试官问“用没有过ESB”的时候能回答一个“yes”。

事实上,简历驱动开发(RDD)已经不是一个新鲜单词了。《架构师应该知道的97件事》里面,第一条就是“不要把简历看得比需求重要”。
More…

一个奇妙疯狂的语言,和一个古怪的操作系统

14-Jul-09
Views: 0

雷人的事很多,IT界也不甘落后。

今天忘了从哪里得到的信息,知道了Falcon这门新型语言。这门语言号称整合了当前所有流行的编程范式,包括过程式的,函数式的,基于类的面向对象,基于原型的面向对象,面向消息式和表格式的编程方式。它也是一个无类型的脚本式语言。听起来这个东西像什么?Python,Ruby,Lua,Javascript,PHP,Perl的结合体?很疯狂。
More…

MID上OS的群雄并起

03-Jul-09
Views: 1

用户再一次成为技术市场发展的核心。

在多核、64位、大容量等高性能纷争逐渐冷却之后,如何再从消费者中榨取更多的财富成了新问题。便携、随身智能网络设备被认为是下一个能下金蛋的母鸡。从3寸屏的手机,到4、5寸屏的Internet Tablet,到10寸屏的上网本,一时间“乱花渐欲迷人眼”。一副“不智能、不能上网就不专业”的样子

从Eee PC以“第二台个人电脑”的低姿态吹响低价、便携笔记本市场的号角以来,各大厂商也放下架子,各种移动便携设备迅速跟进,MID战场热度火速升级。而MID上面的OS大战也势在必行。

最近传出M$将在它的上网本版本的Windows加入了诸多限制,比如同时运行的程序有最大限制,用户(甚至包括OEM厂商)不能随意更改主题,可视化效果限制等等。让人实在是忍不住说”a steaming pile of M$”。

相比之下,Linux的开源优势和社区支持这时就体现出来了。在Google,Intel,Nokia和几个社区的推动下,基于Linux的MID OS让人对未来充满期待。
More…

C++怀旧贴:OpenWatcom

03-Jul-09
Views: 3

在很久很久以前,DOS的年代,编译器技术还没那么高超的时候,有个叫Watcom C/C++的编译器可以提供极其高效的优化代码。记得很久以前看一个Geek写的编译器比较,他赞叹Watcom编译生成的代码竟然比手动优化的效率还要高。在DOS年代,Watcom更是占据了大半游戏开发的江山。由于DOS下面有640K内存限制而游戏运行往往需要更大内存,所以Watcom和自带的DOS/4GW(用于突破DOS的640K内存限制)的组合便是DOS下游戏开发的不二之选。在93-96年间,几乎所有的游戏都是使用Watcom C开发的,包括大名鼎鼎的Duke Nukem 3D和Doom。

但在微软淘汰DOS的过程以及Windows上的各种C/C++编译器的圣战中,Watcom转型很不成功,最终败下阵来,被Sybase收购,随后又被抛弃。这段历史在李维先生的《Borland传奇》中又比较细腻的描述。

Sybase对Watcom做的最正确的一件事就是在2000年的时候将Watcom编译器开源为OpenWatcom项目。正是这一无奈之举延续了Watcom的生命,使它脱离了混乱的组件规范和平台特性的恶意竞争,而在一片僻静之地靠社区的号召力和热情活了下来。打开OpenWatcom的新闻组,用户讨论区里面虽然不是特别火热,但一个星期总有3、4个topic,而且基本没有0回复。
More…

6月的最后一个星期,新版本集中发布

01-Jul-09
Views: 0

六月的最后一个星期,让我们来数数多少东西出了新版本:

VirtualBox, 6月30号,3.0正式版发布。这个版本三个主要更新两个是和图形有关的,增进了对Guest OS的Direct8/9和OpenGL2.0的支持。在虚拟机里玩游戏不是梦了。这里有个可以玩的游戏列表,我喜欢的魔兽在里面,yeah。 http://forums.virtualbox.org/viewtopic.php?f=1&t=18953

NetBeans, 6月29号,6.7正式版发布。前期社区的工作做得比较足。几个RC版,最后还来了一个社区审核,大量的前期工作和宣传,吊足了大家的胃口。RC1的时候,V先生就给我演示了NetBeans 6.7 RC1在Mac OSX的界面,很不错,他还理直气壮的告诉我:“SWT Sucks”。

Eclipse,6月24号,3.5代号Galileo正式版发布。不过很长时间没有关注过Eclipse了,也不知道这个版本干了点啥。

Sabayon, 6月30号,4.2版发布。上次已经用了4.1版,很华丽。我分配了8G的硬盘空间给他,但是这8G空间莫名其妙在我装东西的时候被吃光了,所以基本上放弃了使用这个发行版的想法。我如此小白,还是用Ubuntu,CentOS和Arch吧。

Firefox, 6月30号,3.5版发布。啥也不说了,就是快!不过我个人对速度不太感冒,但一定要稳定。最害怕写Blog写道最后一秒的时候崩溃了。说到Mozilla,就想起Bespin这个项目来。这个项目号称“Code in the Cloud”,云中的代码,既炫又实用。不过貌似现在还只是0.3的体验版。想尝鲜的可以点这里https://bespin.mozilla.com/ 。 SUN的Zembly项目已经使用了这个编辑器。更新FireFox 3.5的时候发现weave也升级到0.40了。
More…

VirtualBox 3.0 beta1 发布了,顺便体验了一下Sabayon 4.1

20-Jun-09
Views: 5

6月17号,VirtualBox 3.0 beta1放出来了。下载页面:http://forums.virtualbox.org/viewtopic.php?f=15&t=18902

这个版本升级的主要有3点:

1. 客户机的SMP最多支持32块CPU

2. Windows客户机具备支持DirectX 8/9应用和游戏的能力(还处于试验阶段)

3. Windows,Linux和Solaris客户机支持OpenGL 2.0

这个还只是一个测试版本,尚不能用于产品环境。

有人已经开始在VirtualBox的论坛上报bug了,其中一个有趣的bug是一个人2.0G Hz频率的CPU在客户机里报告的频率是22G Hz……看来虚拟环境里已经解决了现在困扰芯片界的功耗问题:P
More…

[翻译]Linux性能:不同发行版,非常不同的结果

18-Jun-09
Views: 0

译注:本文译自linuxdevcenter.com上的一篇文章《Linux Performance: Different Distributions, Very Different Results》(原文作者Caitlyn Martin发表于2009年3月9号。)翻译此文仅为英语与技术学习。转载请注明原文出处与作者。如有翻译不当欢迎指正交流。(Garriot Zhang译注)

【Caitlyn Martin于2009年3月9号发表于linuxdevcenter.com】

【Garriot Zhang译于2009年6月17号】

当我给不同的Linux发行版写评论并且阐述他们性能差异的时候,我总是给这些感想加一个注释:所有的Linux发行版本质上都是一样的,一样的内核,一样的库,一样的文件系统。性能在根本上应该也是一样的,对吗?答案是一个响亮的“不”。不同发行版,就算他们用的是一样的版本的内核,一样的核心库,一样的文件系统,性能也是非常非常的不同。

我看到在无数的Linux论坛上这个问题被争论不休,但往往没有真凭实据。“对我来说它更快”,这种理由不会说服任何人。在LXer.com的一个讨论中,一个叫herzeleid的用户问了一个关键问题:“我纳闷为什么会这样呢?”于是这篇文章就由此而生。

不同的发行版是为了更好地适应不同的硬件。这种情况最明显的例子就是,无论家用的桌面系统还是企业机房里的机器,都有不同的处理器架构。对于大多数桌面用户来说这个问题可以归结为你用的是32位CPU还是64位CPU。(现在的双核和四核机器一般来讲是加倍64位CPU的个数。)是的,一个32位的发行版可以在64位的机器上很好的完成大多数日常任务。而且实际上性能也不会有太大差别。那些CPU密集型的任务会体现出64位CPU的优势,而32位的操作系统就不能很好地执行。我一个艺术家朋友,做了很多3D图形渲染的工作。对她而言,32位的发行版运行这种任务要比64位的发行版耗费很多的时间。任何需要大量数值运算的任务都会让人难以忍受,比如高端的多媒体任务,和高端的游戏。一个64位的发行版还能正确的识别和利用大规模的系统内存。

当一个系统被推到它的极限的时候,性能差异就变得非常明显。一直以来这种情况经常发生中等配置的机器上。其实这也包括从日益流行上上网本到老式的遗留硬件的所有机器。在这个经济困难的时期,这种情况也像影响家用用户一样影响到了商业领域。据我所知,为了节省开支,很多商业公司现在购买上网本而不是常规的笔记本。还有很多其他的公司正试图用一些老硬件,有些已经非常陈旧,来延缓购买新硬件的经济压力。Linux理想地被用于为老系统延续寿命,甚至包括那些都不能满足当前版本的Windows最小系统要求的机器。在这种情况下,我们一般只谈32位的处理器和32位的Linux发行版,所以处理器架构不是问题。这些32位发行版的性能差异可能是巨大的。

More…

[翻译]Linux性能调优

18-Jun-09
Views: 6

译注:本文译自linuxforums.org上的一篇文章《Linux Performance Tuning》(原文作者Fernando Apesteguia发表于2006年)翻译此文仅为英语与技术学习。转载请注明原文出处与作者。如有翻译不当欢迎指正交流。(Garriot Zhang译注)。

Fernando Apesteguia的结论是:“当一个发行版打包发送到客户手中的时候,它是为了完全兼容市场中大部分计算机而设计的。这是一个相当混杂的硬件集合(硬盘,显卡,网卡,等等)。所以Red Hat, Suse,Mandriva和其他的一些发行版厂商选择了一些保守的设置来确保安装成功。”

为什么要系统调优?

这可能是第一件你想知道的事。当一个发行版打包发送到客户手中的时候,它是为了完全兼容市场中大部分计算机而设计的。这是一个相当混杂的硬件集合(硬盘,显卡,网卡,等等)。所以Red Hat, Suse,Mandriva和其他的一些发行版厂商选择了一些保守的设置来确保安装成功。

简单地说:你的发行版运行的很好,但是它可以运行地更好!

比如,你可能有一个具体一些特殊特性的高级硬盘,而这些特性在标准配置的情况下可能就没被启用。
More…

[翻译]更有效的使用Top命令

15-Jun-09
Views: 4

译注:本文译自linuxforums.org论坛上的帖子<Using Top More Efficiently>(原文作者Mulyadi Santosa发表于2006-03-28 04:05:13)。翻译此文仅为英语与技术学习。转载请注明原文出处与作者。如有翻译不当欢迎指正交流。(Garriot Zhang译注)

【Mulyadi Santosa于2006-03-28 04:05:13发表于linuxforums】

【Garriot Zhang译于2009-06-15】

对于桌面用户来说,监测资源使用是一个很重要的日常工作。通过监测,我们能确定系统瓶颈,计划如何优化系统,识别内存泄漏,等等。问题是如何根据我们的需要来选择和使用监测软件。

在众多可用的监视工具中,很多人使用“top”(procps包【注1】的一部分)。top几乎在一次快照内提供了我们所需要监控的所有系统资源使用情况。本文中所有信息是基于procps 3.2.5版,运行于Linux内核2.6.x版。

这里,我们先假定procps包在你的Linux系统上已经安装并运行良好。本文不要求top的使用经验,但是如果你以前曾简单的用过,那将会很有好处。

一些常见问题:

A. 交互模式还是批处理模式?

默认地,top是用交互模式调用的。在这个模式下,top会一直运行,并且接受按键指令来重新定义top的工作方式。但是,有时候你可能需要后置处理top的输出,那么使用这种这种模式就很难做到。解决办法?使用批处理模式。

$ top -b

你会得到如下输出:

top - 15:22:45 up  4:19,  5 users,  load average: 0.00, 0.03, 0.00
Tasks:  60 total,   1 running,  59 sleeping,   0 stopped,   0 zombie
Cpu(s):  3.8% us,  2.9% sy,  0.0% ni, 89.6% id,  3.3% wa,  0.4% hi,  0.0% si
Mem:    515896k total,   495572k used,    20324k free,    13936k buffers
Swap:   909676k total,        4k used,   909672k free,   377608k cached
PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
  1 root      16   0  1544  476  404 S  0.0  0.1   0:01.35 init
  2 root      34  19     0    0    0 S  0.0  0.0   0:00.02 ksoftirqd/0
  3 root      10  -5     0    0    0 S  0.0  0.0   0:00.11 events/0

呃,等一下,它在重复运行,就像交互模式那样。不要担心,使用-n选项来限制它的重复次数。那么,如果你只想要一次快照,就输入:

$ top -b -n 1

这个模式的真正好处是你能方便地把它组合到at或者cron里。组合以后,top能无人值守地在特定时间抓取系统资源快照。例如,使用at命令,我们能让top在一分钟以后定时执行。

$ cat ./test.at
TERM=linux top -b -n 1 >/tmp/top-report.txt
$ at -f ./test.at now+1minutes

细心的读者可能会问“为什么在创建一个新的任务的时候,我要在调用top之前设置TERM环境变量?”。答案是top需要这个环境变量,但不幸的是“at”并不会在调用的时候保留它。向上面一样简单地设置一下,top就会正常工作了。

B. 如何只监测特定进程?

有时候,我们只对某些特定进程感兴趣,可能只是现有进程中的4到5个。例如,如果你想监测进程号是4360和4358的两个进程,输入:

$ top -p 4360,4358

$ top -p 4360 -p 4358

看起来很简单,只是使用选项-p并且加上你需要的用逗号分割的进程号列表,或者简单地用几个-p把进程号连起来。

另一种可能是只监测某个用户的进程。对这种需要,你可以使用-u或者-U选项。假设用户”johndoe”的UID是500,那么输入:

$ top -u johndoe

$ top -u 500

或 

$ top -U johndoe

结论是,你可以用简单的用户名也可以用数字的UID。“-u,-U?有区别吗?” 是的。像大多数其他的GNU工具一样,选项是大小写敏感的。-U意味着top会匹配effective, real, saved 和filesystem UID,而-u只匹配effective 用户id。提醒一下,每个*nix进程都使用effective UID运行,而且有时候它不等于real UID。大多数情况下,文件系统权限和操作系统兼容检查会使用effective UID作为依据,而不是real UID。【注2】

尽管-p只能用于命令行模式,-U和-u都能在交互模式中使用。正如所想的,按’U'或’u'来基于用户名过滤进程。规则也很简单,‘u’匹配effective UID,而‘U’匹配real/effective/saved/filesystem 用户名。top会提示你输入用户名或者数字id。

 

 

【注1 procps】:/proc文件系统工具,http://procps.sourceforge.net/, 此包包含一些很小的获取进程信息的工具,包括ps,top,vmstat,w,kill,free,slabtop,和skill。

【注2 effective uid】:real user ID表示的是实际上进程的执行者是谁,effective user ID主要用于校验该进程在执行时所获得的文件访问权限,也就是说当进程访问文件时检查权限时实际上检查的该进程的”effective user ID”,saved set-user-ID 仅在effective user ID发生改变时保存。
一般情况下,real user ID就是进程的effective user ID,但是当要运行的可执行程序设置了”set-user-ID”位之后,进程的effective user ID变成该文件的属主用户id,同时该进程的”saved set-user-ID”变成此时进程的”effective user ID”,也就是该可执行程序的属主用户ID,该进程在执行一些与文件访问权限相关的操作时系统检查的是进程的effective user ID。更多信息可以参考这篇文章《APUE2读书笔记(一):real user ID, effective user ID,saved set-user-ID》。