纯文本配置还是注册表

纯文本配置还是注册表

我们知道Unix/Linux下的程序配置文件从来都是纯文本的,你可以自由地修改和查看,他们也没有什么什么XML之类的玩意(参看XML的这两篇文章:),这个最重要的Unix文化(参看Unix传奇下篇)40多年来就这么沿续下来了。我很佩服Microsoft的创新能力,一会儿用INI,一会儿用注册表,一会又是用XML,这就是Windows的编程中那“强大”的创新。在网上又看到有人在争论为什么用注册表而不是纯文本,所以,写下这篇文章。

引入注册表所谓的原因

首先,让我们来看一下为什么微软觉得要使用注册表而不是ini文件,下面是一些其列出来的ini方面的毛病:

  • ini文件不支持Unicode
  • ini文件的安全权限不够
  • ini文件在多进程下存取会有问题
  • 如果一个进程锁上了这个文件,另一个进程就无法获得,只能出错。
  • ini文件只能包含字符串,无法使用二进制
  • 解析ini文件相对来说性能比较慢,第一次读写都需要把整个文件读入内存,然后再写回去。
  • ini文件最大只有32K
  • ini文件的默认目录在Windows系统目录下,只能这个目录只能Windows管理员才能访问
  • ini只能包含了两层,对于多层不支持。
  • 把ini文件放在中央服务器上管理很困难。

而微软说,注册表可以完美地解决这些问题。居然微软只说到了ini文件,但我觉得不单单是ini,所有的以纯文本方式保存配置文件的方法都会出现上述这样的问题。

我的观点

那么,当你在看到这些言论时,你是怎么想的?你有没有经过自己的独立思考?还是你觉得注册表完美地解决了所有的一切?下面是我的一些观点:

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (26 人打了分,平均分: 3.58 )
Loading...
Fix Bug的五个阶段

Fix Bug的五个阶段

下面的文章和《各种流行的编程方式》有异曲同工,请你不要理解错了。本文来源,翻译如下:

——————————————————

一个非常严重和困难的bug,能够成就一个饱经沧桑深受压力的有经验的专业程序员的职业生涯。经受这种考验的创伤程度,相当你受到了一次严重的身体伤害,离婚,或是家庭成为的离世。

研究人员在研究了计算机编程心理学后,得出了一个程序员们在解决一个困难的bug时的心路里程。这些不同的境界,很像为大众所知的Kübler-Ross Stages of Grief(这个模型描述了人对待哀伤与灾难过程中的5个独立阶段(否认,愤怒,耍赖,抑郁,接受)。绝症患者被认为会经历这些阶段),而且原因都很相似。就好像死亡所伴随的悲伤一样,fix一个bug是一个过程其初始化了一个事件,一开始是拒绝相信,其造就了你苦闷的情绪并开始逐步影响你的心智。这种苦闷的情结果会让你纠结要努力忍受,最终会你会找到一个满意的结果。

了解下面这几个bug-fixing的阶段,会让我们更好的生存下来,并持之以恒,最终带来……关闭我们所有的bug的结果。

第一阶段:抵触

本阶段的状态: 多疑 Skeptical. 生气 Offended. 易怒 Petulant.

1. 不理睬

也许这个bug会安静地离开。

2. 标记上“不是bug”

也许这是用户的错,或是本地配置有问题。是的,我确信就是那样,一会就会好的。

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (17 人打了分,平均分: 3.94 )
Loading...
程序员那些悲催的事儿

程序员那些悲催的事儿

在StakeOverflow上有这样一个贴子叫“Confessions of your worst WTF moment”(WTF就是What the fuck的缩写),挺有意思的,我摘几个小故事过来,希望大家在笑过之后能从中学到什么——所有的经验都是从错误中来的(我在其中加了一些点评)

我们公司的软件是给警察局用的,那是一个对用来处理被逮捕的人的系统,此系统还需要收集脸部特征和指纹信息,并且,这个系统和会向FBI的系统提交这些信息。当我们在测试这个系统的时候,我们一般都是用我们自己的指纹,当然,数据库联着的是我们的测试数据库。不过,有一次,在我们测试完后,我们忘了把系统切换回生产库,于是我们的测试数据库就联上了生产环境,于是我们的指纹信息和照片就散布到了其它系统中……清除我们警察局这边的还好办,但是,你需要波士顿警察局警司去法院签字才能从FBI的数据库中清除我们的信息。

点评:测试环境和生产环境的数据不要混在一起。

