博文

心目中的编程高手 (2006-06-06 18:43:00)

摘要:心目中的编程高手

心目中的编程高手 from 负暄琐话

MIT BBS上说微软电话面试的一道题就是"Who do you think is the best coder, and why?"。我觉得挺有意思的,也来凑个热闹。排名不分先后。 Bill Joy, 前任Sun的首席科学家,当年在Berkeley时主持开发了最早版本的BSD。他还是vi和csh的作者。当然,Csh Programming Considered Harmful 是另一个话题乐。据说他想看看自己能不能写个操作系统,就在三天里写了个自己的Unix, 也就是BSD的前身。当然是传说了,但足见他的功力。另一个传说是,1980年初的时候,DARPA让BBN在Berkley Unix里加上BBN开发的TCP/IP代码。但当时还是研究生的B伯伯怒了,拒绝把BBN TCP/IP加入BSD,因为他觉得BBN的TCP/IP写得不好。于是B伯伯出手了,端的是一箭封喉,很快就写出了高性能的伯克利版TCP/IP。当时 BBN和DARPA签了巨额合同开发TCP/IP Stack,谁知他们的代码还不如一个研究生的好。于是他们开会。只见当时B伯伯穿个T-shirt出现在会议室(当时穿T-shirt不象现在,还是相当散漫的哈)。只见BBN问:你怎么写出来的?而B伯伯答:简单,你读协议,然后编程就行了。最令偶晕倒的是,B伯伯硕士毕业后决定到工业界发展,于是就到了当时只有一间办公室的Sun, 然后他就把Sparc设计出来乐。。。象这种软硬通吃的牛人,想不佩服都不行的说。据Bill Joy的同事说,一般开会的时候B伯伯总是拿一堆杂志漫不经心地读。但往往在关键之处,B伯伯发言,直切要害,提出漂亮的构想,让同事们彻底崩溃。对了,他还是Java Spec和JINI的主要作者之一。


John Carmack,ID Software的founder和Lead Programmer。上个月和一个搞图形的师兄聊天,他竟然不知道John Carmack, 也让偶大大地晕了一把。不过也许搞研究的和搞实战的多少有些隔吧。想必喜欢第一人称射击游戏的都知道J哥哥。90年代初只要能在PC上搞个小动画都能让人惊叹一番的时候,J哥哥就推出了石破天惊的Castle Wolfstein, ......

阅读全文(2099) | 评论:0

英语口语妙句及对日常口语有用的一些好东东(2006-06-05 23:31:00)

摘要:这两天,接待一批老外,才发现自己的口语是何等的弱。。。。看来要恶补一下了:   当别人在你旁边罗嗦个没完,你烦透了,说“you are so boring “.(你真烦!)。“shut up !”(闭嘴!)自然没错,可人家受得了吗?不如来一句“oh, come on .give me a break !” (帮帮忙,让我歇歇吧!)这多地道、多幽默。
  
  要想说人“气色好”。“you look fine !”当然不错,可如果你说”you’re in the pink !”就妙得多了,实际上,在英语口语中,表示颜色的词用起来非常形象生动。
  
  “他精力充沛”美国人说:“he is bouncy.”而不说“he is energetic ”,牢记一些日常对话中的活句式是你一把必备的钥匙。
  如:久仰,“I get mind of you “.比”I heard a lot about you.”轻松得多。
  
  代问他人好当然能用”please remember me to your sister .” 或”please give my best wishes to your father ”不过,若是很好的朋友,何不说,“please give my love to Jim。”
  在中国可不能随便说“我想你”,然而,当和西方人分手时说“I will miss you .”要比说“good-bye”或“see you soon”有趣得多,不妨一试。
  
  有人开会迟到了,你若对他说 “you are late .”,听起来象是废话,若说“did you get lost ?”,则更能让他歉然,可别说成“get lost!”那可是让人滚蛋的意思。
  
  别人征求你的意见,问能否开窗户等,你要说“you can do that .”就有点土了,用一句“do you have the time? ”实际上,问他人的姓名,地址都可以这么用:“may I have you name?“要比”what’s your name ? ”礼貌得多,不过警察例外。
  
  别人问你不愿公开的问题,切勿用“it’s my secret ,don’t a......

阅读全文(2615) | 评论:2

一种效率极高的分类算法(2006-05-30 15:59:00)

摘要:分类算法要解决的问题
在网站建设中,分类算法的应用非常的普遍。在设计一个电子商店时,要涉及到商品分类;在设计发布系统时,要涉及到栏目或者频道分类;在设计软件下载这样的程序时,要涉及到软件的分类;如此等等。可以说,分类是一个很普遍的问题。

