优秀程序员的十个习惯
在这个世界上,有数百万的人热衷于软件开发,他们有很多名字,如:软件工程师(Software Engineer),程序员(Programmer),编码人(Coder),开发人员(Developer)。经过一段时间后,这些人也许能够成为一个优秀的编码人员,他们会非常熟悉如何用计算机语言来完成自己的工作。但是,如果你要成为一个优秀的程序员,你还可以需要有几件事你需要注意,如果你能让下面十个条目成为你的习惯,那么你才能真正算得上是优秀程序员。
1. 学无止境。就算是你有了10年以上的程序员经历,你也得要使劲地学习,因为你在计算机这个充满一创造力的领域,每天都会有很多很多的新事物出现。你需要跟上时代的步伐。你需要去了解新的程序语言,以及了解正在发展中的程序语言,以及一些编程框架。还需要去阅读一些业内的新闻,并到一些热门的社区去参与在线的讨论,这样你才能明白和了解整个软件开发的趋势。在国内,一些著名的社区例如:CSDN,ITPUB,CHINAUINX等等,在国外,建议你经常上一上digg.com去看看各种BLOG的聚合。
2. 掌握多种语言。程序语言总是有其最适合的领域。当你面对需要解决的问题 ...
一位离开Google的设计师离职感言的读后感
Douglas Bowman, 一位Google的设计师,3月20日离开了Google。他在自己的博客上留了一篇感言
很多人感兴趣Google是否是技术人员的天堂,也感兴趣Google有多少数据,更多人想撬开Google的创新引擎看看这个日渐庞大的企业如何能够保持特立独行的作风。本文不是关于这些,而是一个设计师的对Google的理解。
摘要:
当一个公司里没有一个透彻理解“设计的原则和元素”的领军人物时,很快这个公司就会在作出设计决定上感到枯竭。(原文:Without a person at (or near) the helm who thoroughly understands the principles and elements of Design, a company eventually runs out of reasons for design decisions.)
我感激Google工作的机会,学习很多,很好的食物…但我不会想念那被数据随意斩杀的设计理念。(原文:I’m thankful for the opportunity I had to ...
IBM收购Sun,这是一种什么样的精神?
《华尔街日报》3月18日报导有消息说IBM要以65亿美金收购Sun(原文),虽然消息未经证实,但已引起轩然大波。据Business Joural报道,周二,Sun的股票一下子涨了68%,从之前$4.97一下涨到了$8.36,但IBM的股价下跌4%到了$89.46。
而网上的博主们都在狂写评论文章了。有持支持态度的,这篇博文表明IBM和Sun都是喜欢开源(Linux 和OpenSolaris)以及跨平台的(Linux和Java)的,所以他们的合并可能更好的对抗微软和intel的x86平台,应该太有作为。还有这篇博文则对比了HP收购Compaq(DEC)的案例,说明这样的合并可能更为容易和HP对抗。
当然,也有不认可以文章,比如ZNet上的这篇文章,作者觉得这根本就不可能,因为IBM和Sun有太多的重合了,很多方面都有存在很强的竞争,IBM要买来一点用都没有,要芯片技术吗?要操作系统吗?要数据库吗?要Java吗?更不可能。文中说,如果IBM想把Sun干掉,那么用65亿美金就太贵了,在这个寒冬,应该不用这种价格,除非这则新闻另有别的用意……
不过,最有意思的评论是这篇,简直是太精彩了,我忍 ...
20 你应该知道的PHP库
下面是一些非常有用的PHP类库,相信一定可以为你的WEB开发提供更好和更为快速的方法。
图表库
下面的类库可以让你很简的创建复杂的图表和图片。当然,它们需要GD库的支持。
pChart – 一个可以创建统计图的库。
Libchart – 这也是一个简单的统计图库。
JpGraph – 一个面向对象的图片创建类。
Open Flash Chart – 这是一个基于Flash的统计图。
RSS 解析
解释RSS并是一件很单调的事情,不过幸好你有下面的类库可以帮助你方便地读取RSS的Feed。
MagpieRSS – 开源的PHP版RSS解析器,据说功能强大,未验证。
SimplePie – 这是一个非常快速,而且易用的RSS和Atom 解析库。
缩略图生成
phpThumb – 功能很强大,如何强大还是自己去体会吧。
支付
你的网站需要处理支付方面的事情?需要一个和支付网关的程序?下面这个程序可以帮到你。
PHP Payment Library – 支持Paypal, Authorize.net 和2Checkout ...
Linux 相关的资源站makelinux.net
关于Linux相关的资源大家可以到http://www.makelinux.net/访问相关的文章,很不错的一个和linux内核相关的资源网站,当然,你可能因为种种原因不能访问这个网上的一些资源,那么你可能需要使用代理服务器或是一个叫Tor的软件,关于后者,请参看这篇文章《如何上网觅无踪》
下面是makelinux上的资源列表,都非常不错。
Resources on the site• Interactive map of GNU/Linux OS and FOSS
• “GNU/Linux is my home” – map of GNU/Linux system
• Interactive map of Linux kernel
• Linux inside
• Linux Technology Reference (single page view)
• Linux kernel diagram
• Linux Device Drivers, 3rd Edition
• Advanced Linux Programming
• ...
Linux的15岁生日
今年是Linux的15生日,15年前,1994年3月, Linux kernel 版本1.0.0 released。这几天,全世界很多站点都在发布Blog庆祝Linux的15岁生日,而这篇文章是其中的一篇关于 Linux kernel 的,如果你是Linux的粉丝,希望你能喜欢。
1. Linux是由一个芬兰的仅有21岁的大学生因为兴趣而产生的。
2. 为表扬他的突出贡献,有一颗小行星以他的名字命名。http://en.wikipedia.org/wiki/9793_Torvalds。
3. 有上千个开发人员和程序员从世界的各个角落汇聚在一起,他们不停地开发Linux Kernel。
4. Linux kernel的官方吉祥物是一只小企鹅,叫做Tux.
5. 欧盟研究基金调查表明,Linux最新内核的评估价格在1.14亿美金。
6. 今天,Linux内核中只有2%的程序由 Linus Torvalds开发。
7. Linux内核是由C语语开发。
8. 今天Linux 是一个移值最广泛的操作系统内核,他可以运行在许多不同范围的系统上,包括PC,大型主机,嵌入式等等。
9. ...
OMG, Jave的JMenu居然有433个方法
Java的Swing类库中有一个类叫JMenu,这个类上面有7层的继承,加上所有被继承下来的方法,这个类一共有433个方法,虽然,很多类是从上面继承下来的,而它自己的方法并没有定义太多的方法,不过,继承体系过深,在底层类上要想知道所有的继承下来的东西并不是一样容易的事情。这个例子展示了一个滥用代码重用的反面案例。我个人认为我们应该反思一下滥用面向对象的作法。
要把Java一个类所有的方法例出来并不是一件难事,使用Javascript 利用Firefox浏览器所支持的Package来穷举JMenu的方法可以很方便的列出所有的方法。
下面是这段Javascripts程序:
jmenu = new Packages.javax.swing.JMenu( );
methods = jmenu.getClass( ).getMethods( );
regx = /j[^( ]+([^)]*)/; // match just the method
for (var i = 0, jsArray=[], name = "";
...
OMG, Windows 7 来自未来
今天,2009年3月14日,某个工程师准备把自己的Windows 7 build7000升级到build 7057,在安装过程中,我们的工程师选择了备份老的系统,于是老的build被备份成到了windows.old目录下,然后当整个系统运行时,这位朋友发现了这一版本的Windows 7好像使用了很多来自外星的技术,很明显他扭曲了时间,下面是他的发现和截屏。
点击图片可以大图
幽默:程序员的进化
高中时期
10 PRINT "HELLO WORLD"
20 END
大学新生
program Hello(input, output)
begin
writeln(\'Hello World\')
end.
高年级大学生
#include
int main(void)
{
printf("Hello, world!\\n");
return 0;
}
职业新手
#include
void main(void)
{
char *message[] = {"Hello ", "World"};
int i;
for(i = 0; i < 2; ++i)
printf("%s", message[i]);
printf("\\n");
}
职业老手
#include
#include
using namespace std;
class string
{
private:
int size;
cha ...
Hello World 集中营
编程的人应该都知道什么是Hello World。这是一个最简单的程序,其只在屏幕上输出“Hello World”字样,这通常是初学者的在学习编程时的第一个示例。把打印出 “Hello World” 作为第一个范例程序,现在已经成为编程语言学习的传统。
“Hello World”起源于Brian Kernighan 和Dennis MacAlistair Ritchie写的计算机程序设计教程《C语言程序设计》(The C Programming Language)而广泛流传;但这本书并不是 “hello, world” 的滥觞,虽然这是一个普遍存在的错误认知。
这范例程序最早出现于 1972 年,由贝尔实验室成员 Brian Kernighan 撰写的内部技术文件《Introduction to the Language B》之中。不久同作者于 1974 年所撰写的《Programming in C: A Tutorial》,也延用这个范例;而以本文件扩编改写的《C语言程序设计》也保留了这个範例程式。
“hello, world” 程序的标准打印内容必须满足“全小写,无惊叹号,逗点 ...
10个基于Ajax的PHP Webmail客户端
下面是十个非常不错的,使用Ajax技术的用PHP开发Webmail的客户端。大家在使用的时候请注意其license。
1. RoundCube
RoundCube Webmail 是一个基于浏览器的IMAP 客户端,其提供了丰富的功能,包含MIME,地址本,文件夹操作,邮件搜索和拼写检查。 RoundCube Webmail 由 PHP写成,需要 MySQL 或 Postgres 数据库的支持。其UI完全遵守于XHTML 和 CSS 2.
2. Zimbra
Zimbra 提供了一个开源的邮件和日历系统,也是基于Ajax技术,非常强大的客户端,他可以通过web service集成第三方的应用“mash-ups” ,于是你可以享有CRM,地图或其它更多的功能。
3. Xuheki
Xuheki 是一个很快的 IMAP 使用AJAX技术开发的客户端。你能想到的功能它基本上都有了,它使用的是 GNU General Public License.
4. SquirrelMail
SquirrelMail 这是一个中规中矩的webmai ...
Vim命令速查卡
Vim是unix/linux下的文本编辑器,很牛,但也不好用,这是一个根本不需要小键盘和鼠标的编译器,是专业人士的编辑器。这里有一个命令速查卡。PDF文件可以在这里下载:PDF
操作系统图形界面发展史(1981-2009)
注意,本文这罗列了从1981年以来有重大意义的操作系统的图形界面。
首先,先介绍两个网站:
http://www.guidebookgallery.org/ 如果你比较关注图形化UI的设计, 可以上这个网站上看看。
http://toastytech.com/guis/index.html 这是一个操作系统图形界面收集的网站,上面几科包括了所有的操作系统图形界面。
下面,让我们先来看看PC机上的第一个图形界面——Xerox Alto(该系统并未商用,主要用于研究和大学),其于1973年被施乐公司Xerox Palo Alto Research Center (PARC)所设计,从此,开启了计算机图形界面的新纪元,80年代以来,操作系统的界面设计经历了众多变迁,OS/2, Macintosh, Windows, Linux, Symbian OS ,各种操作系统将 GUI 设计带进新的时代。下面是其图片(70年代的东西看起来还不错哦)
Source: toastytech.com
1981-1985
Xerox ...
版本控制Subversion相关资源
入门教程
Subversion Cheat Sheet(PDF version)
The Subversion Book
Subversion Official Documentation
SVN 1-Click Setup
Subversion客户端
Tortoise SVN (Windows only)
Cornerstone (Mac only)
Workbench
SmartSVN
Versions (Mac only)
Subclipse
Subcommander
FSVS “Fast System Versioning”,
Syncro SVN Client
scplugin (Mac only)
iPhone SVN Log Viewer
IDE插件
Subclipse(Eclipse IDE for Java)
AnkhSVN(Microsoft’s Visual Studio)
How to Ignore IDE Project Files in Subversi ...
十个开源的Javascript框架
下面是十个最牛的也是最流行的Javascript框架。它们完全可以担任目前世界上几乎所有一些和Ajax技术相关的和图形界面相关的一切功能。
jQuery
http://jquery.com/
如果今天你还不知道jQuery的话,那么作为一个程序员你可能真的是从火星来的了。这恐怕是Ajax中应用最广的框架。包括了许多很不错的UI组件,做出网页的效果也是令人称道的。不过,他最牛的是它的文件大小,只有区区18K,实在是居家旅行,网站开发之首选。
下面是一个日历控件,很不错吧。
Prototype
http://prototypejs.org/
一个面向对象的javascript类库,包函了很多很多很实用的功能,很多其它的框架都使用了他作为基础类库。大小128K,有点大,还好。下面一其一个UI的示例。
script.aculo.us
http://script.aculo.us/
这个框架是基础上面那个框架(Prototype )上开发的,它被包含在Ruby on Rails框架中(http://rubyonrails. ...
Linux Distribution Timeline
下面这个网站记录了整个Linux所有发行版的时间线,很有意思http://futurist.se/gldt/
最新的更新时间是2009-2-12,下面是下载链接:811 kb png / 72 kb tar.bz2
怎样做一个 Program Manager
我个人认为,这是一篇不错的文章,虽然我不是Program Mananger,但是我几乎在做着和这个职位很相似的工作。在这里,我把这篇文章推荐给所有的程序员,我相信,这篇文章会让你明白,只有技术是远远不够的,因为没有Program Manager这个角色,程序员们只不过一些手中拿着利器却不知所措的散兵游勇。我希望我的导读和原文能给所有的程序带来启示。
原文在这里:
“How to be a program manager”http://www.joelonsoftware.com/items/2009/03/09.html
这篇文章的作者叫Joel Spolsky,在Microsoft做过Program Manager,这篇文章非常值得一读。下面是我给大家做的一个导读:
首先,他讲了两个人,一个是负责WYSIWYG 字处理的天才级的Program Manager——Charles Simonyi,第二个是上世纪80年代的负责Mac OS上的Excel项目的程序员Jabe Blumenthal,他发现了程序员和市场人员的代沟,Marketing的人很难通过把MBA-Speaking翻 ...
几个你可能从来没有用过的HTML标识
下面有三个HTML的标识,你可能从来没有用过。
第一个:<abbr> 或 <acronym>
这两个标识是一回事,主要是用于一些英语的缩写,当你把鼠标移上去的时候,你会发现会出现一个小提示来提示缩写的全称。下面是一个示例:
HTML
IEEE
RTFSC
HTML
IEEE
RTFSC
第二个:<q>这个标识主要就是把引用的文字加上双引号,这个标识看来好像很没有什么意思。官方说是为了方便,可我总觉得这个标识还不如直接输入双引号来的方便。好像的确没什么。难道这个标识只能在Firefox下看到,IE就不支持了。下面是个示例:
这个是一句引言
这个是一句引言
第三个,<bdo>
这个标识很有意思,可以把从左到右的字序全部反转过来。比如:May I help you sir ? 如果加上了这个标识后,就是下面这个样子:
May I help you sir ?
什么事可以为你效劳啊?
May I help you sir ?
什么事可以为你效劳啊?
第四个,<del>
为 ...
Linux 命令速查
下面两个网站可以方便地检索Linux下的命令及一些用法。我比较喜欢第一个,不仅仅是因为它支持中文,而且他还给所有的命令做了一个分类。而第二个类似于一个速查手册,有些像man手册。
有些时候,如果知道了命令,用linux下的man手册会显得更加方便,但在Linux下,太多的命令不是我们不会用,而是我们不知道。所以,类别检索就会显得很关键了,这正是我向大家推荐第一个网站的原因。
http://www.linuxcmd.org/cn/
http://oreilly.com/linux/command-directory/
80个优秀的AJAX方案
Ajax作为一种WEB上的技术,已经广被开发人员接受,在过去的两三年内,互联网上涌现出了很多很多的很有创意的Ajax的解决方案,令人赞叹。这里,介绍了80以上的AJAX用法以及其脚本资源,希望对你的开发有帮助。
Auto Complete Scripts
1. AJAX AutoSuggest
2. AJAX Autocompleter / script.aculo.us library
3. AJAX AutoCompleter
4. Ajax autosuggest/autocomplete from database
5. Ajax dynamic list
Instant Editor Scripts
6. AJAX inline text edit 2.0
7. AJAX & CSS Flickr-like Editing Fields
8. AJAX Instant Edit
Tab and Menu Scripts
9. 14 Tab-Based Interface Techniques
10. AJAX Accordion Navigation
11. AJ ...