从身边小事做起 为开源发展增砖添瓦

开源是一件非常好的事情,这一点大多数人都认同。但是然后呢?你是选择只动口对其称赞?还是真正动手来做些事情为它的发展出一份力?

开源实际上有一个非常大的理想,这个理想可能会让有的人感觉不舒服,但是却会让更多的人拥有被解放的感觉:那就是实现人们之间的协作。实现更多人的参与。让许多人来一起来做出有用的东西:你为开源献出一滴水,开源会回报给你一眼泉。

许多人会一起来发现软件的漏洞、修复漏洞和快速的响应新需求:这就是一个开源的神奇咒语。现在有很多免费提供的伟大软件的原因,就是因为人们分享了其开发过程。

因为这些软件的源代码被提供给所有人,从理论上来说,任何人可以参与其中并为其开发新的功能。这些新功能的代码然后又反馈回开源社区供其他人使用。

如果你只是满足于使用开源软件,那没有问题。但是如果你希望为开源软件做出自己的一些贡献的话,比如你有一个问题是没有其他任何人在修复的,或者你只是想贡献自己的一份力量,但却不知道从哪儿开始的话,下面的十个建议可能对你有所帮助。

1、使用流行的开源软件

使用Linux并不困难。如果你有一个备用的系统,安装一个免费版的Linux操作系统,然后看一下它可以做什么。如果没有其他的软件要求,Linux可以在一个比较老的低配置硬件上运行的非常好。你还会发现它本身带着许多有用的软件,而且让你很少有被舒服的感觉。

但是,可能有一些原因让你不得不继续使用Windows,例如公司的规定,或者必须一直使用一个只支持微软的操作系统的应用软件。如果是这样,不要灰心,现在还有很多Windows下的开源软件可以供你使用。

下载Firefox是非常简单的一件事情,这个浏览器要比微软的IE浏览器更安全。当你使用它的时候,你会发现它支持加入扩展插件,每个扩展插件都具有自己的相应的作者。

还 有开源办公软件OpenOffice.org,这是一个与微软的Office竞争的办公软件套装。“有很多机会来使用Linux世界之外的开源软 件,”Linux专家Alan Cox表示,“OpenOffice、Firefox、PHP、Perl…许多Windows上的基于Web的编程工作很多是使用开放工具来完成 的。”

如果你使用开源软件,你将鼓励和推动别人也来使用它,当越来越多的人来使用开源软件的时候,开源社区也就自然得到了发展。因此即使只是花时间来学习和体验开源软件,也是对开源社区的一个回报。

2、当你的企业选择新系统的时候,确保开源被认为是一个选择

现在是做这件事的最佳时机,因为Windows用户正面临着对Vista巨变的不适应。从历史的角度来看,让大批的用户转向Linux是一件比较困难的事情,因为这将需要对用户进行一个关于使用不同操作系统的培训(尽管许多人认为这已经不是一个障碍)。

但是现在,在Windows Vista中的毫无道理的改变意味着,即使你选择使用下一个版本的Windows,也要付出培训的成本。

Cox表示,即使你不能完全的转向开源,有一点你需要知道的是,几乎你所有你购买的硬件将来都能运行Linux或Solaris,它们不会像Vista那样对硬件有那么苛刻的要求。这样一旦将来计划发生改变,这些设备依然可以被有效的重复利用或使用。

3、参与在线开源讨论社区

你 当想发现一个插件或求证问题的时候,你可能发现自己已经被开源在线论坛所深深吸引。通过查看、阅读FAQ和搜索其他人的问题,通常你可以得到你想要的东 西。但是,如果一个问题有时没有一个明确的答案的时候,也不要灰心,这时候你与社区互动的机会来了。从网上提问这一问题,通常你可以得到一个友好和有帮助 的答案-以后你可以把这个答案再告诉别人。

很快,你会发现这自己也拥有了开源的思想,你可以回答来自比你晚来的人的问题。

4、学习编程

对 大多数人来说,这可能是一个比较大的跨越,学会很好的编程可能需要花费比较长的时间。但是这是一个开源的世界,这里充满了帮助,举个例子来说,对于内核程 序员来讲,可以查看kernelnewbies.com网站。对你所感兴趣的任何类型的编程,在开源世界中你都会找到相应的帮助,你只需要在搜索引擎中输 入“teach yourself”和语言的名称,然后就可以选择最适合你的方式。

不过,你需要知道,软件开发和实现中除了编程之外还有很多需要做的工作。Cox表示,“像翻译者、设计者和可用性的工作都是非常重要的。”

5、写帮助文档和调试工作

为 软件编写文档是另一个你肯定可以贡献力量的地方。在这个领域开源社区特别希望得到来自志愿者的帮助,而且也是志愿者可以轻松提供帮助,但是目前却是一个非 常薄弱的环节。作为某个软件的一个用户,而且是一个不得不去论坛寻求问题答案的用户,你可能已经意识到,如果你能做出一个解释它如何运行的文档,这是一件 多么有意义的工作,甚至比编写这个软件的人所带来的工作更大。Cox表示,“开源的文档编订是一件非常公开的工作,也是我们特别薄弱的一个工作环节。”

6、参加开源活动

在 网上与开源社区的朋友进行交流非常不错,但是和他们面对面的交流则更有益处。现在到处都有开源活动,你可以选择其中你感兴趣的领域去参加。你越多的从各个 层次参与到这个社区中,你就越能发现更多的运用你的技能的方式,而且你会发现你可以更容易得到所需要的帮助、思想和创造性的解决方案。

7、少点空洞的赞扬,来点更实际的赞助

许 多开源软件是在半志愿(semi-voluntary)基础上开发的,请求捐款绝不是作者在和你开玩笑,他们确实需要资金来进行继续开发。如果你使用了一 个软件并且非常喜欢它,为什么不从它为你省下的钱中分出来一点合理的费用捐献给开发者呢?这样他们或许更会有动力来让这款软件变得更完美。

但是这是一个开源世界,钱不代表一切:“我认为许多人更喜欢编程而不是金钱,在志愿者项目中处理金钱关系需要慎重,”Cox表示。“你用来购买一听啤酒或披萨的一点钱就可以让一款软件变的更好。”而且你的名字将永远在软件的“感谢你(thank you)”中被提到。

另外,付费参加开源活动,或加入那些资助推动开发发展的组织,这些都对开源的发展有积极的作用。

8、寻找使用开源模式的其他方式

举个例子来说,Wikipedia创建了通向知识的开源之路,它正在创建一个任何人可以查阅和任何人可以增加的知识库。

这些方式有自己的弱点和优势,下次你使用一个开源知识库的时候,为什么不考虑来帮助完善这些文章的内容呢?你可能有专业建议,或者你拥有一双可以挑错的眼睛,而别人没有这些。

看一下Groklaw,它创造性的使用了开源概念,来有助于使复杂的法律问题变得可以理解。许多公司正在搭建内部的wikis和论坛,以了解它们的员工的真实的想法。

9、报告漏洞——不要仅仅是抱怨它们

我们经常听到有的人使用一个软件的失败经历。只有人们报告软件中存在的漏洞,它们才会被迅速的解决,一个好的漏洞报告是非常有价值的,Cox表示。