我常常面试一些程序员,而且我几乎毫无例外地要问他们一些关于分类算法的问题。下面的举几个我常常询问的问题。你认为你可以很轻松地回答么^_^.

1、分类算法常常表现为树的表示和遍历问题。那么,请问:如果用数据库中的一个Table来表达树型分类,应该有几个字段?
2、如何快速地从这个Table恢复出一棵树;
3、如何判断某个分类是否是另一个分类的子类;
4、如何查找某个分类的所有产品;
5、如何生成分类所在的路径。
6、如何新增分类;

在不限制分类的级数和每级分类的个数时,这些问题并不是可以轻松回答的。本文试图解决这些问题。

分类的数据结构
我们知道:分类的数据结构实际上是一棵树。在《数据结构》课程中,大家可能学过Tree的算法。由于在网站建设中我们大量使用数据库,所以我们将从Tree在数据库中的存储谈起。

为简化问题,我们假设每个节点只需要保留Name这一个信息。我们需要为每个节点编号。编号的方法有很多种。在数据库中常用的就是自动编号。这在Access、SQL Server、Oracle中都是这样。假设编号字段为ID。

为了表示某个节点ID1是另外一个节点ID2的父节点,我们需要在数据库中再保留一个字段,说明这个分类是属于哪个节点的儿子。把这个字段取名为FatherID。如这里的ID2,其FatherID就是ID1。

这样,我们就得到了分类Catalog的数据表定义:

