恐怖的C++语言

恐怖的C++语言

我爱C++ Linus曾经(2007年9月)在新闻组gmane.comp.version-control.git里和一个微软的工程师(Dmitry Kakurin)争执过用C还是用C++,当时的那个微软的工程师主要是在做Git的Windows版,但他却发现Git的源码居然是C语言写的,而不是C++,于是他(Dmitry Kakurin)在Linux社区里发贴表示对Linux的不满,语言很直接:

Pure C as opposed to C++. No idea why. Please don’t talk about portability, it’s BS. (纯C写的,而不是C++,不知道为什么,请别告诉我是为了移植性,这完全是胡扯。)

Linux之父Linus Torvalds马上跟贴,在贴子中,Linus言辞很直接,直接表明C++是一个很恐怖的语言,他在贴子中说:

*YOU* are full of bullshit. C++ is a horrible language. It’s made more horrible by the fact that a lot of substandard programmers use it. (你才是完全在胡扯。C++是一门很恐怖的语言,而比它更恐怖的是很多不合格的程序员在使用着它

Linus的这个观点我是比较同意的,我个人也在几年前的《STL String类的写时才拷贝》以及以后的一些文章中表达过C++的确并不是一个很成熟的语言,这种观点一直都围绕着我。这是因为它的学习成本实在是太高了,编译器和类背着你做了很多你不知道的事,而且,C++非常容易地出错和发生很多意想不到的问题。

当然,这篇文章并不是要继续声讨C++,也不是回顾以前的某个事件。我们这里只谈技术。昨天,我在网上看到一个邪恶的C++的示例,在这里给大家share一下,让大家看看C++这种编程语言的恐怖和邪恶的一面。下面的这个例子,比那个“#define  private  public”还更加邪恶。

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (39 人打了分,平均分: 4.54 )
Loading...
Firefox插件WebMail Notifier

Firefox插件WebMail Notifier

当你的邮箱有新邮件时,WebMail Notifier此插件会自动提醒你。

支持:gmail, yahoo, hotmail, daum, naver, empas, nate等。

 
版本 1.5.3
兼容版本 Firefox: 1.5 – 3.7a1pre
已更新 2009 年 10 月 8 日
开发者 Byungwook Kang
主页 http://webmailnotifier.mozdev.org/
评分 评分 4 超过了 5 星 728 条意见
下载次数 3,239,874

查看:https://addons.mozilla.org/zh-CN/firefox/addon/4490

好烂啊有点差凑合看看还不错很精彩 (2 人打了分,平均分: 3.50 )
Loading...
橡皮鸭程序调试法

橡皮鸭程序调试法

Rubber Duck Debugging下面,让我来为你介绍一个程序调试大法——“橡皮鸭程序调试法”,这个方法在调试界是很出众的,实施起来相当方便和简易,几乎可以随时随地地实验,几乎不需要借助任何的软件和硬件的支持,你甚至可以把你的程序打印出来,在纸面上进行调试。

那么,为什么这个方法要叫做橡皮鸭呢?因为橡皮鸭子是西方人在泡澡时最喜欢玩的一个小玩具,所以,这个东西应该家家户户都必备的。因为,这个方法由西方人发明,所以,就被取名为“橡皮鸭”了。

好了,话不多说,下面是整个调试方法的流程。

  1. 找一个橡皮鸭子。你可以去借,去偷,去抢,去买,自己制作……反正你要搞到一个橡皮鸭子。
  2. 把这个橡皮鸭子放在你跟前。标准做法是放在你的桌子上,电脑显示器边,或是键盘边,反正是你的跟前,面朝你。
  3. 然后,打开你的源代码。不管是电脑里的还是打印出来的。
  4. 对着那只橡皮鸭子,把你写下的所有代码,一行一行地,精心地,向这只橡皮鸭子解释清楚。记住,这是解释,你需要解释出你的想法,思路,观点。不然,那只能算是表述,而不是解释。
  5. 当你在向这只始终保持沉默的橡皮鸭子解释的过程中,你会发现你的想法,观点,或思路和实际的代码相偏离了,于是你也就找到了代码中的bug。
  6. 找到了BUG,一定要记得感谢一下那个橡皮鸭子哦。

什么?你觉得这个方法太“愚蠢”,太“弱智”了?是的,看上去,会这样做的人脑子好像是有点毛病。不过,我要告诉你的是,这个方法的确有效。因为,这就是“Code Review”的雏形!下面让我来给你解释一下。

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (15 人打了分,平均分: 4.87 )
Loading...
别的程序员是怎么读你的简历的

别的程序员是怎么读你的简历的

下面这个图片来源国外,是一个关于程序员面试时的简历,被人事部门和程序员本身评审的角度不同的图片。当然,这是一个从国外面试的视角制作的图片,不过,可以看出,其中很多东西都是和国内是相同的。让我们通过这个图片也来了解一下自身吧。

程序员怎样阅读简历(点击看大图)

下面是我对其做的翻译,翻译水平有限,请大家指正。

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (30 人打了分,平均分: 4.80 )
Loading...
给我一个序列号

给我一个序列号

下面这个链接是CodeSmith官网网站论坛上的一个贴子。http://community.codesmithtools.com/forums/p/10000/37140.aspx。在这个贴子里,某位大哥问CodeSmith要一个序列号,一个叫Blake Niemyjski的人,可能是CodeSmith这家公司的客服人说回答到,如果要序列号,需要找他们的销售人员。

而这位老哥却说,“我要的是一个被破解的序列号,我手上有很多CodeSmith 5.0版的序列号,都可以使用,而你们把软件升级到了5.1,那些序列号都无法使用了”。客服人员无奈下,只得给出了下面的序列号:

CS50P-0NLY4-1D10T-W0ULD-TRYT0-45KU5-TH15Q

当然,这个序列号并不行,而老哥没有发现这序列号中的端倪,继续问,后面,很多“热心网友”们都来帮忙,给了一些如下的序列号:

BL4K3-WH47K-1ND0F-700LI-57H1S-1DI07-4NYWY
W3LLH-4S7H3-P3NNY-DR0PP-3D4UY-37U45-5WIP3
UKINT-RYTH1-51FUH-AVAVR-Y5MAL-P3N1S
1FUH4-VN0P3-N1STH-1S1S8-3TT3R-JU57K-1DD3N

呵呵,你看出这些序列号其中的含义了吗?呵呵。下面是翻译:

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (8 人打了分,平均分: 4.88 )
Loading...
把ASCII图转成图片

把ASCII图转成图片

我们都知道有很多软件帮我们把图片转成ASCII码图,这里这个工具是帮我们把ASCII图转成漂亮的图片。这个开源的软件是一个用Java写成的一个命令行的工具。对于这个工具的目的,我个人以为如下:

  • 其一,可以把别人的ASCII图转成图片,于是更好看一些。
  • 其二,你可以使用ASCII码画图,而不需要使用图片编辑器。
  • 其三,因为是命令行,所以,你完全可以以脚本或程序的方法来作图了。

这个工具软件叫ditaa,其网址是:http://ditaa.sourceforge.net/

这个小工具支持一些语法定义,可以帮你更好地产生图片,如下所示:

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (7 人打了分,平均分: 4.71 )
Loading...
13个不错的Javascript和CSS的菜单

13个不错的Javascript和CSS的菜单

以前发布过两篇文章——“30种时尚的CSS网站导航条”和“20个优秀的Javascript导航技术”,今天向大家介绍一下,13个不错的Javascript和CSS的菜单。

1) 性感的滑动型菜单 

