Browsed by
作者: 陈皓

芝兰生于深谷,不以无人而不芳 君子修身养德,不以穷困而改志
C语言和sh脚本的杂交代码

C语言和sh脚本的杂交代码

在网上看到了一个把 C语言和bash杂并起来的例子,这个示子如下所示。在下面这个例子中,我们把脚本用#if 0这个预编译给起来,这样就不会让其编译到C语言中了。

#if 0
echo "Hello from bash!"
exit
#endif
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char* argv[]) {
  puts("Hello from C!");
  return EXIT_SUCCESS;
}

下面,让我看看如果来使用这样的程序:

$ sh test.sh.c
Hello from bash!
$ gcc test.sh.c -o test
$ ./test
Hello from C!

你甚至还可以做一个自我编译,并自我运行的源代码。如下所示:

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (15 人打了分,平均分: 3.93 )
Loading...
9个最常见IE的Bug及其fix

9个最常见IE的Bug及其fix

9个最常见IE的Bug及其fix

Internet Explorer – Web程序员的毒药。在IE上开发时间中有超过60%的时间是花在和IE的bug进行搏斗,让你的开发生产率严重下降。下面是一个教程,告诉你9个IE上最常见的BUG以及如何解决它们。

1. 居中布局

创建一个CSS定义把一个元素放到中间的位置,可能是每一个Web开发人员都会做的事情。最简单的做法是为你的元素增加一个margin: auto; ,然而 IE 6.0 会出现很多奇怪的行为。让我们来看一个例子。

#container{
	border: solid 1px #000;
	background: #777;
	width: 400px;
	height: 160px;
	margin: 30px 0 0 30px;
}

#element{
	background: #95CFEF;
	border: solid 1px #36F;
	width: 300px;
	height: 100px;
	margin: 30px auto;

}

下面是我们所期望的输出:

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (17 人打了分,平均分: 4.29 )
Loading...
在上班的时候浏览不相干网页

在上班的时候浏览不相干网页

相信大家在上班的时候都要去浏览很多与工作无关的网页,但总是害怕被同事尤其是老板看到,所以,你总是会有个“老板键”什么的。当有人从你身边经过的时候,你会很快速地切换你的桌面屏幕,让人看到你还在干与工作有关的事情了。

现在,一个具有创意的天才解决方案出来了——为什么不把这些与工作无关的网站的样子都变成和工作相关呢?这里有一个示例,真让人拍案叫绝。不知道大家知不知道一个叫http://www.fmylife.com/的网站?这个网站上都是一些“令人难堪”的小笑话,很多是荤的笑话,而有另一个网站是:http://fml.madsravn.dk/——这个网站就是fmylife的翻版,唯一不同的是,它把fmylife.com伪装成了一个Java 2 Platform SE v1.42的技术文档(请注意这个文档中的函数解释的内容),于是你就可以在上班的时候大胆地浏览fmylife.com上的内容了,因为那看起来就像在看Java的API文档。呵呵。

Java Doc版的fmlife.com

好烂啊有点差凑合看看还不错很精彩 (8 人打了分,平均分: 3.50 )
Loading...
超强:Unix道德经(英文版)

超强:Unix道德经(英文版)

主页:http://mercury.ccil.org/~cowan/upc/

这是一个人主页,博主说,这是一个“黑客式”版本的 Dao De Ching (字面理解是”way power classic”,道路权力名著).他并对中文其实并不懂。他只是为Jonathan Star的 逐字翻译 而工作,其使用了在线的中文一个词典 zhongwen.com对《道德经》一字一字地翻译。

他对《道德经》并不是很懂,除了知道那是中文,而且知道这是一个相当老的,而且,2500年前的那些是非常喜欢的一个作品,正如 Ursula K. LeGuin她的版本中所说的一样。作者说《道德经》是对道德,政治和宗教信仰做了很多的解释。到了今天,还有人在读这本书,说明了这本书的不朽,美妙和意味深长。

下面是《道德经》的 81 个章节 ,作者并没有完全写完(或者说是hack完),你可以点击链接查看其中的内容。