Create Table [Catalog](

        [ID] [int]  NOT NULL,

        [Name] [nvarchar](50) NOT NULL,

 &......

阅读全文(2124) | 评论:0

军事秘密的秘密—原子弹诞生记(2006-05-30 15:01:00)

摘要:原子弹的最终出笼绝不是一个人功劳所致,也不是因为哪国政府的疏忽所为。在这背后,是一场殊死的较量,是一场没有硝烟的战争,是一场人类迄今为止的最大规模的秘密战,以至于今天把它说开来还会令人屏住呼吸,热血沸腾。让我们先从一个新西兰人的一次迟到作为讲述这个故事的开始吧。
  
  一个普通人的重大发现
  
  很难搞清那是哪一天了,反正是第一次世界大战刚结束不久的一个早上,新西兰原子物理科学家欧内斯特·卢瑟福没能按时参加一个由英国军方召集的讲座。有人为此向这位一向守时的物理学家(讲究准确是物理学家的特质之一)提出了客气的指责,没想到这位科学家一反常态地回应:“我的迟到是因为我正在做着一个至关重要的实验。它将向人们证实原子可以用人工的方法驾驭。如果真是这样,你们的那些战争方法都将成为雕虫小技。”后来发生的事实证明,卢瑟福所说的的确不是不着边际的大话,而是一个千真万确的科学发现,一个还没有被列入军事秘密的秘密。当时全世界挨个数也没几个能有卢瑟福这般头脑的物理学家,而那些刚刚经过第一次世界大战洗礼的死里逃生的职业军人们准备一旦缓过劲儿来,将再造出口径更大的大炮、装甲更厚的坦克、滤毒性能更好的防毒面具以及火力更猛的机关枪。别跟他们说什么原子武器,在他们的眼里,科学家的发现远不如造一些先进的鱼雷和大炮来得实在。卢瑟福在第一次世界大战前从他的奥地利同行那里借来了250毫克镭。镭是帮助他实现原子之梦必不可少的贵重物质,也是天下少有的花钱也买不来的东西之一。
  
  正是这250毫克毫不起眼的镭,让卢瑟福站在了世界原子能研究的最前沿。1919年6月,卢瑟福在《哲学杂志》上透露,他完成了用A粒子轰击氮、使氮变成氧或氢的实验。当时和他比肩并进的原子科学家在全世界范围内大约只有40名,其中大多数集中在欧洲。当时的美国虽然有着众多财力雄厚的世界一流大学,但明显缺乏具有一流水准的科学家。在20世纪二三十年代美国最具潜力的技术人才,特别是在原子能技术方面的尖子,当时最看重的并不是麻省理工学院,而是一所设在德国哥廷根小城里的大学。这里就有后来号称原子弹之父的罗伯特·奥本海默,一个面庞瘦削而且看上去缺乏男性气质的人。外出时,他总是戴着一顶和他的瘦脑袋瓜不太相称的礼帽。很可能是他,或许再加上一些后来的追随者,居然改变了第二次世界大战的进程,也把整个世界拖进了核子武器时......

阅读全文(1724) | 评论:0

35个经典句型 (classical sentence)(2006-05-29 17:22:00)

摘要:35个经典句型 (classical sentence)
1.~~~ the + ~ est + 名词 + (that) + 主词 + have ever + seen ( known/heard/had/read, etc)
 ~~~ the most + 形容词 + 名词 + (that) + 主词 + have ever + seen ( known/heard/had/read, etc)
 例句:Helen is the most beautiful girl that I have ever seen.海伦是我所看过最美丽的女孩。
 Mr. Chang is the kindest teacher that I have ever had.张老师是我曾经遇到最仁慈的教师。 2.Nothing is + ~~~ er than to + V
Nothing is + more + 形容词 + than to + V
例句:Nothing is more important than to receive education.没有比接受教育更重要的事。 3.~~~ cannot emphasize the importance of ~~~ too much.(再怎么强调...的重要*也不为过。)
例句:We cannot emphasize the importance of protecting our eyes too much.
我们再怎么强调保护眼睛的重要*也不为过。
4.There is no denying that + S + V ...(不可否认的...)
例句:There is no denying that the qualities of our living have gone from bad to worse. 不可否认的,我们的生活品质已经每况愈下。 5.It is universally acknowledged that + 句子~~ (全世界都知道...)
例句:It is universally acknowledged that trees are indispensable to us. 全世界都知道树木对我们是不可或缺的。 ......

阅读全文(3079) | 评论:0

出差一周,刚刚回来!!(2006-04-28 13:06:00)

摘要:出差一段时间,没有更新过自己的blog。现在回来了,继续更新! 去了安徽,感觉了一下江南。气候比我这里好多了,没有沙尘暴,没有土山,总体感觉自然环境要比我这里好。顺路去了一下黄山,领略了一下“五岳归来不看山,黄山归来不看岳”的感觉。对于黄山的总体评价是,要看黄山除了体力要好之外,还要有丰富的联想和想象能力,另外最好是能碰到比较好的导游。黄山一游之后,整个行程步行将近25公里,发自肺腑的感言:“这一天爬掉了我前二十几年爬过的所有楼梯”。下了黄山又去了西递和九龙瀑,腿疼的实在走不动了。。。 晚上,去了黄山市的老街,蛮喜欢这个有浓厚文化氛围的地方。从街边小贩卖的东西来看,主要以文房四宝和茶叶为主,从侧面可以看出比较浓厚的文化氛围。 出差一段时间比较累,应该好好休息一下了!!......

阅读全文(2587) | 评论:0

看到了一个关于开源软件的很好的连接(2006-04-13 13:45:00)

摘要:标题:55个经典开源Windows工具 http://www.pccto.com/showthread-t_25.html 主要内容包括下面的东西: 7-Zip 4.16 Beta:文件压缩工具,可与Windows资源管理器集成 A Note 4.2.1:可在Windows桌面放置便笺,并可提供闹钟提醒功能 Abakt 0.9:能够以压缩方式对文档进行备份 Abiword 2.27:Windows写字板的替代程序,功能有所加强 Aethera 1.21:提供日历、通讯录、任务表及提醒功能,并且内置了e-mail客户端 Ant Movie Catalog 3.5:将你收藏的DVD影碟归档,并添加说明信息 Ant Renamer 2.0.8:易用的文件重命名工具,并具备灵活的筛选机制 Audacity 1.2.3:对音频文件进行编辑、优化并添加特效 Axcrypt 1.6.1:对程序进行加密,可与Windows资源管理器集成 Blender 3D 2.36:三维对象的建模、渲染 Borg Calendar 1.4.2:提供桌面日历、任务列表、通讯录功能,支持多用户 Cdex 1.51:将音乐CD转换为wav或者mp3格式 Cinepaint 0.19:专业的图像编辑软件 Clam Win 0.83:病毒扫描工具 Cool Mon 1.0.1003:系统检测工具 Cool Player 215:一款精简的音频播放软件 Dia 0.94:绘制图表和流程图 Double Type 0.2.1:设计自己的Truetype字体 Egroupware 1.0.0.006:一款包含日历、新闻、联系人等模块的工作流系统 Eraser 5.7:永久地删除硬盘中的数据 Filezilla 2.2.12c:FTP客户端 Firefox 2:Web浏览器,支持并列显示多个网页 Freemind 0.8:能以直观形象的图示建立起各个概念之间的联系 Gaim 1.4.0:同时支持ICQ、Aim、MSN、Yahoo的即时通信软件 Ganttproject 1.11.1:项目管理软件,帮助你进行时间安排及资源分配 GnuPG Add-ons:对邮件进行加密 Health Monitor 2.1......

阅读全文(1948) | 评论:0

 Linux Shell 编程基础(二)(2006-04-13 13:23:00)

摘要:5.条件语句
同其他高级语言程序一样,复杂的shell程序中经常使用到分支和循环控制结构,
bash,pdksh和tcsh分别都有两种不同形式的条件语句:if语句和case语句.
(1)if语句
语法格式:
bash/pdksh用法:
if [expression1]
then
commands1
elif [expression2]
commands2
else
commands3
if

tcsh用法:
if (expression1) then
commands1
else if (expression2) then
commands2
else
commands3
endif

含义:当expression1的条件为True时,shell执行then后面的commands1命令;当
expression1的条件为false并且expression2的条件满足为True时,shell执行
commands2命令;当expression1和expressin2的条件值同为false时,shell执行
commands3命令.if语句以他的反写fi结尾.

(2)case语句
case语句要求shell将一个字符串S与一组字符串模式P1,P2,...,Pn比较,当S与
某个模式Pi想匹配时,就执行相应的那一部分程序/命令.shell的case语句中字符
模式里可以包含象*这样的通配符.
语法格式:
bash/pdksh用法:
case string1 in
str1)
commands1;;
str2)
commands2;;
*)
commands3;;
esac

