JS1K 演示

JS1K 演示

以前本站发布过很多和Javascript相关的东西,如:《又一个Javascript试验田》、《一个Windows 3.1的Web网站》、《哥是玩程序的》。今天要介绍另外一组,先看下面的这个Javascript特效(在IE下无法正常工作),你可以用Chrome查看,很炫。不过最炫的是其源码,非常的简单,不超过1K。如果你要知道这个效果的原理,这里有一个教程。这里有个网站:JS1K Demo, 这个站上主要收集一些Javascript不大于1K的程序。



下面是其源码:

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (13 人打了分,平均分: 2.38 )
Loading...
微软最囧的UI

微软最囧的UI

以前,本站介绍过一些Ugly的UI,今天我们来看看微软Windows里的“画笔”程序,看看微软的某个功能干了什么样的囧事。

我打开了一个比较大的图片,有点太大了,我想缩小一下看看,很好,微软在菜单项里供了Zoom选项,其中有一个Custom(自定义),挺不错的。

但是,当我看到这个自定义的对话框后,我彻底无语了,大哥你是怎么想的啊……

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (23 人打了分,平均分: 3.78 )
Loading...
免费电子书列表

免费电子书列表

在StackOverflow上,有人要打算收集个免费电子书的列表,结果很快就有人分享了一个列表。很不错,我就转过来了。原帖的地址在http://stackoverflow.com/questions/194812/list-of-freely-available-programming-books (注意:有些连接可能会被墙掉)

List of Free Programming books (compiled): Meta-List

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (19 人打了分,平均分: 3.79 )
Loading...
最佳编程语录

最佳编程语录

以前本站发布过《22条经典的编程引言》、《编程引言补充》、《Linus Torvalds 语录》还有《十条不错的编程观点》。今天向大家介绍“最佳编程语录”,条条都是很不错的语录,如同我们的太阳,照亮了我们的方向(所以我们选用了一个红色的图片,希望能够通过五毛们的网络审查)。其中只有一两条在以前本站发布过的文章中出现过。这篇文章的出处在这里,下面是“Neo”和“陈皓”的翻译,我们的翻译水平有限,所以,我们提供了中英文对照,有不当之处,还请各位指正。

A good programmer is someone who looks both ways before crossing a one-way street. — Doug Linder, systems administrator

好的程序员这样一类人,这类人在横穿一条单行道前都要先看一下路两边。– Doug Linder, 系统管理员

A most important, but also most elusive, aspect of any tool is its influence on the habits of those who train themselves in its use. If the tool is a programming language this influence is, whether we like it or not, an influence on our thinking habits. — Edsger Dijkstra, computer scientist

关于工具,一个最重要的,也是最不易察觉的方面是,工具对使用此工具的人的习惯的潜移默化的影响。如果这个工具是一门程序语言,不管我们是否喜欢它,它都会影响我们的思维惯式。 –Edsger Dijkstra, 著名的计算机科学家。

Being abstract is something profoundly different from being vague… The purpose of abstraction is not to be vague, but to create a new semantic level in which one can be absolutely precise. — Edsger Dijkstra

抽象和模糊完全地不同,抽象的目的并不是把事情变模糊,而去创建一个新的语义层,在那里是绝对精确的描述。 — Edsger Dijkstra

Besides a mathematical inclination, an exceptionally good mastery of one’s native tongue is the most vital asset of a competent programmer. — Edsger Dijkstra

除了数学爱好,对于一个有能力的程序员来说,出色地掌握自己的母语是最宝贵的财富。– Edsger Dijkstra

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (27 人打了分,平均分: 3.78 )
Loading...
五种应该避免的代码注释

五种应该避免的代码注释

在酷壳,有很多文章都提到了代码注释,如:《十条不错的编程观点》、《优质代码的十诫》、《整洁代码的4个提示》、《惹恼程序员的十件事》等等。今天,某国外的程序员在这里列举五种应该避免的程序注释,我觉得比较有道理,但我觉得有少数几个观点也并不绝对。所以,我把原文的这五种应该避免的程序注释罗列在下面,并放上原作者和我的个人观点作为比较。希望对大家有用。