需要慎重处理的是,你不得不做一些工作来锁定一个漏洞,理解它,确信它真的是一个漏洞,然后对它进行解释。你这样做的好处是,一旦你提交了这个工作,这个漏洞对软件维护者来说就更容易修复,这样许多人将会受益。

10、全面考虑问题,而且要忠诚

与其他人分享成功的经验,分享你的最佳实践经验和成功。但是伪装成一切都是美好的做法,对开源的发展并不益处,Cox表示:“也要分享失败和具有争论的事情。它可以帮助开源社区知道问题何在,并帮助用户能更清楚的知道何时何地选择开源的效果会更好。”

开源的发展就是基于社区对个人工作的汇集上,在你可以做出贡献的各个层面做一些你关心的某些事情,这将为开源社区中的所有人带来好处。

2020年的软件开发什么样

2020年软件开发什么样?SDTimes杂志的创始人Alan Zeichick在7月份发表了一篇有意思的文章“In the Year 2020”,对此做出了预测。全文如下:

十年前,应用服务提供商(ASP)刚刚出现,今天SaaS提供商已经开始产生影响,十年后,托管应用将成为理由,IT经理想自己预装软件估计都要好好找找理由了。

十年前,Web是一切,浏览器是桌面和移动设备访问互联网的唯一方式。今天桌面电脑还在使用浏览器,但移动设备越来越多地使用软件来访问互联网服务了。十年后呢,软件将完全占领移动设备,围墙花园也将在企业级桌面计算中占据显著位置。浏览器不再重要了。

十年前,通过网络协作的分布式开发团队出现,但是大多数开发人员仍然日日与IDE为伴。今天,协作工具、复杂的软件应用生命周期管理套件日益普及, 独立开发人员已经成为濒危物种。十年后,越来越多的开发流程将向云迁移,IDE将变成了一种网页前端应用,源代码和元数据都保存在云里。

十年前,大多数企业级开发人员还在使用本地编译语言,但是网页脚本、VB和Java也开始得到应用。今天,Java、C#、PHP和Python等 托管语言已经统治了企业级开发,只有跟硬件底层打交道才会用到C/C++和其他本地语言。十年后,除了设备驱动开发人员之外,世界将属于托管运行库和虚拟 机。

十年前,数据库就等于来自Oracle或者IBM的基于SQL的关系数据库。今天,虽然大多数企业数据仍然保存在大型SQL关系数据库如 Oracle Database, DB2或者SQL Server中,许多开发团队已经转而采用MySQL这样的轻量级替代品,有些还开始使用NoSQL方案。十年后,大多数企业数据将仍然保存在大型关系数 据库中,但是其他替代方案会有更多采用。

十年前,软件开发团队中最重要的成员都是程序员,测试人员是不受重视的。今天,团队最重要的成员被称为架构师,测试人员还是不受重视。十年后,团队里最重要的成员将是敏捷教练和倡导者,而测试人员还是不受重视。

十年前,虽然网络泡沫已经破灭,在人们的眼中软件开发的光环依旧。今天,软件开发还是令人羡慕的职业,但经济萧条影响到许多企业级开发职位。十年 后,新工具将使更多非技术人员能够开发应用程序,但是软件开发让将是令人仰视的职业,因为我们能够搞定其他人无法解决的问题。(文/刘江)

讨论:您是否认同本文所作预测?您认为未来十年软件开发将有何变化?

原文链接:http://www.sdtimes.com/content/article.aspx?ArticleID=34472&page=2

美欧宣言:彻底解决中国!中国震惊得目瞪口呆!

