Refresh

This website coolshell.cn/articles/date/2010/01 is currently offline. Cloudflare's Always Online™ shows a snapshot of this web page from the Internet Archive's Wayback Machine. To check for the live version, click Refresh.

Browsed by
月度归档: 2010年1月

一个浏览器市场占有量的图

一个浏览器市场占有量的图

下面这个网站是一个关于Web浏览器的市场占有量的图:

http://www.michaelvandaniker.com/labs/browserVisualization/

这个图是从2002年到2009年,也许未来还会更新,把鼠标移到每个弧上你可以看到那个浏览器的的占有量的百分比。如下图:

 

这个图本来没有什么,但制作者把其做成了一个圆弧形,这样,看下来就有些不一样了。你还没有看出来?让我们来对比一下这个图和FireFox的logo吧。

好烂啊有点差凑合看看还不错很精彩 (18 人打了分,平均分: 3.83 )
Loading...
一个Windows 3.1的Web网站

一个Windows 3.1的Web网站

啥也不说了,请大家围观下面这个网站吧。

http://www.michaelv.org/

打开这个网站,你会看到N年前DOS时代的Windows 3.1的界面,居然还可以扫雷,呵呵。真应了那句话——“只要是可以被Javascript实现的应用或程序,最终都会被Javascript所实现”。另,关于其它Web上更为疯狂的程序,可以查看本站的这篇文章。还有这个在线的IDE。下面是win3.1的截图:

 

好烂啊有点差凑合看看还不错很精彩 (11 人打了分,平均分: 3.36 )
Loading...
各种流行的编程风格

各种流行的编程风格

在过去的N年中,我遇到了很多使用囧然不同风格的开发者,下面是我所知道的一些,你还知道其它的吗?

散弹枪编程

这种编程风格是一种开发者使用非常随意的方式对待代码。“嗯,这个方法调用出错了……那么我会试着把传出的参数从 false 变成 true!”,当然依然出错,于是我们的程序员会这样:“好吧,那我就注释掉整个方法吧”,或是其它更为随意的处理方式,直到最后让这个调用成功。或是被旁边的某个程序员指出一个正确的方法。

如果我们把一个正规的程序员和一个撞大运的程序员放在一起做结地,那么,那个正规的程序可以马上变得发疯起来,并且,可以把正规的程序员的智商降到最低。两个撞大运的程序员不应该在一起做结对编程,这是因为他们破坏性的才能会造成的伤害会比只有一个还差。

撞大运编程

这是一种比散弹枪编程要温和一些的编程方式,我相信这种方式可能会是大多数程序员都会使用的方式。这种编程方式经常出现于程序员并不确切知道他们在干什么,也不知道所写的程序的本质和实际,但是可以让程序工作起来。他们以一种撞大运的方式在写程序,某些时候,他们根本就不知道某个错误的原因,就开始稀里糊涂地修改代码。一旦出现问题,他们会用两条路:1)停下来,理解一下程序,找到出错的原因。2)使用散弹枪编程方式开始解决问题。

测试驱动开发(Test Driven Development)是一种可以用来拯救上百万的撞大运编程的程序员。于是,他们有了一个更为NB的借口:只要我的程序通过测试了,你还有什么话好说?别骂我,测试驱动开发是一个不错的事物,其主要是用来控制撞大运开发所带来的问题。

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (51 人打了分,平均分: 4.67 )
Loading...
最为奇怪的程序语言的特性

最为奇怪的程序语言的特性

这些最为奇怪的程序语言的特性,来自stackoverflow.com,原贴在这里。我摘选了一些例子,的确是比较怪异,让我们一个一个来看看。 

1、C语言中的数组 

在C/C++中,a[10] 可以写成 10[a] 

“Hello World”[i] 也可以写成 i[“Hello World”] 

这样的特性是不是很怪异?如果你想知道为什么的话,你可以看看本站的这篇文章——《C语言的谜题》中的第12题。 

2、在Javascript中 

 ‘5’ + 3 的结果是:’53’
 ‘5’ – 3 的结果是:2 

3、C/C++中的Trigraphs 

int main() {
   cout << "LOL??!";
}

上面的这段程序会输出: “LOL|”,这是因为 ??! 被转成了 | ,关于Trigraphs,下面有个表格: 

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (26 人打了分,平均分: 4.27 )
Loading...
“第六感装置”的惊人潜力

“第六感装置”的惊人潜力

我们总是在于“现实生活”和“电脑的数字生活”中的差异,这两个世界难道不可以合并吗?美国MIT Media Lab(麻省理工学院媒体实验室)的天才学生普拉纳夫- (Prarnav Mistry),发明了一项结合实体世界和虚拟世界的科技,令人惊喜,感叹创造力的惊人。下面是视频。翻译还OK。