Sexy-menu - 13不错的Javascript CSS菜单

演示: Mootols Version
演示:Script.aculo.usVersion

 

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (9 人打了分,平均分: 5.00 )
Loading...
VIM有趣的命令

VIM有趣的命令

前几天逛豆瓣,发现了VIM一个有趣的小技巧。

在VIM中输入:h!试试看会发现什么。

再输入:h 42呢?又会有什么发现?

好烂啊有点差凑合看看还不错很精彩 (15 人打了分,平均分: 4.93 )
Loading...
Richard Feynman, 挑战者号, 软件工程

Richard Feynman, 挑战者号, 软件工程

源文:链接  (本文主要根据挑战者号的问题,以及Richard Feynman那对NASA严厉的批评报告,批评了不适当的“自顶向下”的设计方法,并总结了一下软件工程和其它工程的相通的一些观点。翻译水平有限,欢迎指正)

Challenger Crew

佛罗里达州,美国东部时间1986年1月28日上午11时39分,挑战者号航天飞机 执行为期6天的STS-51-L 任务,在发射后,其右侧固体火箭助推器(SRB – Solid Rocket Booster)的O型环密封圈(用于连接两节助推器)失效,泄漏出来的热汽达到了5000华氏度,直接蒸发了O型密封圈,并灼烧了毗邻的外部燃料舱,在几秒钟内,外部燃料舱出现结构连接失效,空气的动力迅速分解了航天飞机。在而航天飞机上升72秒以后,助推器脱落,导致航天发飞向侧面滑出。几乎在引航员 Michael J. Smith 发出”Uh oh” 的同时,整个航天飞机完全解体,片刻,航天飞机内部发生爆炸,所有7名宇航员罹难。 那时的我还只是一个小孩,我从电视下方滚动的新闻条目知道了这一惨剧。

