Browsed by
分类: 轶事趣闻

开发时间估计

开发时间估计

项目管理中,项目任务时间估计是其中一个重要的环节。各种管理员人都觉得时间估计很重要,都希望时间估计能准确一些,但是,事实却并不如此。事实上,会下面这样的结果。

目前状态 完成进展 剩余任务估计
任务刚被分配,还没有做调查 完成0% 大约2周
完成需求分析和调查,攻克了难点 完成50% 大约2周多一点
我几乎做完了。只有出了点我事先没有想到的岔子。
不过,我已找到解决方法了。只是还需要一些时间
完成90% 大约2周多一点
我全部做完了,只是还要写文档,做Code Review,
单元测试和错误处理
完成99% 还需要2周

呵呵,这是怪我们的项目管理的方法论呢?还是怪我们太过草率的程序员呢?

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

chmod -x chmod的N种解法

chmod -x chmod的N种解法

在SlidesShare.net上有这么 一个幻灯片 ,其说了如下的一个面试题:

如果某天你的Unix/Linux系统上的chomd命令被某人去掉了x属性(执行属性),
那么,你如何恢复呢?

下面是一些答案:

1)重新安装 。对于Debian的系统:

sudo apt-get install --reinstall coreutils

2)使用语言级的chmod

  • Perl:perl-e ‘chmod 0755, “/bin/chmod”‘
  • Python:python -c “import os;os.chmod(‘/bin/chmod’, 0755)”
  • Node.js:require(“fs”).chmodSync(“/bin/chmod”, 0755);
  • C程序:
#include <sys/types.h>
#include<sys/stat.h>
void main()
{
chmod("/bin/chmod", 0000755);
}

阅读全文 Read More

好烂啊 有点差 凑合看看 还不错 很精彩 ( 10 人打了分,平均分: 3.30 )
Loading...
Go语言的”Issue 9″ Closed!

Go语言的”Issue 9″ Closed!

还记得Google发布Go语言没几天就要 更名Issue 9 的那个事吗?那是2009年11月的事了,差不多一年了,今天Google的Go语言团队终于正式回复这个bug了。

Comment 1097 by project member [email protected] , Today (11 hours ago)

The naming similarity is unfortunate. However, there are many computing
products and services named Go. In the 11 months since our release, there
has been minimal confusion of the two languages, so we are closing this
issue.

“名命类似是很不幸的。然而,那有很多的计算机产品和服务都叫Go。自从我们发布Go语言的这11个月里,这两个语言只有极少的混乱,所以,我们决定关闭这个问题。”

目前,该bug的状态为Unfortunate,这个状态很有创造性啊,在我的这么多年软件开发过程中,我还没有在任何的bug管理系统中见过这种状态,嗯,要不我也给我们公司的Defect Tracking System加上一个这种状态?

好烂啊 有点差 凑合看看 还不错 很精彩 ( 5 人打了分,平均分: 2.60 )
Loading...
主流文本编辑器学习曲线

主流文本编辑器学习曲线

下图是几个经典的文本编辑器的学习曲线,不排除其中有调侃和幽默的味道。

主流编辑器学习曲线图

注1 Pico ( PI ne CO mposer)是Unix操作系统中最常见的三种文字处理软件之一,具有文字编辑、搜索、拼写检查、文件浏览和段对齐功能,适合高效地编辑短小的文件。Pico是由华盛顿大学开发的免费软件,随着 pine 电子邮件处理软件发布。它是在Emacs的基础上以pine的邮件编辑为目标而开发的,所以其指令集是Emacs的子集,但是由于在界面上有提示快捷键,相对于vi和Emacs来说更加容易使用。由于Pico虽然是免费软件,但是它并不是开源软件,所以很多Linux版本并不包含Pico。这些版本通常提供一个界面类似的开源软件 nano ——Pico的克隆版。

注2 :图中的纵横坐标没有标明。我所理解的是——X轴是熟练程度,Y轴是技能。于是对于notepad 来说,技能和熟练程度呈正比。对于VS来说,熟练程度越大,所需要技能先是越来越多,而随着熟练程度的增长,你需要的技能也越少。而对于VI来说,一开始就需要相当大的技能,但一旦掌握这些技能,则你将会越来越熟练。而对于emacs来说,技能和熟练程度是呈旋涡状。