好烂啊有点差凑合看看还不错很精彩 (29 人打了分,平均分: 4.21 )
Loading...
PI小数点位数的新纪录

PI小数点位数的新纪录

PI小数点后的位数据个数据的纪录被刷新了,被一台PC机刷新的。新的纪录把PI的小点数后面的位数整到了近2.7万亿位,太BT了。下面的链接是本次经录的通告:

http://bellard.org/pi/pi2700e9/announce.html

这个通告宣称:

  • PI后的小数点位数被计算到了2,699,999,990,000位。
  • 为了保存计算结果,一共花了,1137GB的硬盘空间。
  • 本次计算使用了价值2000欧元左右的PC机,CPU是Core i7 CPU at 2.93 GHz ,内存6GB,5个1.5TB的希捷硬盘。
  • 操作系统使用的是Linux  64 bit Red Hat Fedora 10 distribution,7.5TB的硬盘被做成了RAID-0阵列,使用了ext4文件系统。
  • 整个计算时间花了131天(4个半月),其中,103天用于计算PI的二进制结果,13天用于验证二进制结果,花了12天把二进制转成十进制,最后花了3天再验证了转换。
  • 上一次的记录是2.577 万亿小数位,于2009年8月17日创造。其使用了超过百万欧元的超级计算机(Appro Xtreme-X3 Server)。

相关的技术细节请看这里:http://bellard.org/pi/pi2700e9/pipcrecord.pdf

我想了想,算这个玩意花了多少度电,产生了多少废气,太不环保了。呵呵。

好烂啊有点差凑合看看还不错很精彩 (8 人打了分,平均分: 3.75 )
Loading...
2010 = 1+2-(3-4-5)*6*7*8-9

2010 = 1+2-(3-4-5)*6*7*8-9

 这是一个数字游戏,使用123456789,并按照123456789的顺序,使用加减乘除以及括号,进行操作使其结果等于2010(原来的游戏是使其值为100,请看这里),那么会有多少种解法呢?下面是924种解法,其让我想起了“24点游戏”。

这里,如果让你写一段程序来生成所有的可能,你知道怎么写这段程序吗?

使用单个数

2010 = 1+2-(3-4-5)*6*7*8-9
2010 = 1-(2+(3-4-5)*6*7)*8+9
2010 = 1+2+(3+4*(5+6*7+8))*9
2010 = 1+2*(3*4*(5+6)-7)*8+9
2010 = 1*2*3*(4*(5*6+7*8)-9)
2010 = 1+2+(3+4*(5-6+7*8))*9
2010 = (1-2-3+4*(5/6+7*8))*9
2010 = (1+2+3*4)*(5-6+(7+8)*9)
2010 = 1+2+((3*(4+5)+6)*7-8)*9
2010 = (1+2+3)*(4*(5*6+7*8)-9)
2010 = 1+2+3*(4*(5+6)*(7+8)+9)
2010 = (1*2/3)*((4+5)*6*7*8-9)
2010 = (1-2-3)*((4+5)/6-7*8*9)
2010 = (1*2+(3-4*(5/6-7))*8)*9
2010 = 1*(2+(3-4*(5/6-7))*8)*9
2010 = (1+2*(3+4))*(5-6+(7+8)*9)

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (17 人打了分,平均分: 3.71 )
Loading...
程序命名的一些提示

程序命名的一些提示

选择一个正确的名字是编程中最重要的事。以前酷壳向大家推荐过两篇文章《编程命名中的7+1个提示》 和《编程中的命名设计那点事》,今天再向大家推荐一篇。一个正确的命名可以让你更容易地理解代码的程序,好的命名可以消除二义性,消除误解,并且说明真实的意图,甚至可以让你有清新的气息以让你更能吸引异性。;-)

方法,类和变量

正确的名字可以让你的程序顾名思义,下面是一些提示:
  • 不要使用”ProcessData()“这样的命名
    你如果在你的程序生涯中使用这样的函数名,那么这意味着你将是一个不合格的程序员而会被淘汰或解雇。请明确实际的功能。比如:ValidateUserLogin(验证用户登录) 或 EliminateDuplicateRequests(去除重复请求) 或 ComputeAverageAge(计算平均年龄),等等。
  • 让命名来帮你设计程序
    让我们假装有这么一条规则是——“任何的函数是有输入/输出的”,那么,你需要思考的是所有的把input变成ouptut的步骤,然后,你可以选择一个简短的句了来说明你的这段程序,然后,把这个短句再精练一下,最终成为你的函数名,而那个短句则成了你程序的结构。

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (12 人打了分,平均分: 3.58 )
Loading...