tcsh用法:
switch (string1)
case str1:
statements1
breaksw
case str2:
statements2
breaksw
default:
statements3
breaksw
endsw

含义:shell将......

阅读全文(8122) | 评论:0

Linux Shell 编程基础(一)(2006-04-13 13:23:00)

摘要:1.建立和运行shell程序
  什么是shell程序呢? 简单的说shell程序就是一个包含若干行
shell或者linux命令的文件.
象编写高级语言的程序一样,编写一个shell程序需要一个文本编辑器.如VI等.
在文本编辑环境下,依据shell的语法规则,输入一些shell/linux命令行,形成一个完整
的程序文件.
  执行shell程序文件有三种方法
  (1)#chmod +x file
  (2)#sh file
  (3)# . file
在编写shell时,第一行一定要指明系统需要那种shell解释你的shell程序,如:#! /bin/bash,
#! /bin/csh,/bin/tcsh,还是#! /bin/pdksh .
2.shell中的变量
  (1)常用系统变量
     $ #        :保存程序命令行参数的数目
     $ ?        :保存前一个命令的返回码
     $ 0        :保存程序名
     $ *        :以("$1 $2...")的形式保存所有输入的命令行参数
     $ @        :以("$1""$2"...)的形式保存所有输入的命令行参数
  (2)定义变量
   shell语言是非类型的解释型语言,不象用C++/JAVA语言编程时需要事先声明变量.给一
个变量赋值,实际上就是定义了变量.
 &nb......

阅读全文(3442) | 评论:0

脑筋急转弯。。。(2006-04-12 17:30:00)

摘要:1)茉莉花、太阳花、玫瑰花哪一朵花最没力?   答案:茉莉花。   原因:好一夺没力(美丽)的茉莉花。   (2)猩猩最讨厌什么线?   答案:平行线。   原因:平行线没有相交(香蕉)。   (3)橡皮、老虎皮、狮子皮哪一个最不好?   答案:橡皮。   原因:橡皮檫(橡皮差)。   (4)布和纸怕什么?   答案:布怕一万,纸怕万一。   原因:不怕一万,只怕万一。   (5)铅笔姓什么?   答案:萧。   原因:削(萧)铅笔。   (6)麒麟飞到北极会变成什么?   答案:冰淇淋。   原因:冰淇淋(冰麒麟)   (7)中国、日本、非洲、韩国哪个国家的士兵的步伐最齐?   答案:日本。   原因:因为日本有个歌星叫滨崎步(兵齐步)。   (8)哪位历史人物最欠扁?   答案:苏武。   原因:苏武牧羊北海边(被海扁)。   (9)123456789哪个数字最勤劳,哪个数字最懒惰?   答案:1懒惰;2勤劳。   原因:1不做2不休。   (10)怎样使麻雀安静下来?   答案:压它一下。   原因:鸦雀无声(压雀无声)......

阅读全文(2464) | 评论:0