在那个时候,火箭助推器工程师曾经警告过这个O型环可能存在问题,但可惜的是,NASA的管理层忽略了这个问题。Challenger Explosion美国总统里根委派罗杰斯委员会对事故进行了调查,调查成员包括著名的物理学家Richard Feynman。其不羁的态度和直来直去的方法和罗杰斯委员会的风格形成了鲜明的反差。主席罗杰斯,一个政客,评论Feynman是一个“真正的痛苦”。最后,在委员会提交的报告中,Feynman反判的观点几乎被清除了出去。并且,Feynman曾被主席威胁过要把他的名字从报告中完全除掉,但最终,他们还是同意在报告中加一个附录,但只是个人观点—— Appendix F – Personal Observations on Reliability of Shuttle

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (15 人打了分,平均分: 5.00 )
Loading...
装完Ubuntu 9.10后要干的事

装完Ubuntu 9.10后要干的事

Ubuntu 9.10刚刚release,就有人在网上发表了贴子告诉大家在装完这个操作系统后,还需要去安装的一些开源免费软件,相当丰富。不过,这个贴子的链接被GFW干掉了,所以,你需要使用Tor的支持,或是使用Google Reader才能查看源文RSS链接)。而这个贴子非常长,所以我无法作全文翻译,不过这个贴子的内容具有很强的指导意义,所以我在这里为大家总结一下该文所提到的那些诸多的东西。(关于那些如何翻墙的事情怎么做我就不多说了,网上有很多相关的文章,你自己搜索一下就可以找到)

基本工作

1)第一件事自然是下载那些Ubuntu的镜像站点表,以及更新操作系统的一些补丁。“系统”->“管理”-> “更新管理器”。

2)第二件事是设置文件目录共享。就是在文件夹上点右键,在菜单中选“属性”,然后在对话框中选“共享”,那个对话框整得跟XP几乎一模一样。当然,这需要samba的支持。(sudo apt-get install samba)

3)接下来是设置时间同步。通过NTP(Network Time Protocol)同步你的时间。通过点击“系统”->“管理”-> “时间/日期”,然后选择“Keep synchronized with Internet servers”(和Internet服务器同步),于是你需要安装NTP协议。(sudo apt-get install ntp)

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (11 人打了分,平均分: 5.00 )
Loading...
文件备份的几个简单命令

文件备份的几个简单命令

我们知道,备份文件是一件很重要的事情,我在《优秀程序员的十个习惯》一文向大家说明了备份文件应该是程序员最基本的一个习惯。本文主要是向大家介绍一些在备份文件和数据时能用得到的一些示例,当然,这些示例主要是通过一些命令行或是脚本来实现的。这就是用命令行和脚本的优势,你可以实现比较灵活和自动的定制。

本文中的脚本和示例都是主要是通过zip, tar, ftp, wget和shell脚本来完成。在Linux下,你可以什么也不用安装任何程序,但在Windows下,你需要安装zip 和wget这三个命令(在本文的最后有这三个命令的链接,你可以去下载)

几个小脚本

1)首先,我们来看一下,如何给某目录打个zip包。

Windows:

 zip -r backup.zip "c:\yourfolder"

Linux: (打包自己的home目录)

tar -czvf ~/backup.tgz --exclude backup.tgz ~/

阅读全文 Read More

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