对于美欧等西方国家而言,新中国的再次崛起,意味着中国将成为第二个俄罗斯,把西方国家耗费半个世纪“和平演变”的阴谋化为泡影…..

    转发者按: 这是加拿大多伦多华人观察家写的一篇文章,比我们国内专家学者看得透彻多了。所谓”当局者迷,旁观者清”,”不识庐山真面目,只缘身在此山中”说的就是这 个理。我强烈向大家推荐《欧美狂言:彻底解决中国,让华人全傻眼》这篇触目惊心的警世之作,大家看后自知,我就不浪费时间了。但愿善良的中国人民不要再受 骗了!

    如果不是突然爆发的金融危机,美国为中国设计的改革路线图进行的十分顺利。第一步私有化几乎没有遭遇到任何阻力;第二步殖民化也已经相当成功,中国 在经济上已不再是一个独立国家,被美国人十分自信地称之为是“美中国”。中国2万亿美元外汇资产的绝大部分被美国占有,2万亿美元的产业资本归外资所有。

    转自CHN强国网 www.chnqiang.com

    按照这个路线图继续走下去,无需太长时间,只要再过10多年时间(中国绝大部分稀有金属还只能开采10多年),美国等西方国家就能够基本掏空中国的 稀有金属资源,摧毁中国的生态环境。当中国稀有金属被完全掏空时,中国就彻底丧失了尖端武器制造能力,那时中国除了解除武装之外没有任何选择。也就是说, 美国持续几十年对中国施行的武器禁运、技术封锁和战略资源禁售,只要再坚持10多年时间,中国在军事上就会自动崩溃。到时再加上生态破坏引发的环境灾难, 中国将会不战自乱,轻而易举地被分割成为许多小国,按照美国人的说法就是,“一次性地永久解决中国问题,实现亚洲和世界的永久稳定”。

    就在所有这一切都有条不紊地顺利推进时,就在美国等西方国家和国内买办集团很快就要接近最终目标时,虚拟经济时代的第一场经济危机爆发了。汹涌而来 的经济危机狂潮,不仅消除了覆盖在世界繁荣表面上的巨大经济泡沫,同时也消除了覆盖在改革开放华丽外表上的巨大政治泡沫,把掩盖在世界一体化眩目表象之下 的美国等西方国家的战略阴谋,十分清晰地展现在中国人民面前:在工业社会还没有找到摆脱资源危机和环境污染的情况下,基本对策就是掏空中国资源,毁掉中国 环境,牺牲13亿中国人民,以维持美国等西方国家的经济发展和优良环境。

    军事战略站 www.chnqiang.com

    为了防止中国人民将来进行报复,以及能够控制灾难扩散,必须把中国分割成为七到八个独立小国。中国将重新回到列国纷争的战国时代,二千多年的统一发 展将被彻底格式化,中国的历史将完全回到原来起点。中国人民被西方国家这一国际战略震惊得目瞪口呆,终于从30多年的历史催眠中开始苏醒过来,中国人民开 始苏醒的一个标志,就是如同春潮般涌动神州大地的毛泽东热。毛主席再次走遍祖国大地,意味着那个曾经先后两次打败过美国、坚决维护中国人民和发展中国家人 民根本利益的新中国,将有可能再次崛起。

    对于美欧等西方国家而言,新中国的再次崛起,意味着中国将成为第二个俄罗斯,把西方国家耗费半个世纪“和平演变”的阴谋化为泡影。美欧等西方国家耗 费半个世纪解体苏联的根本目的,是要占有广袤富饶的俄罗斯资源,把俄罗斯变成美欧等西方国家的资源基地。可是,俄罗斯民族精神的回归,使美欧等西方国家的 战略目标完全化为泡影,除了当初趁着俄罗斯混乱时期在金融市场上打劫了几票之外,没有得到哪怕是一丁点儿俄罗斯资源。不仅无偿占有俄罗斯资源的目的没能实 现,甚至连正常投资俄罗斯能源产业都被立法禁止。

    美欧多次像当初要挟中国那样,用加入WTO来要挟俄罗斯,可是结果却更加失望,每当美欧刚刚流露出要挟苗头,俄罗斯便抢先主动宣布此前加入WTO的 所有谈判全部作废,弄得美欧等要挟者反倒狼狈不堪,一次又一次前功尽弃。今天在欧洲面前的俄罗斯,已经完全恢复了历史上曾经拥有的大老感觉,开始逼迫欧洲 去适应自己的脾气。收复车臣和入侵格鲁吉亚,就是俄罗斯对美欧的公开调戏和羞辱。结果,美欧除了操纵中国右派在网上对俄罗斯叫骂一通之外,连个屁都没有放 就扔掉了对车臣和格鲁吉亚的庄严承诺。

    所以,美欧等西方国家绝不能让俄罗斯的历史在中国重演,绝不能让耗费在中国改革开放30多年的心血白流。如此一来,美国等西方国家便和13 亿中国人民形成了你死我活的尖锐对立。美欧等西方国家一定要牺牲中国,觉醒了的中国人民又不甘愿牺牲,双方都没有了回旋退步的余地。

    转自CHN强国网 www.chnqiang.com

    一方面,美欧等西方国家没有了回旋余地。因为“中美国”已经形成,美欧等西方国家的经济运行和国民生活,已经建立在了依赖中国廉价资源的基础上。工 业社会在没有找到新的出路之前,只能建立在耗费资源和毁灭环境的基础上,要享受工业社会的成就又不愿意耗费本国资源和毁灭本国环境,就只能牺牲其他国家。 而要能够满足美欧20多个发达国家对廉价商品的需要,至少要牺牲一个资源丰富的大国,而目前能够牺牲的大国只有中国。俄罗斯已经站起来了,美欧即使在梦中 都放弃了对俄罗斯的资源幻想。

    印度遍地都燃烧着民族主义的大火,美国在印度连肯德鸡、麦当劳、可口可乐都卖不出去,要想把整个印度作为牺牲品更不可能。特别是美欧等西方国家始终 没有找到控制印度知识分子的有效方法,在中国他们能够发动起整个精英集团辱骂毛泽东,而在印度组织三五个人骂释迦牟尼都不可能。当然,在掏空中国资源、毁 灭中国以后,美欧等西方国家能否通过战争等其他手段控制印度,则另当别论。但是至少在目前,牺牲中国比牺牲印度更加容易。特别是目前已经控制了中国,已经 把中国纳入了经济殖民化轨道,美欧等西方发达国家已经是家家都有中国商品,人人都离不开中国货物,全体国民的生活已经建立在了消耗中国资源和牺牲中国环境 的基础之上,只能继续维持牺牲中国的发展方式。

    转自CHN强国网 www.chnqiang.com

    可以说,30多年来西方国家在不消耗本国资源和不破坏本国环境的情况下,在彼此没有争夺资源战争的情况下,能够尽情享受美好生活,完全是依靠牺牲中 国的资源和环境,牺牲中国人民的健康和生命。否则,单是对资源的争夺,就会使美欧等西方国家陷入炮火连天的战争之中。所以,对于美欧等西方国家来讲,放弃 毁灭中国的发展方式已不可能,这不是一个意识形态问题,也不是一般的利益问题,而是根本的生存和发展问题。

    美欧等西方国家“弱肉强食、优胜劣汰” 的丛林哲学,使得他们把牺牲有色人种国家,看得如同牺牲鸡鸭狗兔等一样理性自然。目前美欧在WTO起诉中国,要强制中国扩大稀有金属和焦炭出口,就是这种 矛盾不可调和的反映。美欧国家为了保护环境和子孙后代利益,纷纷禁止开采国内稀有金属,停止冶炼焦炭。可是美欧国家的生产生活又离不开稀有金属和焦炭,特 别是作为世界最大军火商的美国,制造尖端武器更是离不开稀有金属。

    所以便强迫中国出口,由中国来满足世界对稀有金属和焦炭的需求。焦炭是随便一个农民都能够掌握的简单技术,为什么西方国家停止炼焦而强迫中国为其生 产?就是因为炼焦对环境具有毁灭性破坏作用。炼焦炉一开,黑烟滚滚,遮天蔽日,所到之处,漫天黑雨,甭管白猫花猫,全都成为黑猫,白天无日头,夜晚无月 光,动物灭绝,植物变异,那种恐怖景象完全如同人间地狱。以往炼焦仅限于满足国内小规模需要,污染范围和程度尚能控制,现在为整个西方国家大规模炼焦,毁 灭性灾难根本无法控制,等于在把13亿中国人民推向灭绝深渊。后果越是悲惨,美欧等西方国家越是禁止国内生产,就越是强迫中国生产。中国GDP发展模式也 迫使地方政府愿意生产,加上这些地方官员的子女亲属将来可以去美欧生活,更是不会顾忌灾难性后果。13亿中国人民就这样糊里糊涂地成了美欧等西方国家现代 化生活的牺牲品。站在美欧等西方国家的立场上来看,这是维持现有生活方式的唯一选择,是他们自己免于生态灾难的唯一选择。

    另一方面,中国人民更是没有了任何回旋余地。此前“中美国”的形成,已经使中国人民付出了极其巨大的经济代价,所谓“中美国”的基本含义,就是中国 人生产,美国人消费,形成了生产消费不可分割的新型经济体。通过私有化改革把中国资源变成廉价资源,通过禁止罢工等立法把中国劳动力变成廉价劳动力,然后 把廉价资源和廉价劳动力生产的廉价商品,装船运往美欧等西方国家,美国则开动印刷机印制美元付给中国,为防止中国用这些美元购买美国商品,便让中国用这些 美元购买美国国债,用这种方式把付给中国的美元又收了回去,最终结果是中国两手空空,什么都没有。13亿中国人民流血流汗生产的财富,完全是“无偿”地白 白奉献给了西方国家。

    转自CHN强国网 www.chnqiang.com

    这就是“中美国”的基本经济内容。从中国向西方国家搬运财富的历史过程,至今已经持续了30多年,期间不分白天黑夜,无论太平洋还是大西洋,所有航 道上都挤满了来往穿梭的巨型货轮,在抓紧从中国搬运财富,这是人类历史上第一次兵不血刃地在经济上瓜分一个大国。中国60年艰苦奋斗的结果,就是创造了4 万亿美元总产值。

    现在2万亿美元外汇资产的绝大部分被美国占用;国内2万亿美元的产业资本归外资所有;这两个2万亿反映了中国60 年的创业和积累等于白干。还有,我国对外贸易占GDP比重超过70%,对外贸易中外资又超过70%,这两个70%反映了中国老百姓天天在为美欧等西方国家 生产。西方“经合组织”20多个发达国家中,家家都有中国产品;美国财政收入中超过四分之一是依靠中国购买国债的资金;中国完全变成了西方国家的“厨 房”。而为了生产这些产品,中国人民失去了富裕,失去了福利,失去了保障,失去了健康,失去了青山绿水,失去了美好家园,以至于看不起病,买不起房,甚至 到了死无葬身之地的绝望地步。 www.chnqiang.com CHN强国网

    所有这些财富损失中国人民都认了。要求把中国商品的百分之七十以上运往美欧等西方国家,中国认了;要求控股中国产业,中国认了;要求开放中国金融市 场,中国认了;要求中国给外资特殊优惠,中国认了;要求进入国民生死攸关的水务等公共产业(美国自来水公司归国防部直接领导,连美国私营公司都禁止进 入),中国也认了……就这样,一认再认,一退再退,终于退到了已经无法再认,无路再退的地步:掏空中国资源,摧毁中国环境,牺牲掉中国13亿人口。这次美 欧起诉中国,已经不再是一个简单的经济殖民化问题,而是在试探突破13亿中国人民的生死底线。已经接受了穷光蛋命运的中国人民,不可能再继续接受死亡的命 运。

    差距在哪里,你与开发高手的距离有多远?

      为什么只有少数人能成为开发高手和专家级程序员?一般程序员与开发高手的差距在哪里?在我们的调查中,入门级程序员与开发高手给出了不同的答案。

    【51CTO观察】开发者的技术成长是个永恒的话题。最近,51CTO又有一篇与此相关的文章受到网友们的广泛关注——《如何成为一个专家级的开发者》 。文中虽然界定了专家的概念和开发者成长为专家级的一般路径,但却忽视了一个问题:为什么只有少数人能成长为开发高手和专家级程序员?一般程序员与开发高手的差距在哪里?

    事实上,我们一直在关注这一问题,并就此进行了数月的调查走访,受访的十几位技术专家对此问题的回答有些出乎我们的意料,也与众多入门级开发者所想象的“差距”大不相同。

    入门者 说

    我们在开发频道QQ群(50677317)和身边的一些具有1-2年开发经验的程序员就“你与开发高手的差距在哪里”的问题进行调查,得到的答案大致可以归纳为以下几种:

    ◆项目经验。多数入门级程序员认为,大量的项目经验是提高自身技术水平的关键;高手们往往具有更多的项目经验,解决问题有更广泛的思路和方法。

    ◆对语言和平台的理解掌握。有相当一部分人觉得自己的技术积累还不够,很多语法和API并不熟悉,甚至有人还要翻看语法手册才能完成一段代码的编写。而高手们对语言和平台早已烂熟于心,很多东西都到了“信手拈来”的境界。

    ◆良师高徒。少数开发者抱怨没有高手和主程序员代领,无法获得好的项目实操技能和指导。而高手们往往一开始就有好的机遇得到更好的经验传授。

    ◆努力程度。一些开发者觉得自己不够努力,很多知识没有深入学,很多项目没有用心做。他们认为,高手们的技术水平与勤奋刻苦的技术积累有必然的关系。

    这些差距的确存在,且带有一定的普遍性。但仔细想来,却多少有些主观:同样的项目,同一个团队,为什么有人可以获得更多的经验并逐渐成长;同一个 SDK同样的IDE,为什么高手就可以“信手拈来”;一个主程代领3-5名程序员,为什么有人会脱颖而出?这也从另一个角度印证了新浪微博技术经理杨卫华 所提到的:为什么5%的技术人员开发效率是其他95%的20倍?

    高手 说

    “差距在哪里”的问题在受访的专家级开发高手看来有不一样的答案。这些答案多是指向技术内涵和开发者本身。

    代码的“斟”与“酌”

    高手在编程效率方面可能并不比普通程序员快多少,因为他们会吝啬自己敲下的每一行代码。这种“吝啬”有两方面的含义,一是项目的架构性和整体性考量,二是从性能和优化的角度进行Coding。其实,这里所映射的是一个开发者的技术视野。

    有多位技术专家强调项目执行时的全局观。面对一个项目,即使是团队中的普通一员,也要力求从项目整体架构的角度审视开发需求,对各个模块、接口和通信做最优化的预想和配置。这样可以从全局审视整个项目的技术布局,预判可能出现的问题。

    在确定了整体之后,落实到具体的模块实现,每一行代码不但有上下文的考量与规划,还要具备模块间的整体布局。这是模块内的技术视野,比如接口的定 义、注释的可读性、代码的执行效率等。当你写下一行代码前,要考虑它是否会对整个系统造成影响,是否方便其他接口进行调用,这些都是一个开发高手的“技术潜意识”。

    据一些经常带领入门级开发者的技术经理介绍,多数人只考虑自己所负责的模块进行开发,缺乏一个全局性的技术视野和对代码性能苛刻的态度,这样虽然能按交付日期完成项目,却对项目质量和开发者的自我提高有很大阻碍。

    喜欢大麻烦

    一般开发者对工作中的一些技术问题相当排斥,每个人都希望手里的项目可以顺利进行,一旦遇到问题就会有负面情绪。而我们所看到的一些开发高手对待技术问题则是一种非常积极的态度。

    问题、难点是提高的机会。解决一个问题,能力就提升一点;解决一个大问题,能力就提升一大截。很多技术高手喜欢大麻烦,如果开发工作可以顺利进行当然是好事,但没有难度就没有高度;高手们会认为没有技术挑战性,很难让高手们在项目中发挥应有的激情。

    同样有技术经理反映,用一个开放的态度迎接问题、解决问题,这是目前入门级程序员所缺乏的心态。“喜欢大麻烦”的态度也是程序员向开发高手进阶的必备心里素质。

    代码阅读者

    开发高手是代码阅读者。大多数技术专家的代码阅读量是普通程序员的百倍,代码阅读的时间比写代码的时间要长得多。《Java编程思想》的作者Bruce Eckel对阅读代码的好处做出两种说明:

    ◆代码被阅读的时间比写代码的时间要长,这有助于你的代码被人理解,并改善或者修改其中的Bug。

    ◆ Code Review是最有成效的改善软件缺陷的方法,但在我们却经常“没有时间来考虑它”。

    关注代码的可读性有助于团队的其他同事帮助你修正技术问题,而技术问题的修正可以使你不再犯同样的错误。Code Review可以让你有更高的视角来审视已完成的项目,这样做,往往能有意外的收获——你发现同样一个项目,你可以做的更好。

    除了自己和团队中的代码,高手们还愿意花大量的时间研究“代码大全”,从别人的代码中吸收不同的技术思想并与自己的技术风格融汇贯通。而普通程序员多数只阅读与自己项目相关的程序代码,很少分配精力阅读优秀代码。

    其他“差距”

    ◆参与开源项目。高手们往往都会参加2-3个开源项目,从头到尾完成一个项目的实现和后期升级。开源项目可以与世界各地的优秀程序员接触,协同完成工作,学习和应用最前沿的技术;并得到更多人对你的技术反馈。

    ◆技术探索者。专家级开发者往往是技术探索者和新技术的布道者。高手们往往对现有技术并不满足(而且经常抱怨这些技术的不足之处),能清晰看到现有 技术的缺陷。与开源社区的结合让高手们有更多机会接触到最前沿的技术和应用理念,这些技术往往是解决现有技术缺陷的最佳方案。高手们还会把新发现的技术带 到国内加以推广和应用,成为这门新技术的专家。

    与之前入门者的答案想对比,你是否想到了什么?

    技术与梦想

    事实上,在“高手 说”的部分我们还有一个答案没有列出——技术热情。虽然受访的几位开发高手给出的答案虽各有侧重,但却几乎同时提到了这一点,“要有足够的技术热情”。

    多数程序员只把程序开发当成一份工作,他们在乎平台的前景、语言的优劣、报酬的高低;他们不愿为一个技术点反复钻研,不愿为一个bug精心测试,不愿为自身技术水平的提高多花时间。而开发高手往往具有单纯的技术梦想,愿意为技术付出自己全部的时间。

    归根结底,这还是技术与梦想的话题:你想用技术成就怎样的梦想?在你的梦想中,技术占到几分?

    这个比例,才是你与开发高手的真正“差距”,也是你与开发高手的最大“距离”。

    【更多关于程序员成长的话题】

    1. 寻找成为开发高手的密匙
    2. 充满荆棘的专家程序员之道
    3. 技术总监谈好的程序员如何写代码
    4. 架构师最怕程序员知道的十件事

    Twitter创始人创业故事:性格内向随性而行

    Twitter创始人杰克·多西(Jack Dorsey)

    导读:国外媒体今日发表文章,讲述了Twitter创始人杰克·多西(Jack Dorsey)的创业故事。

    以下为文章全文:

    上世纪80年代中期,在美国圣路易斯附近的一座小城,一个叫杰克·多西(Jack Dorsey)的性格内向的年轻人在他父亲的办公桌前一坐就是几个小时。他在用一台老式的IBM个人电脑自学编程。

    当时,这个后来创立Twitter的男孩正试图做一副纽约生活地图。打小开始,他就对纽约的城市风情着迷,那里的汽车声、人声和商业区的喧闹声使城 市鲜活,也令小多西无比向往。他想把这一切都搬到电脑上,于是,他开始照着纸质地图的街道和街区在电脑上一步一步描绘,然后用浮点给繁华的街道作标记。

    “城市让我充满激情和向往。只是在里面随便走走,我就能体验到城市的活力和生命。”33岁的多西回想道,“所以我想把它们刻画出来。”

    但问题是:想象的泡沫是没有任何意义的,而且多西做的很多事都只是随性而行。自那以后的很长时间里,多西每天都花费很多时间做那些浮点,然后把它们连接起来,同时组织城市交通、人流和商业活动。

    多西花了很多年编写用于调度出租车、救护车和消防车的软件。此后,他终于想到了一个可以让人们随时随地更新日常活动信息的通讯工 具:Twitter。去年底,他又创立了移动支付公司Square。如果Square取得成功,它将重新定义小型企业和客户的互动方式,为城市和全球范围 的现金流动提供便利。

    当然,多西的一些梦想泡沫也曾破灭过。他曾被要求辞去Twitter的领导职务,这让他很伤心,因为据知情人士透露,对多西而言,Twitter如 同自己生活梦想的终极表达。而Square的命运尚未可知:尽管竞争者都想抓住类似机遇,但Square在创业初期的运行并不顺利。

    Twitter的高额股份

    知情人士透露,随着Twitter市值逼近15亿美元,多西的股份价值达到1亿多美元。但多西不喜欢谈论钱财,他说,他从Square领工资,但仅仅是用来交健康保险而已。

    单身的多西常常在全世界飞来飞去,居无定所,但他在纽约租了一套住房。当他在旧金山期间,他就住在一个独立的商业区内。

    他是慈善活动的常客,常常利用自己的产品宣传慈善并为“慈善·水”和“社区临界点”这样的慈善活动募集资金:前者专门为第三世界的人民打水井,后者致力于抗击海湾地区的贫穷。

    人们说,多西最大的特点是安静。他说话的声音柔和,总是一副若有所思的样子,时不时会沉默一阵,几乎从不大声感叹。多西认为,这和他小时候患有言语障碍有关。

    “小时候,我在脑子里拼读出了我要说的话,但它们总是不能自然而然地从我嘴里说出来。”多西说。“当我需要立即说话时,这个问题就困扰着我,因为我想确保我说出的每一个词都完美无缺。”

    为了克服这个毛病,多西去找治疗专家,还主动参加学校的演讲比赛。这种直面问题并寻找办法的解决方式也是多西处理其他生活问题的方法。

    多西出生在一个中产家庭,他是三兄弟中的老大。多西一家在美国中西部的很多地方都住过,其中最靠西的地方是丹佛,但在圣路易斯居住的时间最长。多西的父亲是一名医疗设备工程师,他常常要到处奔波参与推广活动,时不时还要找新工作。

    每当一家人搬到一个新的地方,多西总是乘坐公共交通工具到处转悠,或者到处步行溜达,花很长时间了解周围的一切。

    “这或许是出于一种自我保护的本能。”母亲玛西娅·多西说,“他喜欢认路,让自己熟悉不同的地方。”

    多西对城市及其基础设施的痴迷源于他的成长经历。每当一家人在圣路易斯住下来,多西总是不厌其烦地带着两个弟弟去铁路站场拍照。有一次,当他从欧洲回到美国,他的包里装着数百张付费电话和火车照片。

    多西说,如果当初他不是想把自己对城市的痴迷用电脑表达出来,他可能会成为一名城市规划师。最初,他从电子公告牌系统中查阅数据,然后在电子地图上用浮点标记出警车、送货车和消防车的移动路线。

    “不知不觉,我一下子就有了城市运转的丰富图景。”多西激动地说,“我在自己的房间里挂满了各种各样的电子地图。”

    强大的编程能力

    在年仅15岁的时候,多西就开始了作为程序员的工作:在Mira数字发行公司做实习生。当时该公司正争分夺秒完成客户的一个项目。多西第一天进入公司就拍了拍老板吉姆·麦克尔维(Jim McKelvey)的肩膀说:“Hi”。

    麦克尔维嘟哝着说一会儿再去找他,然后就回到工作站开始一天的忙碌。45分钟后,麦克尔维起身去上卫生间,他发现多西仍然站在原地不动。在将近一个小时时间里,这个年轻人默不作声、一动不动。

    但多西的沉默寡言很快就被他超强的编程能力掩盖,他总是能按照麦克尔维的要求完成任务,表现出非凡的紧凑代码编写能力。不久之后,多西就成了很多30多岁员工的上司。

    看到这里也许有人会问,多西此时的头衔是什么。对此,麦克尔维回答说:“夏季实习助理。”

    世界上第一条Twitter信息

    纽约调度管理服务公司创始人、董事会主席格雷格·基德(Greg Kidd)也注意到了多西的编程才华,但他是“被迫”发现的。

    20世纪90年代末,多西发现了该公司网站的一个安全漏洞,于是他找到这家公司高管的电子邮箱清单,并向基德发出一条信息,给后者提出修复漏洞的建议。

    这是一个找工作的完美计划,但也有可能让你蹲监狱。幸运的是,基德选择了前者,他聘用多西编写调度软件。为了这份工作,多西从密苏里科技大学退学,进入纽约大学学习,但在还有一学期就能拿到学位的时候,他又退学了。

    2000年前后,多西帮助基德创立旧金山网络调度公司dNet.com。该公司在网络大爆炸中倒闭后,多西在各地辗转了数年时间。后来他开始从事合同程序员的工作,同时学习按摩疗法。

    直到2005年底,多西才又找到一份有薪水的工作。当时他在埃文·威廉姆斯(Evan Williams)联合创始的播客(视频分享)公司Odeo工作。

    但该公司前途渺茫,于是多西决定重拾多年以来憧憬的梦想:开发一个能够让人们共享实时个人信息的系统,为了便于手机用户使用,一条信息仅限140个字。

    多西和Odeo创意总监比斯·斯通(Biz Stone)用两个周时间做出了一个系统原型。2006年3月21日,多西在@jack上发布了世界上第一条Twitter信息:“Twitter刚刚成立。”

    担任不同职位

    2007年4月,在一个声势浩大的成立仪式后,多西、威廉姆斯和斯通开始正式运营Twitter,公司CEO由多西担任。

    经过数年的发展,用户发布的Twitter信息从2007年初的每天5000条增加到现在的每天7000万条。人们通过Twitter更新自己的活动信息、分享新闻、愉悦粉丝。如此喧闹的景象是多西孩童时代制作的电子地图所不曾有的。

    在这个过程中,三位创始人的人气也急剧飙升,堪比摇滚明星。斯通出现在了美国喜剧中心频道的“科尔伯特报告”(The Colbert Report)节目,威廉姆斯受邀担任“奥普拉·温弗瑞脱口秀”的嘉宾,多西受邀为美国职业棒球联赛圣路易斯红衣主教队(多西喜爱的球队)与芝加哥小熊队 之间的比赛开球。

    2008年底,多西与威廉姆斯正式交换职位,成为公司董事会主席。但有知情人士透露,多西当时曾因交流问题和对公司发展方向有异议被要求辞职。

    在谈到多西变更职位时,斯通拒绝透露这个决定是否出于自愿,但他表示:“我从未将这个决定看作他离职、下台,而是进入一个不同的角色。”

    多西也拒绝谈论此事。当被问到他担任CEO是否有不足时,多西回答说:“交流是第一位的,内部和外部都是如此。我们可以做得更好,我个人也是如此。”

    在Square承担风险

    Square由多西和麦克尔维在去年底创立。公司成立时引起了多方关注,科技媒体争相报道,业界给出的评估价值也很高。以风投公司Khosla Ventures为首的第一轮融资就为Square带来1000万美元。据悉,参与投资各方对Square估值4000万美元。

    Square提供的服务让用户可以借助一套简单的外接设备和相应的智能手机应用程序来使用信用卡。通常,小企业必须申请商业账户才能处理信用卡,这就要求企业先期支付一笔费用,还要支付月费和每笔交易的手续费。但Square免除了申请程序,且只收取交易手续费。

    “到目前为止,小企业使用信用卡的程序很繁琐。”Square、Twitter和Odeo的天使投资者隆·康威(Ron Conway)指出,“所以Square的市场必将扩大。”

    然而,目前为止,Square并未一一兑现它给出的承诺。按照原计划,其产品应在2010年初就推出,但产品发布先后被硬件生产问题和信用处理及风险问题延误。

    没有商业账户,信贷行业就无法评估客户的欺诈风险。

    “这怎么可能实现呢?”互联网数据中心金融业务分析师艾伦·麦克费森(Aaron McPherson)说,“免除商业账户就如同引诱犯罪。Square提供的服务被过分夸大了,看起来就像是完全以多西的名声作基础。”

    多西承认,Square必须承担超出平常的风险,但他指出,他们将会研发能够快速检测不当交易行为的软件以解决这个问题。

    正当Square的早期客户等待享受服务的时候,几个竞争对手已经开始提供借助智能手机获取信用卡的工具,其中包括Intuit公司和VeriFone系统公司。这些公司仍然使用商业账户,而且已经在信用领域拥有长期关系网络。

    Javelin战略研究公司支付研究总监贝斯·罗伯特森(Beth Robertson)指出,业内普遍认为,Square根本不知道自己在做什么。“他们在理解支付业务复杂性时未免有些天真。”罗伯特森说。

    非凡的洞察力

    密切关注多西职业生涯的人对此提出了自己的观点:他是一个杰出的编辑,擅长优化软件或概念;相比谈论问题,他更愿意着手解决问题;他或许缺少人际交往技巧,但他的社会洞察力是非同寻常的。

    “杰克知道,人们需要一种不同的交流方式。”Square投资者和顾问基德说。“Twitter将传媒民主化,而Square将支付方式民主化。”

    斯通也认为,多西拥有艺术家的头脑。

    “在他眼里,这个世界就是一个他参与制造的一个巨型产品。”斯通说,“他曾经在Twitter上说,一个人可以用140个字改变世界。他的思维方式由此可见一斑。”

    但公司创始人被职业经理人取代是很常见的事。发现市场机遇的创造性眼光不足以让一个创始人管理好一家公司。

    当被问到他的履历是否说明他更擅长创造产品而不是管理企业时,多西并没有像常见的硅谷CEO那样表现出很不服气的样子。他说:“在你真正投入实践并有所发展之前,这是一个很难回答的问题。我认为我在自己的职业生涯中已经成长、进步,但我还有很长的路要走。”

    程序员应知:你有几种武器?

    本文是CSDN博主侯伯薇发表在博客中的一篇文章,作者提出,作为一名优秀的程序员,在面对业务需求的压力时,在不同的情况下应掌握不同的“武器”。

    首先我们必须有一种最趁手最熟悉的武器,有人的是java,有人是vb,还有人是c# 等等,这种武器是用来解决大型项目中的问题的,我们用的最多,对其了解最深,也最喜欢使用。但是,仅仅这一种武器是否够用,是否足以搞定客户或者业务部门 层出不穷的各种需求呢?一般来说还是可以的,只不过在特定的情况下,比方说时间上的要求,用户界面友好程度上的要求,或者是某些特定功能上得要求,我们可 能会采用其他武器,从而得到更高的效率,更便捷的操作,或者特定的某种功能。

    作者以自己的经验为例:

    拿我自己曾经的经历为例吧。之前曾经在博文中讲述过一个抽奖软件的 开发过程,代码也一起公布了出来。其实我日常工作中用的最多的是JAva,开发环境是EClipse。那次的任务如果用这种武器开发也是可以的,但需要的 时间可能会比较长,而当时业务部门才给了我不到一天的时间,所以最终我选择了VBA这种武器,结果只用了两个多小时就完成了开发和测试,而且业务人员还挺 满意,第二天就真的用它抽出了各个奖项。

    再举个例子,我们平日里将开发好的程序发布到测试环境需要不少繁琐的环节,一不小心就会忘记一个,然后就会导致发布人员的 不满和抱怨,所以,有个小 工具来提醒自己,并且将整个流程自动化是非常必要的,但是这个工具需要可以和Windows交互,并且能够模拟键盘和鼠标的操作,当然还需要具备编程语言 的特点,另外还有可以很容易地编译成可执行文件独立运行,所以用JAva或是C#都不是非常合适。不过我很幸运,发现了Autoit这个工具,它完全满足 我的需要,所以我的武器装备库里面有多了一件。花费了两个多小时,我给自己编写了非常好用的提醒工具,使用它之后,我近一个月以来都没有在发布环节犯过错误。

    然而,说起来容易做起来难,我们应该怎么做,又应该注意些什么呢?

    选择学习一种武器之前,应该明确地了解它适用在什么样的情况下,做什么样的工作最适合。就像我们在电视中看到他们有时用手枪,有时用狙击枪,有时又要用匕首一样。

    除此之外,古语有话:尺有所短,寸有所长,在特定的情况下,没有一门语言或者一种工具是完美无缺的,我们还要了解每种武器 的长处和短处,这样不仅有利于采用最合适的武器,而且还可以让它们彼此之间相互配合,从而达到更好的结果。当初上大学的时候,曾经有段时间在学校的有线中 心做视频编辑,那个时候就是用了多种工具,做图的有Photoshop、Photoimpact,做视频的有Premier、我行我速、做3D效果的有 3D Max、Cool 3D,总的来说,有些是属于傻瓜型的,只要动动鼠标就可以生成差不多的效果,但是对于细节的处理不是很好,想要做微调的时候,就需要使用比较传统的、笨重 的工具,那样做出来的效果才会有专业水准。所以说,相互配合真的挺重要的。大家在编程的过程中也一定拥有多种工具,是不是也是不停地在利用彼此之间的配合 来提高自己的工作效率了呢?

    还有一点想要说明的就是,尽管我们应该拥有多种武器来处理多种不同的情况,但是对于经验不太丰富的同学来说,不要太急于追 求手中武器的数量,那就有些舍本求末了,有些时候,武器(或者说工具)只是外在的招式,而我们的编程思想才是内功,只有先把内功练成了,然后随便使用哪种 工具,都会发挥出巨大的威力,那个时候就是充实你的武器库的时候了。因此第一步应该是先彻底掌握一门语言,或者一种工具,然后再去触类旁通。

    最后想要问问大家,你有几种武器?

    证据就在代码里

    招聘一个程序员,唯一对你有意义的是他能写出好程序的能力。 很少人像这样去招人,他们更喜欢去挑剔程序员的个人癖好和性格缺点。

    我一说出这样的话,人们大量的评论就会批评道:你错了,错了,完全的错了。 好的程序员需要具备沟通交流的技能,他们要有跟他人一起合作的能力。团队里不止你一个人! 事实上,人们会说:最好折中一下对技术上的要求,这样可以找出更能适应企业文化的人。

    你不如这样说更合适:找不到那种技术上又好、又能适应企业文化的人,我就等着,一直找到为止。
    我们很少有敢这样奢侈的公司,也许Google可以这样,就是Google这样的公司也一直处于一个“对招聘程序员感到绝望”的状态中。如果你决定去等,我可以预见到每招到一个程序员你都要等待一个漫长的时期,同时业务会因为缺乏程序员而崩溃,火烧眉毛。

    那么,那种更好呢?

    让我们来考虑要那些中等或下等的程序员,他们和蔼可亲,而且努力工作。 他们的程序写的不好 – 他们的程序根本不是按照他们想的那样工作,即使他们做到了,那也是烂程序,很难去维护。他们在基本的功能上挣扎探索,更不解决不了复杂的问题。但是他们却 能跟上团队,项目进度每天点都在更新,可以看见他们每天都在座位上奋斗。一切都很好,你的经理会很高兴,因为整个团队看起来在平稳的向前推进。

    当发布日期不得不往后推迟,产品Bug多的没法使用,人们会哀叹说软件本来就是很难做,于是投入更多的和蔼可亲的平庸的程序员去修复问题。 事情的结果我想大家都知道。

    对于程序员,没有太多的事情可以用和蔼来解决。一个友善的平庸的程序员可以成为业务分析师,技术性的销售员,或着其它的能够利用他的和蔼和他的一点点的技术知识来工作的职位。这样的工作他们会很满意,但这都是在茶话会工作上的,可不是去找出有效的办法做出好的软件。

    另外一个选择是,找个程序员,他能做出好的程序,但也许不善于和他人相处,或者老是迟到,或其他。他能开发出按照设计运转的软件,他能把复杂的问题抽象成一个简单的问题。软件好使,可维护,你随时可以按要求修改。

    这个世界很真实,有太多的方式都会让我们把事情搞砸,但至少我们是有机会的。人可以给人留下不错的印象。团队可以建设的不错。员工在长时间的为你工作,不错。大量的业务没有按照预定的设计工作,但还是成功了,不错。但是绝对不会有伟大的软件会在平庸的程序员手下实现。.

    证据就在代码里。 就这些。

    程序员之间的等级制度

    导读:程序员是否可以以它熟悉的语言判断高下?国外某程序员对此表示认可,并绘出了一张有趣的有关于程序员的图像,箭头的意思是表示某语言的程序员比另一语言的程序员更高级。最高阶自然是神级LISP和汇编语言,最后一个嘛,自己看吧。

    程序员之间的等级制度

    资深系统管理员给Linux/Unix新人们的建议 转

    作者前言:本人从事windows、linux/unix系统工程师多年了,也做过相当长时间的项目实施工程师,维护和架构过大型广告网站、商业网站及证券类网站,感觉对linux/unix算是比较熟悉了,所以就这个职业的规则算是有点心得了吧。

    51CTO编辑推荐:SA,神仙与装机男:运维的工作到底啥样儿?

    另外,抚琴煮酒有幸担任过一段时间的RHCE教学工作,发现在教学过程中,许多学员都对为什么学习Linux感到很迷惘,更别谈什么职业规划了。我 在工作和学习中,也接触了不少爱学习的人,但发现他们在学习的过程中都走进了误区,白白浪费了不少精力;我写此文的目的,就是说明一下 linux/unix的从业现状,帮助同学们走出学习的误区,希望能起到抛砖引玉的作用。


    根据同事多年跟踪的学员情况,我们发现,学员在同等条件学习Linux后,选择开发要比系统应用薪水要上升的更为迅速,而且更容易突破5000、 8000或10000等每月的门槛;但是这个方向难度会更大,同时会更枯燥些,需要毅力和身体,更需要兴趣。如何入门及如何规划自己的Linux学习之路 一直是困扰Linux爱好者的一大难题,实际上,Linux的入门与学习并不难,只是由于长期使用其他操作系统的习惯与没有正确的引导指向,所以一个本身 不是难题的问题变成了难题。

    我这里想提一个问题给同学们:企业为什么要用linux,为什么要用unix?许多同学会说Linux/unix更好,更稳定,其实不然。 企业为什么要用它们,其实是本着节约成本和创造价值的目的。服务器操作系统的软件投入和服务投入是相当大的经费,这也是现在为什么开源免费的CentOS 和FreeBSD越来越受欢迎的原因之一。再说下硬件的负载均衡器,我说下大家最为熟悉的F5,性能一般的17万;性能越好,价格也水涨船高。但其实许多 企业所需要的Linux集群环境其实并发不是大太,完全可以用开源免费的软件来代替,例如LVS、Nginx,而这些软件一般都是部署在Linux上,这 也是近年来Linux越来越受欢迎的原因之一。

    另外,千万不能仅仅学习Linux系统本身。Linux仅仅是操作系统,重要的是其上的应用, 就是能为你能创造多少价值。学习Linux的一个误区在于精力只是局限于Linux本身,从Linux的操作到Linux的内核,也不管自己到底要干嘛; 但是系统毕竟是拿来用的,学习使用Linux的目的是创造效益,如果不是仅仅制作Linux系统,不是加入Red Hat这样的专业Linux发布版厂商,那么你在学习了Linux基础后就跟掌握了Windows没两样,很显然这是不够的,你还需要更进一步的学习:选 择Linux上的应用,或者Linux上的软件开发,当然还有数据库方向。下面我就这三方面详细说明下:

    a)Linux的系统、网络、服务、集群、网站、网络应用方向:

    1、Web应用服务器,如sina、百度等大型网站

    2、Mail应用服务器,如163或外企mail系统等

    3、中间件或J2EE服务器,如为JBOSS Weblogic做平台

    4、网络应用等。

    b)嵌入式开发、UNIX/Linux应用系统开发,Linux内核驱动开发方向,主要有以下几类:

    1、Linux下的C/C++ 系统程序开发

    2、Linux平台Java体系开发和PHP开发

    3、Linux下的图形界面开发

    4、Linux底层内核/驱动开发

    5、嵌入式Linux开发等。

    c)Linux下的数据库,如Mysql、oracle和windows下的SQL Server及DB2等。

    数据库的重要性我就不重复了,而DBA的作用称得上举足轻重了:在技术类岗位的薪资待遇上,总监之下就是DBA了。51CTO也有专门的数据库频道,编辑在这里推荐一下。

    以上是Linux/unix发展的三个方向,大家可以在平时工作和学习中有所偏重,三个专业精通一个即可。注意我这里说的是精通,而非仅仅熟悉的程度。

    如果按照地域划分,Linux/unix系统运维方面的工作适合在北京、上海、深圳和广州,开发比较适合在杭州和南京等地区。说来惭愧,我生活的武 汉,Linux/unix应用比较少,其系统运维方面的工作还真是不好找,我2009年回武汉发展时,好不容易托猎头朋友在外企找了个system admin的职位;而且北京、上海那边许多成熟的开源技术,如LVS、CDN,在武汉这边基本是看不到的,甚是遗憾。

    我这里想说的是:如果是初学Linux/unix的同学,建议可以以RHEL/CentOS为主,在找工作中尽量不要想到待遇问题,在工作实践中, 尽量熟悉shell和一些基础的网络应用,内网开发服务器的配置环境一定要熟悉;如果有机会出外做项目的,一定要兢兢业业,因为这个是成长得最快最好的时 候。另外,无论是学习还是施工期间,有关环境配置一定要形成文档,尽量写得详细和完善,这样无论是对自身技术提高还是跟同事进行工作交接都是非常有帮助的;如果没有对外项目的机会,可以写技术型博客,详细记录自己的学习过程。有兴趣的可参考田逸兄的博客,建议学习。如果想进一步提高自己的水平,建议多上一些跟linux/unix有关的论坛,跟一些同行或技术大牛交流,这样提高起来也非常快。

    如果是资深的linux/unix的系统管理员,建议可以脱离系统级别,向网络架构师的发向发展。网络架构是件艺术活,有时系统性能就是看网站架构 师的能力了。通常情况下,此职位由公司的技术总监担任,它要求技术总监对系统、程序、网络及数据库都有相当的了解,这个也是抚琴煮酒目前努力的方向。唠唠 叨叨半天了,希望我这篇文章对广大的Linux新人及系统管理员有所帮助,最后祝大家工作愉快!

    误删文件不用怕 grep命令帮你恢复

    作为长期的电脑使用者,肯定会有误删文件的经历,在 Mac OS X 和 Windows 上删除的文件都会默认进 “回收站”。在 Linux 上如果事先没有用别名(alias)修改默认的 rm 功能,rm 后文件就会丢失,幸运的是,在一般的删除文件操作中,Linux 并不会立即清空存储该文件的 block 内容,而只会释放该文件所占用的 inode 和 data block,Linux 上 rm 的过程其实就是将 inode bitmap 和 data block bitmap 中的相应标识设为空闲状态的过程,并不涉及到真正的数据,这也是为什么在 Linux 下删除大文件这么快速的原因,因为大文件所占的磁盘根本就没有清空。所以,如果我们能找到文件对应的 inode,由此查到相应的 data block,就可能从磁盘上把已删除的文件恢复出来,很多文件/磁盘恢复工具都是这么做的。

    一般来说二进制文件、库文件等删除后都可以从其他 Linux 拷贝恢复,不是很要紧,如果自己辛苦写的脚本或者配置文件误删了就杯具了。误删这种蠢事经常在 VPSee 身上发生,最近一次是在今年年初的时候,开了 screen 多次 ssh 到不同服务器上,在前后切换的过程中删除了一个很肯定的配置文件,后来发现删的文件是对的,可惜在一台错误的服务器上,本来应该在 A 服务器上删除 file.txt 结果在 B 服务器上删除了 file.txt,多个 screen 和 ssh 把自己搞晕了,而且主机名没有安排好,多台机器都是用的 localhost,不利于识别当时的环境。如果使用 Linux 的时候不幸误删了一个文本文件怎么办呢?

    先临时建一个文本文件 vpsee.log 做测试,然后删除这个文件:

    $ echo "important log file for vpsee.com" > vpsee.log
    
    $ cat vpsee.log
    important log file for vpsee.com
    
    $ rm vpsee.log

    如果能记住刚才删除文件中的某个关键字的话可以用 grep 搜索整个 /dev/sda1,-a 标志位的意思是把 /dev/sda1 这个分区看成是文本形式的(分区本身是二进制形式的),-B 10 -A 100 的意思是如果找到关键字就打印出其前10行和后100行的内容:

    # grep -a -B 10 -A 100 'vpsee.com' /dev/sda1 > tmp.txt

    在一堆 @ 之间可以找到我们刚才删除的内容:

    $ vi tmp.txt
    ...
    @$^@^@^@^@^@^@^@^@^@^@^@^A^@^@^@^@^@^@^@?^@^@^@^A^@^@^@^@^@^@^@^@^@^@^@è^K^@^@^@
    ^@^@^@^@^@^@^@^@^@^@^@^A^@^@^@^@^@^@^@^Q^@^@^@^C^@^@^@^@^@^@^@^@^@^@^@è^K^@^@×^@
    ^@^@important log file for vpsee.com
    @
    @
    ...

    当然,如果误删了二进制、doc、png/jpg/gif 之类的文件,可以用一些第三方 ext2/ext3 文件恢复工具帮助恢复文件,比如 TestDisk, PhotoRec 等。