01 02 03 04 05 06 07 08 09
10 11 12 13 14 15 16 17 18
19 20 21 22 23 24 25 26 27
28 29 30 31 32 33 34 35 36
37 38 39 40 41 42 43 44 45
46 47 48 49 50 51 52 53 54
55 56 57 58 59 60 61 62 63
64 65 66 67 68 69 70 71 72
73 74 75 76 77 78 79 80 81

点击第23章,可以看到hack版的充满Unix术语的经文翻译。下面给出原文和转译版的对照。(老实说,翻译的怎是一个强字了得啊)下面给出中英对照版。

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (14 人打了分,平均分: 4.00 )
Loading...
程序语言性能比拼

程序语言性能比拼

  下面这个网页,你可以比较各种程序语言的性能:

http://shootout.alioth.debian.org/u64/index.php

这个页面,安装的是x64 Ubuntu,CPU是Intel® Q6600® 单核。这个网页支持的语言很多,什么C,C++,Java,python,PHP,Erlang,C#,Ruby,……,还有最新的G0语言。

在主页上,你可以选择一个语言。比如,我们选择Google的Go语言——Go 6g8g,然后,点击Show按钮,于是,你会看到下面这个界面:

go vs gnuc 

在这个界面上方,你可以选择两种语言,我们选择的是,上面的是Go 6g8g,而下面是的GNU C,于是下面的图表,是这两个语言各种参数和算法的比较图表。

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (8 人打了分,平均分: 3.13 )
Loading...
Go语言更名Issue 9?

Go语言更名Issue 9?

Go语言出了一个Issue,这个Issue的链接在这里:http://code.google.com/p/go/issues/detail?id=9 ,这个Issue的编号是9描述是:

I have already used the name for *MY* programming language

意思是,已经有人使用了这go作为其语言的命名了。报告者叫fmccabe,他说到:

我已经从事于我的一个编程语言,而且都10年了。并且都有很多论文发表了。我非常感激你们Google如果把这个名字修改一下,因为我是不会修改我的语言的名字的!

于是,开始了回贴:

  • 1楼跟贴说,“给个链接看看”
  • fmccabe在2楼说:“我出版了本书在lulu.com上”。
  • 3楼的说,“是的,你的语言叫“Go!”,你的书在:http://www.lulu.com/content/paperback-book/lets-go/641689
  • 4楼说:“三楼你是对的,LZ的语言是‘Let’s Go!’或‘Go!’,Google的叫‘go’,根本就不同啊。”
  • LZ不同意在5楼说:“是的,我的语言叫Go!,书名叫:Let’s Go!。而这里的问题不是Google的go是否会有名,而是公平性。”

好事者从来都不少,后面的贴子可想而知了。众多网友纷纷支持LZ,让Google改名。

  • 11楼让LZ找个便宜的律师,还说Google的钱袋很深的。
  • 14楼的DailyFinance.com的一个MS记者的人也找上了。
  • 17楼建议Google改名Goo 或Foo

于是,再往后的回贴,众网友们开始纷纷帮Google的go语言改名:

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (10 人打了分,平均分: 3.70 )
Loading...
Go语言源码的一个改动

Go语言源码的一个改动

2009年11月11日,光棍节,Google发布了Go语言,马上,就有网友在http://code.google.com/p/go/上找到了一个Go语言包文件操作源码/src/pkg/os/file.go文件的一个最新改动。这个改动的作者就是那个大名鼎鼎的Unix之父Ken Thompson(看看人家,都这么老了,还在写程序,佩服佩服,真是顶级程序员啊——《程序员的八个级别》),而这个改动的Log Message如下所示(把屏抓下来,以免以后某日被放到墙外或是google.com数据丢失或是Google公司倒闭)

Spell it with an “e”

spell it with an e

 

这是一个很著名的典故,要知道这个典故,你需要知道两件事,一个是Ken Thompson的经典语录,一个是Unix的系统调用。

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (16 人打了分,平均分: 3.75 )
Loading...
恐怖的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

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

橡皮鸭程序调试法

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

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

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

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

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

阅读全文 Read More

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