一、自恋型注释

(注:原文为Proud,我觉得“自恋”更好一点)

public class Program
{
    static void Main(string[] args)
    {
        string message = "Hello World!";  // 07/24/2010 Bob
        Console.WriteLine(message); // 07/24/2010 Bob
        message = "I am so proud of this code!"; // 07/24/2010 Bob
        Console.WriteLine(message); // 07/24/2010 Bob
    }
}

原文:这样的程序员对于自己的代码改动非常骄傲和自恋,所以,他觉得需在在这些自己的代码上标上自己的名字。其实,一个版本控制工具(如:CVS或Subversion)可以完整地记录下所有的关于代码的改动的和作者相关的一切信息,只不过不是那么明显罢了。

陈皓:我同意原文的观点。在我的团队里也有这样的事情发生。有段时间我认真思考过这样的事情,是否应该把这样的事情在代码中铲除出去。后来,我觉得,允许这样的行为并不一定是坏事,因为两点:

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (28 人打了分,平均分: 4.14 )
Loading...
HTML5 和 Flash 之争

HTML5 和 Flash 之争

文章来源

二者之间的竞争会演变成为一场“战争”吗?(现在甚至出现了可以把Flash转成Javascript/HTML5的工具)

首先需要弄清楚二者之间最主要的区别,HTML 是一种语言(超文本标记语言 – HyperText Markup Language),而 Flash 是 Adobe(其收购了Macromedia)公司的一个浏览器插件(Plugin)。HTML5 目前还是 W3.org 规范中一个草案,这意味着其还没有最终定案,希望到 2012 年这项工作能够完成。

以下是二者各自的一些特点:

HTML5

这个新的技术更为易学和易用,比较 .FLA 和 .SWF 文件更容易编辑。并且基本上过去所有由 Flash 才能制作的动画效果都能够使用 JS + HTML5 + CSS 3 来完成,不过工作量可能会更大一些,不仅文件尺寸会增大,性能方面也会有影响。

以前为 Web 表单设定风格我们一定需要使用到 JavaScript, 但是 HTML5 中的 contenteditable 属性让我们可以做得更多。一些新的输入类型(Types of Inputs)也被加入到 HTML5 中,如:电子邮件,数字,值范围等等。

用户不仅仅需要一个支持 HTML5 的浏览器,还需要 CCS 3 和新的 JavaScript 引擎的支持。

免费(不包括第三方字体和音频视频等等)

更好地移动设备支持(HTML5 正在被运用于 iPhone,iPod,iPad 和 Android 应用的开发)

拖拽,事实上这不是 HTML5 的一部分,但是在新版本的 GMail 中,从桌面拖拽文件到浏览器能够用 HTML5 很好地实现。对于 Flash 我不知道这是否可以实现?

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (12 人打了分,平均分: 3.50 )
Loading...
计算机编程简史图

计算机编程简史图

这个图片太经典了,本来想翻译的,后来觉得这么经典的图片可能早已被人翻译了,简单的Google一下,果然有人翻译了。那我就把英文版和中文版都转过来吧。我们可以看到,其中很大一部分人都和Unix有着不解之缘(参见《Unix传奇上篇Unix传奇下篇》)

什么也不说了,直接上图(图片比较大,单击图片看大图)


计算机编程简史图(英文版)

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (20 人打了分,平均分: 3.75 )
Loading...
苹果开发工具Xcode 4 第二预览版

苹果开发工具Xcode 4 第二预览版

今天,苹果公司向开发者发布Xcode 4 Preview 2,这是一个IDE用来开发在Mac,iPhone,iPad上应用程序的工具。在这个第二预览版中,主要有以下新的功能:

  • 这个版本不像以往的版本有太多的窗口,其把以前那些窗口督统一起来,只有一个窗口。
  • 集成了Interface Builder(以前这个东东和Xcode是两个东西)
  • Xcode Assistant 可以让你的设计和代码同时呈现。
  • LLVM Compiler 2.0。LLVM是下一代的编译器,其完全支持C,C++和Objective C,而且编译的速度和编译成的执行速度都快于GCC。同时也引入了LLDB做为新的调试器。
  • 多版本编译。这个功能可以让你在IDE中编译两个版本的代码,而且可以和Subversion或Git集成。