有一次,我需要向新系统中导入一堆数据,因为数据量太大,需要5个小时,只能在夜里来干,在系统需要正式使用前2个小时,数据导完了,此时是凌晨4点。随后,我需要删除一些数据,于是我在SQL命令地上输入了“DELETE from important_table; where id=4”。是的,我没有看到哪里还有个分号,天啊。

点评:这就是加班工作的恶果。另,在delete之前最好先做一次select。

我把我的管理员口令提交到了一个开源软件的源码里。

点评:1)版本管理器里的东西是删不掉的。2)一些用户和口令要hard code在代码里,所以,不要混用代码使用的权限和管理员的权限,小心管理程序的运行权限,为其注册专门的用户。

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (53 人打了分,平均分: 4.62 )
Loading...
“火柴棍式”程序员面试题

“火柴棍式”程序员面试题

有时候,有些面试题是很是无厘头,这不,又有一个,还记得小时候玩的的“火柴棍游戏”吗,就是移动一根火柴棍改变一个图或字的游戏。程序面试居然也可以这么玩,看看下面这个火柴棍式的程序面试题吧。

下面是一个C程序,其想要输出20个减号,不过,粗心的程序员把代码写错了,你需要把下面的代码修改正确,不过,你只能增加或是修改其中的一个字符,请你给出三种答案。

int n = 20;

for(int i = 0; i < n; i--){
    printf("-");
}

不要以为这题不是很难,我相信你并不那么容易能找到3种方法。我觉得,如果你能在10分钟内找出这三种方法,说明你真的很聪明,而且反应很快。当然,15分钟内也不赖。不过,你要是30分钟内找不到三种方法,当然,不说明你笨了,最多就是你的反应还不够快。嘿嘿。就当是玩玩吧。

下面是我的答案:

//第一种解法:在for循环中给n加一个负号
for(int i = 0; i < -n; i--)

//第二种解法:把 n 初始化成 -20
int n = -20;

//第三种解法:把for循环中的 i 初始化成40
for(int i = 40; i < n; i--)

不过,我要告诉你,以上这些答案都不对(我就知道你会偷看答案的),不过,顺着这些思路走很接近了。呵呵。

下面是正确答案——

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (56 人打了分,平均分: 4.59 )
Loading...
可视化的排序过程

可视化的排序过程

下面是一个日本程序员制做的一个可视化的排序过程,包括了各种经典的排序算法,你可以调整速度和需要排序的个数。宝酷以前也介绍过几篇相关的文章 一个排序算法比较的网站一个显示排序过程的Python脚本 关于各种排序算法的运行复杂度比较,请参看Wikipedia的排序算法比较

好烂啊有点差凑合看看还不错很精彩 (67 人打了分,平均分: 4.76 )
Loading...
计算机专业学生的大学生活

计算机专业学生的大学生活

下面看到某国外的同学描述的自己的大学生活,呵呵。做一下解释,

  • 正常的生活是,10点到17点上课,17点到22点是放松和work(chill相当于relax),22点到凌晨1点是社交活动,然后睡8小时。
  • 计算机专业的学生的生活是,只要你脑子还在转就work,脑子不转了,就睡2小时。(原来,国外的计算机大学的同学们在大学时就已在疯狂工作了,课都不上)(work是在校的学术作业项目(谢谢网友rho指正))
计算机专业学生的大学生活
计算机专业学生的大学生活

不过,看了一下上面的代码,我发现了两个问题:

  1. sleep(2),在posix下是秒,在windows下是毫秒。
  2. (hour >= 22  &&  hour < 1) 这个表达式永假。正确的是(hour >= 22 || hour < 1)