好烂啊 有点差 凑合看看 还不错 很精彩 ( 27 人打了分,平均分: 4.11 )
Loading...
Kick Ass小游戏

Kick Ass小游戏

还记得以前那个在IE的已打开的网页上的网址里输入一段javascript的代码后,你会发现这个页面里所有的图片元素都动了起来:(只能在IE浏览器里,Chrome和Firefox无效)

javascript:R=0; x1=.1; y1=.05; x2=.25; y2=.24; x3=1.6; y3=.24; x4=300; y4=200; x5=300; y5=200; DI=document.images; DIL=DI.length; function A(){for(i=0; i-DIL; i++){DIS=DI[ i ].style; DIS.position=’absolute’; DIS.left=Math.sin(R*x1+i*x2+x3)*x4+x5; DIS.top=Math.cos(R*y1+i*y2+y3)*y4+y5}R++}setInterval(‘A()’,5); void(0);

很类似一个叫Erik Rothoff Andersson的人又搞了 Kick Ass的游戏 ,代码如下:(用了一个js文件,所以就显得没有那么复杂了,但只能在Chrome和Firefox下有用)

javascript:var s=document.createElement(‘script’); s.type=’text/javascript’;document.body.appendChild(s); s.src=’http://erkie.github.com/asteroids.min.js’;void(0);

在已打开的网页上输入这段代码,你会发现网页的左上角上出现了一个三角形,然后,你可以开始使用

  • “左右方向键控制方向”,
  • “上方向键控制前进”,
  • “空格射击”,
  • “B键查看有什么东西可以被射击”,
  • “Esc键退出”,

于是就出现好玩的东西了。

为了方便你试验,你可以点击上面的这个链接,

Kiss Ass

你可以把这个链接加入收藏夹,当你需要删除某些网页上的广告或是很让你不爽的东西时,打开这个网址,就可以开始了。

(全文完)

好烂啊 有点差 凑合看看 还不错 很精彩 ( 17 人打了分,平均分: 4.00 )
Loading...
面向对象是个骗局?!

面向对象是个骗局?!

今天在网上看到网页叫“ Object Orientation Isa Hoax ”——面向对象是一个骗局,标题很有煽动性(注:该网站上还有一个网页叫 Object Orientation Is Dead ),好吧,打开看看上面有些 什么,发现这个网页是在收集一些关于“面向对象的反动言论”,没想到的是,很多言论出自很多大师之口。比如:Alexander Stepanov和Bjarne Stroustrup。这些言论挺有意思的,所以,我摘两段在下面:

第一段是Alexander Stepanov的(不要告诉我你不知道这个人,STL之父,关于他的故事,可以到 这里看看 )。他N年前作过一段采访, 原文在这里 (我非常建议大家去读一下这篇采访,相当过瘾), 译文在这里 (不过有地方把原意都译反了,我重译了一下),其中有一个问答被上述的那个面向对象反动言论的网页收录了:

Alexander Stepanov

Question :
I think STL and Generic Programming mark a definite departure from the common C++ programming style, which I find is almost completely derived from SmallTalk. Do you agree?

提问
我认为STL和泛型编程标志着非同一般的C++编程风格,而一般C++风格几乎完全是从SmallTalk派生过来的。你同意吗?

Answer :
Yes. STL is not object oriented. I think that object orientedness is almost as much of a hoax as Artificial Intelligence. I have yet to see an interesting piece of code that comes from these OO people. In a sense, I am unfair to AI: I learned a lot of stuff from the MIT AI Lab crowd, they have done some really fundamental work: Bill Gosper’s Hakmem is one of the best things for a programmer to read. AI might not have had a serious foundation, but it produced Gosper and Stallman (Emacs), Moses (Macsyma) and Sussman (Scheme, together with Guy Steele). I find OOP technically unsound. It attempts to decompose the world in terms of interfaces that vary on a single type. To deal with the real problems you need multisorted algebras – families of interfaces that span multiple types. I find OOP philosophically unsound. It claims that everything is an object. Even if it is true it is not very interesting – saying that everything is an object is saying nothing at all. I find OOP methodologically wrong. It starts with classes. It is as if mathematicians would start with axioms. You do not start with axioms – you start with proofs. Only when you have found a bunch of related proofs, can you come up with axioms. You end with axioms. The same thing is true in programming: you have to start with interesting algorithms. Only when you understand them well, can you come up with an interface that will let them work.