你可以访问 What’s New 来看看具体的细节。

苹果开发工具Xcode 4 Preview 2
好烂啊有点差凑合看看还不错很精彩 (9 人打了分,平均分: 3.11 )
Loading...
检查素数的正则表达式

检查素数的正则表达式

一般来说,我们会使用正规表达式来做字符串匹配,今天在网上浏览的时候,看到了有人用正则表达式来检查一个数字是否为素数(质数),让我非常感兴趣,这个正则表达式如入所示:

检查素数与否的正则表达式

要使用这个正规则表达式,你需要把自然数转成多个1的字符串,如:2 要写成 “11”, 3 要写成 “111”, 17 要写成“11111111111111111”,这种工作使用一些脚本语言可以轻松的完成。

一开始我对这个表达式持怀疑态度,但仔细研究了一下这个表达式,发现是非常合理的,下面,让我带你来细细剖析一下是这个表达式的工作原理。

首先,我们看到这个表达式中有“|”,也就是说这个表达式可以分成两个部分:/^1?$/ 和 /^(11+?)\1+$/

  • 第一部分:/^1?$/, 这个部分相信不用我多说了,其表示匹配“空串”以及字串中只有一个“1”的字符串。
  • 第二部分:/^(11+?)\1+$/,这个部分是整个表达式的关键部分。其可以分成两个部分,(11+?)\1+$,前半部很简单了,匹配以“11”开头的并重复0或n个1的字符串,后面的部分意思是把前半部分作为一个字串去匹配还剩下的字符串1次或多次(这句话的意思是——剩余的字串的1的个数要是前面字串1个数的整数倍)。

可见这个正规则表达式是取非素数,要得到素数还得要对整个表达式求反。通过上面的分析,我们知道,第二部分是最重要的,对于第二部分,举几个例子,

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (45 人打了分,平均分: 4.44 )
Loading...
Kent Beck 谈单元测试和持续部署

Kent Beck 谈单元测试和持续部署

文章来源

2010年7月2日,Roy Osherove 和 Kent Beck 在 blog.typemock.com 进行了一次对话,话题涉及单元测试(Unit Testing),JUnit Max(Kent 开发的一个单元测试的 Eclipse Plugin,不免费),和面向初创企业的精益方法(Lean Startups)。

单元测试和 JUnit Max
作为软件开发方法学的大师、极限编程XP的创始人、敏捷宣言的创始人之一,Kent Beck 一直在努力最大化地利用单元测试的价值,他说一些程序员仍然认为单元测试并不是他们的工作,但是单元测试确实能够提高软件的质量。目前他正在开发 JUnit Max,这是一个 Eclipse plugin,每当程序员保存一个 Java 源文件的时候,JUnit Max 就会运行测试并报告反馈信息。测试中的错误将会如同编译错误一样被报告给程序员。JUnit Max 的核心思想是测试错误应该和编译错误一样被 IDE 报告给程序员,程序员不需要额外的菜单选项或者运行其他的工具来运行测试。特别是那些经常失败的测试,对于程序员来说是非常有价值的反馈信息。在测试驱动开发(Test Driven Development – TDD)中,我们重复着这样一个循环:“编写一个‘失败’的测试(Failing Test)” – “编码实现功能以便让测试通过”,随着开发的深入,测试越来越丰富,测试能够反馈给程序员的信息也越来越多,它们可以帮助程序员找出那些需要改进的代码。JUnit Max 能够缩短这个循环的周期,因为它更为频繁地运行测试和提供反馈。Roy 问道:“当你一个人编码的时候,你是否严格地遵循 TDD,即一定要先写测试,然后写实现代码。我个人发现这并不是一件容易做到的事情,特别是当一个人编码的时候。” Kent 回答:“视情况而定,有时候并不需要死板地遵循 TDD,比如当我在做一些探索性或者说实验性的编码时,并不需要写测试,因为我只是想尝试一下某些功能和特性。”

阅读全文 Read More

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