当然,我们并不能下结论——该同学的在学校里并没有学好编程。因为,你不知道Sleep 和 && 有没有被重载了。(你要把&&在某些情况下重载成||的行为也不是不可能 。注:在c++中,你无法重载内建类型的操作符

——————

最后说明一下,最近事太多(一个项目要上线,另一个项目需求分析和设计、招聘、宝酷服务器迁移、带孩子、申请签证、给人做培训),所以没有更新,大家见谅

好烂啊有点差凑合看看还不错很精彩 (13 人打了分,平均分: 3.54 )
Loading...
中国仍是IE6的重灾区

中国仍是IE6的重灾区

“IE6于10年前诞生,现在应该是我们同IE6告别的时候了。”微软公司日前推出IE6倒计时网站(the Internet Explorer 6 Countdown,网址为www.ie6countdown.com),旨在尽早淘汰IE6,让用户升级到新版IE浏览器。

值得注意一点的是,在这张百分比图上所显示的目前仍在使用IE6浏览器上网的百分比第一的是中国——34.5%,这个符合我国国情——什么都要争第一。我国人口世界第一占全世界1/4,网民也是世界第一,还在使用IE6的网民占全世界的1/3,可以我国网民的严重落后。根据CNNIC今年的报告,我国现有4.5亿网民,34%也就是1.5亿用户,也就是说你身边每三个人中就有一个在用IE6。而中国的IE6网民占全世界使用IE6网民的一半。

另外,我发现亚洲是重灾区啊,包括中日韩台印都很猛啊,看来微软在亚洲的营销的确不错。

我查看了一下sou-ip.com的2011年到今天为止访问统计,排名第一是的Chrome(41.5%),第二位的是Firefox(23.22%),第三位的是IE8(10.7%),第四位的是IE6(4.8%)。IE6的IP数有6400+。

看来,在我国程序员这个人群中,越来越多的人使用Chrome+Firefox,挺喜人的,但是IE6还有4.8%,还不如土耳其,马来西亚,印尼等国家。

好烂啊有点差凑合看看还不错很精彩 (12 人打了分,平均分: 3.58 )
Loading...
Google图片搜索下的的C String

Google图片搜索下的的C String

周五了,来轻松一下。如果你在Google的图片搜索里搜索“C String”,你会看到很多相当Sexy的图片,C String真是很性感,丁字裤(T String)已经算不了什么了,看了一下图片,才发现原来还有男士了,太猛了。

如果C String是这个样子,那么,其尾部应该有null终止符,而且最危险的是缓冲区溢出(Buffer Overflow)。哈哈。

好烂啊有点差凑合看看还不错很精彩 (22 人打了分,平均分: 4.18 )
Loading...
一些有意思的贴子和工具

一些有意思的贴子和工具

又到了介绍各种杂项的时候了,正如以前的这三篇(这篇这篇,和这篇)文章一样,本篇文章也给你介绍一些最近出现的一些有趣的东西。希望你能喜欢。

先说找工作吧,电影《该页无法显示》里的那个facebook主页上的招聘网页上是列了一堆问题,你可以去看看,你可以使用c/c++,Erlang,Haskell,Java,Perl,Python,PHP,Ruby来解题,不过只接受Unix/Linux下的版本, 不接受Windows的版本。无独有偶,DropBox招聘网页上也是些算法题,大家可以过去看看,不过需要翻墙。(现在,对于美国互联网企业来说,如果你没有被C2C,说明你根本不存在,如果你没有被墙,说明你还不算成功)

接下来给大家介绍一些文档和教程吧,都是英文的。

  • Java和C#的完整比较。这是一个相当完整的比较Java和C#语言的网页。很有意思,有助于你了解Java和C#的各种特性和不同。
  • SQL 性能调优。这个文档覆盖了IBM DB2MySQLOracle,PostgreSQL 和 Microsoft SQL Server。不过这个电子书还没有写完,你可以使用其RSStwitter 或 Facebook 来跟踪其进度。
  • Clever Algorithms。这个电子书也是免费的。其主要面向一些AI和面向自然的算法,一共45个。其包括概率随机算法,迭代进化算法,物理算法,可能性算法,蚂蚁蜜蜂式算法,免疫算法,神经算法等。里面大量的高等数学公式对我来说我已经看不懂了。不过,我相信这个电子书非常适合搞理论研究的人,或是需要抄袭一篇论文以顺利毕业的人使用。
  • HTML5 Audio & Video 处理。这是一组在线的幻灯片,请使用键盘光标键翻页。这是一组带着各种演示的幻灯片,对于你要学习HTML5的声音和视频相关的知识很有帮助。
  • C 语言的宏。你想知道C语的宏有哪些有些意思的用法吗?这篇文档不会让你失望的。其由浅入深地向你介绍了宏的各种用法。
  • 物理模拟F#教程。相信你一定玩过那种游戏,画一个任意形状的石头,其会从天上落下以砸下面的一个东西,这个教程用.NET的F#向大家说明了这种东西怎么去做。(演示程序

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (20 人打了分,平均分: 4.00 )
Loading...
另类UX让你输入强口令

另类UX让你输入强口令

昨天和大家说了一下关于口令破解的一些东西,那篇文章告诉我们需要设置一个比较强的不易破解的口令。

今天在网上看到一个强大的jQuery插件,叫NakedPassword,其通过“强大的用户体验”让你输入一个比较强且不易被破解的口令。虽然有点另类,但是我个人相当欣赏这个UX,因为UX实在是太到位了——只有你输入的口令比较强,图片中的女人才会脱光衣服

下面是演示:

请输入你的口令(输入时出现效果)

这个例子和以前的那个例子一样,告诉你UX设计是重要性。

(全文完)

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