回答:
是的。STL不是面向对象的。我认为面向对象和人工智能差不多,都是个骗局。我至今仍然没有从那些OO编程的人那里看到一丁点有意思的代码。从某种意义上来说,我这么说对人工智能(AI)并不公平:因为我听说过很多MIT(麻省理工大) AI实验室里一帮人搞出来的东西,而且他们的确直正干了一些基础性的工作:Bill Gosper的Hakmem是程序员最好的读物之一。AI或许没有一个实实在在的基础,但它造就了Gosper和Stallman(Emacs), Moses(Macsyma)和Sussman(Scheme, 和Guy Steele一起)。

  • 我发现OOP在技术上是荒谬的,它企图把事物按照不同单个类型的接口来解构,为了处理实际问题,你需要多种代数方法——横跨多种类型的接口族;
  • 我发现OOP在哲学上是荒谬的,它声称一切都是对象。即使这是真的也不是很有趣——因为说一切都是对象跟什么都没说一样;
  • 我发现OOP的方法论是错误的,它从类开始,就好像数学应该从从公理开始一样。其实你不会是从公理开始的,而是从证明开始。直到你找到了一大堆相关证据后你才能归纳出公理,然后以公理结束。在程序设计方面存在着同样的事实:你要从有趣的算法开始。只有很好地理解了算法,你才有可能提炼出接口以让其工作。

<———>

下面,我们再来看C++的发明者Bjarne Stroustrup,在1998年IEEE采访时的一段话( 全篇见这里 ),下面是其中的几段话:(我的翻译如下)

阅读全文 Read More

好烂啊 有点差 凑合看看 还不错 很精彩 ( 37 人打了分,平均分: 4.14 )
Loading...
一些非常有意思的杂项资源

一些非常有意思的杂项资源

下面是一些最近在互联网上看到的一些各式各样的资源和文章,当然,都是英文社区的,本来想每一个写一篇文章,但是觉得一篇文章一句话真没劲,所以,把这些东西合并写成一篇文章,这样有利于减轻本站的负载,也有利于节省网络带宽,同样,也就节省了能力和电力,因此也就很环保,很低碳。呵呵。

Rendered music

阅读全文 Read More

好烂啊 有点差 凑合看看 还不错 很精彩 ( 16 人打了分,平均分: 2.63 )
Loading...
Windows编程革命简史

Windows编程革命简史

源文: A Brief History of Windows Programming Revolutions (Ron Burk)

首先,是 Windows API 和 DLL Hell 。(译注:DLL Hell——DLL灾难,就是微软的DLL升级时因为不同版本可能造成应用程序无法运行的灾难,首当其冲的是COM编程,相信大家都知道某些木马或是病毒更改了一些系统的DLL可以导致整个Windows不举,这就是DLL Hell) 于是,第一次革命是 DDE ——我们可以创建一个状态条在上面显示Microsoft的股票价格(译注:Dynamic Data Exchange,工作原理是: 甲方申请一块全局内存,然后把内存指针postmessage到乙方,乙方根据收到的指针访问那块全局内存)。

在那个时候,Microsoft 创建了 VERSIONINFO 资源来管理版本信息,当然,是用来消除DLL Hell。但是,另一个微软内部的小组发现了DDE的致命缺陷:这不是他们做的!

为了解决这个问题,他们创造了OLE(很像DDE,只是名字不一样),而且,我还记得在一次 Microsoft 大会上,某个微软的演讲者正式宣布—— Windows API 马上就会被 OLE API 所重写并取代,我还盲目地相信了这一说法。而且,所有的在图形界面的控件都会是OCX,那是OLE引入的接口,同样,其目的是为了消除DLL Hell。相信大家都记得,那个时候,我们是怎么地梦想着有一天,我们的应用程序(当然是非常大的程序)可以完全地被嵌入到Word文档中。

然而,在Microsoft的某处,Microsoft有些人开始信仰 C++,其确信MFC的出现并可以解决所有的一切问题,但是,因为历史原因,OLE并没有出局,其改了一个名字,叫COM,此时,我们立马意识到OLE(以前的DDE?)真正意味着什么——其用精心的版本管理系统来消除DLL Hell。与此同时,Microsoft的一个变节小组发现了一个MFC的致命缺陷:这不是他们做的!

阅读全文 Read More

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