22:40 张捷:新婚快乐! » 车东@博客大巴

今天是帅哥Jay大喜的日子; 新娘好像已经期待很久了……



衷心祝福你们! 

[MySQL FAQ]系列 -- Too many open filesMySQL 中文网 - » Che, Dong's shared items in Google Reader

错误信息如下:

.....
070813 13:10:17 [ERROR] /usr/local/mysql/bin/mysqld: Can't open file: './yejr/access.frm' (errno: 24)
070813 13:10:17 [ERROR] /usr/local/mysql/bin/mysqld: Can't open file: './yejr/accesslog.frm' (errno: 24)
......
070813 13:10:17 [ERROR] Error in accept: Too many open files
....

注意到, 系统错误代号是 24, 用 perror 来查看一下具体的错误信息是什么:

[root@yejr]# /usr/local/mysql/bin/perror 24
OS error code  24:  Too many open files

原来是打开文件太多了, 好办.用sysctl来调整一下就好了:

[root@yejr]# sysctl -w fs.file-max=43621
[root@yejr]# sysctl -a | grep fs.file-max
fs.file-max = 43621

FreeBSD 下也用sysctl来调整:

[root@yejr]# sysctl -w kern.maxfiles=123280
[root@yejr]# sysctl -a | grep kern.maxfiles
kern.maxfiles = 123280

最后, 还有最重要的一点是, 修改 mysqld 的配置文件 my.cnf, 增加如下一行:

open_files_limit = 4096 
#根据自己的情况适当调整,系统默认值是 
# max_connections*5 或 max_connections + table_cache*2

然后, 以root身份重新启动 mysqld. 在这里, 尽管 my.cnf 中指定的运行用户不是root, 一样可以以root身份来启动mysqld, 否则 open_files_limit 选项无法生效, 因为内核限制了普通用户的最多打开文件数.

15:24 论“面包屑”的倒掉 » 团队博客 - 以用户为中心的设计

很久很久以前,在大森林的边上住着一个贫穷的樵夫,他妻子和两个孩子与他相依为命。他的儿子名叫汉赛尔,女儿名叫格莱特。后来樵夫的妻子去世了,他又给孩子们娶了一个后母。后母计划把两个孩子带到森林的深处,然后趁他们睡着的时候跑掉。汉赛尔无意中知道了后母的计划,于是偷偷地把一块面包藏在了口袋里。在去森林的路上,汉赛尔悄悄地捏碎了他的面包,并不时地停下脚步,把碎面包屑撒在路上。后母顺利地趁孩子们睡着的时候溜掉了,汉赛尔和格莱特醒来已是一片漆黑。汉赛尔安慰他的妹妹说:“等月亮一出来,我们就看得见我撒在地上的面包屑了,它一定会指给我们回家的路。”但是当月亮升起来时,他们在地上却怎么也找不到一点面包屑了,原来它们都被那些在树林里、田野上飞来飞去的鸟儿一点点地啄食了。

这是《格林童话》中所描述的与面包屑有关的故事。不知道从哪一天开始,汉赛尔的面包屑开始悄悄地出现在某个网站的导航位置上,然后迅速地撒遍了全世界,变成了今天大家所熟知的“面包屑导航”。

在童话里,面包屑是汉赛尔在进入森林的路中偷偷撒下的,这是一种“历史记录”的应用方式,目的是帮助你追溯来路,因而它应该是一种线性的导航方式。不过在网页的应用中,“追溯来路”这件事浏览器已经做得足够好了,所以“面包屑”慢慢地就变成用来表达内容归属关系的界面元素,也就是我们经常看到的“主分类>一级分类>二级分类>三级分类>……>最终内容页面”这样的东东。

那么这种元素还具有导航作用吗?如果用于导航,它有什么问题吗?为什么我觉得它应该“倒(dǎo)掉”呢?

再回头看看所谓面包屑的来历和它采用的形式吧,它是汉赛尔沿路撒下的一个个“点”,然后连成的“线”,这在信息架构中称为“线性结构”。一对比就知道,撒到网站上的面包屑是有先天缺陷的,这个先天缺陷正是这个“线性”。用“线性”的方式去表达本应该是“树形”甚至是“矩阵形”的结构,就好像让三岁的小朋友做诗写文章一样,结果不是把小朋友逼疯就是把家长急疯。

可能有人会说,面包屑不仅仅是用来表示信息的层级关系,它还能给用户位置的指示,同时引导用户点击更高层次的页面。如果你这么说,那么恭喜你,你和可用性之父Jakob Nielson想得差不多(Breadcrumb Navigation Increasingly Useful)。在这篇文章里,Jakob认为面包屑还有点作用的主要原因,是因为它是一件做起来不太费力、占用面积很小、没有什么学习成本的事情。

但是所有的这些,都是建立在信息架构足够清晰、足够稳固同时又足够灵活的基础之上的。

如果网站信息太丰富、太复杂,有些内容不能明确划分到某个类别中,面包屑就会变成鸡肋。这方面的典型就是门户网站,比如说这个: 娱乐圈10大发嗲美女 ,很明显就是为了面包屑而面包屑。

如果你的网站信息内容属性不明确,大部分信息都同时属于多个类别,面包屑就会变成一个涉及到复杂判断和算法的技术问题。这种情况的代表就是电子商务、社区类网站(没找到例子,因为要实现太难了)。

如果你的网站结构够清晰,内容也够稳定,那么极有可能是企业或个人网站(比如UCDChina或你自己的博客)。而这样一个网站,不管规模大小,用主导航就能解决位置感的问题,也没有必要单独留出一行来放置面包屑。这方面做得比较好的例子是微软和苹果(这么大的公司都放弃面包屑了,还不能说明问题吗?),反面例子就可以看看这个: IBM Support & downloads - Documentation - United States ,面包屑没有帮助我找到想找的东西,反而让我更糊涂了。

不过,关于“打倒面包屑”这件事仍然有一个前提,那就是你的主导航要做得足够好。之前提到的IBM网站,最大的问题就是没有在主导航上标明当前位置(技术问题?设计问题?)。由于这个原因,不得不增加面包屑来表示层级关系。在面包屑的先天缺陷和主导航设计缺失的双重努力下,用户点击“Support & downloads”以后迅速丢失了上一个页面“Documentation”的位置(不信你在 这个页面上 试一下回去的难度)。在这个例子中,面包屑还不如URL本身来得清楚。

反过来再想,我们其实可以有这样一个大胆的推论:凡是出现面包屑的网站,基本上都是导航系统设计得比较差劲的。

一直我们都认为,改进措施≠做加法,设计是“越减越妙”的,面包屑就是应该第一个从导航设计中减掉的元素。我相信,随着技术的发展、信息架构和用户需求的多样化,面包屑最终会悄悄地退出历史舞台。

转载请注明出自UCDChina.com,谢谢。

相关文章

13:01 WordPress说,把我们的《服务条款》和《隐私声明》拿去用吧! » 大学小容>善用网络,助益成长!

对于许多网络创业公司来说,起草网站的《服务条款》(Terms of Service)和《隐私声明》(Privacy Policy)是一件令人窘迫的事情。这两份文档属于法律文件,看起来平时不起什么作用,可是一旦和用户或者其他的公司发生了纠纷,并且有可能上升到诉讼层面,那么这两份文件的作用就发挥出来了。总的来说,法律文件都是防范于未然,尽量为公司免责。然而,请律师起草这些繁琐的条文需要花费一笔不小的费用以及不少的时间。

对比多家网络公司发布在网站上的这两份文件,发现一些有趣的现象。

· 形形色色的《服务条款》

Digg《服务条款》极为繁琐,共有十五则,其中第七则是关于版权的,详细讲了关于《新千年数字版权法案》(Digital Millennium Copyright Act,DMCA) 的许多情况,这让人不由得想起今年五月所发生的Digg叛乱事件

Twitter在《服务条款》的最后还特别鸣谢Flickr,“这些服务条款的内容灵感来自Flickr,是他们许可的。”(These terms of service were inspired, with permission, by Flickr.”。想起Twitter在年初火爆的时候,网站上教用户如何使用字母D和符号@的FAQ都没有人写,热心的用户只能互相传授Twitter的使用技巧。

Flickr被Yahoo收购之后,点开《服务条款》的链接就直接跑到Yahoo的服务条款页面去了。如果是Pro用户身份登陆的话,则显示很长的服务条款,详细说明关于Pro用户的一些情况。比起《服务条款》,Flickr的《社区指南》是更为人知的文档。这个社区指南的第一条是:

請和睦共處。
本社群会员众多,背景各异,每个人均有自由使用本社群的权利,而彼此看待问题的角度与观点可能不同。因此,在与其它会员互动时请礼貌待人并相互尊重。

Do play nice.
We’re a community of many types of people, who all have the right to feel comfortable and who may not think what you think, believe what you believe or see what you see. So, be polite and respectful in your interactions with other members.

同样在被Yahoo收购之后,Del.icio.us的《服务条款》却还是保持简洁的风格。

最简洁的风格看来应该是Mahalo.com莫属。这是由Weblogs Inc.联合创始人Jason Calacanis离开AOL之后所创办的“人类搜索引擎”,他们的清单都保持在十个条目以下,每个条目大部分都只有一、两行。看起来就像是Google的服务条款的摘要了。

最为繁琐的应当是Google了,它的服务条款共有20则,以至于要开辟另外一个新页面专门显示服务条款的摘要。这份最后更新于2007年4月16日的服务条款,第一则的标题就是:“你与Google的关系”(Your relationship with Google)。

· 最酷的《服务条款》花落谁家?

哇,最酷的应该是WordPress.com了!刚刚发现开发WordPress开源Blog软件和运营WordPress.com的Automattic将“创作共用”(Creative Commons)的图标放在他们的《服务条款》和《隐私声明》上。他们说:

请注意,我们决定将如下的服务条款遵循创作共用(Creative Commons)—-保持一致(Share alike)的授权协议,这意味着欢迎大家把它“偷”去改头换面成自家宝贝!只是你需要像我们一样将修改后的内容做同样的声明,我们也乐意你在自己网站的任何地方加个链接到WordPress.com。我们花费了大量的金钱和时间弄出这个家伙来,大家现在可以省省事儿了:)

创作共用-保持一致(Creative Commons Share alike license),这个条款的要求是:

如果您改变、转换本作品或者以本作品为基础进行创作,您只能采用与本协议相同的许可协议发布基于本作品的演绎作品。

仔细一想,Automattic与自由文化运动的关系是很密切的,WordPress是一款开源的Blog软件,而Blogosphere则是支持自由文化运动的中坚力量,他们这样的举动也不足为奇。一间公司的品牌个性往往不是依靠宣传包装出来的,而是公司长期的做事风格营造出来的。言行一致是创建品牌的奠基石。

这里看大图。   这里看大图

那么,大陆的网络创业公司,哪家会在花了大价钱请律师起草《服务条款》和《隐私声明》后,又将它们以“创作共用”(Creative Commons)方式授权出来呢?!

11:24 FeedSky使用的统计图引擎: JpGraph » Photos from 车东

车东 posted a photo:

FeedSky使用的统计图引擎: JpGraph

www.aditus.nu/jpgraph/

09:00 新媒体启示录之二十五:blogosphere » It Talks-魏武挥的blog

Blogosphere是Blogmedia的升级版本。如果说Blogmedia是媒体的话,那么Blogosphere就是社会。研究前者可以用传播学,但研究后者,就得从传播学的母学科社会学寻求灵感。

Blogmedia是很好翻译的,叫“博客媒体”,也很容易理解:利用blog的日志做一个聚合媒体。但Blogosphere却很难用“博客领域”、“博客社区”或者“博客圈”来简单翻译。

Blogosphere由三个单词组成:blog、logos和sphere。中间的logos,在古希腊语里意为“智慧”之类的东西,哲学这个学术领域中直接音译成“逻各斯”。blogosphere就是这么个所指:智慧聚集的地方。

上一篇我提到blogmedia带有公共领域的影子,而blogoshpere已经是一种公共领域了。因为blogoshpere并不存在把关人制度。它虽然是诸个blog的集合体,但没有一个blog从权利上凌驾于另外一个blog之上。或许,某个blog是一个blogosphere的技术平台搭建人,但他/她完全没有任何权利对其它blog的日志做推荐、删除、隐藏的工作。换而言之,在一个blogoshpere里,并没有一个或者少数几个blog是中心。

在我有限的视野里,中文很优秀的blogosphere当属O.F.BLOG。故而,我将以它为例子解剖一下blogosphere。

通常,一个blogoshpere的汇聚blog不会太多,太多会导致一个问题:众口难调。到目前为止,OFBLOG只有9个blog的汇聚,且是9个实名blog。

这个blogosphere还相当有精英气质(绝对不是什么草根blog),里面的blog学历都很高,不是名校就是硕博,blogger自身都很有才学:王正鹏(清华硕士)、秦轩李雪琴(文学硕士)、沈伯韩(清华毕业)、吴青松(北广硕士)、郑治(清华硕士)、王瑞斌(北大毕业)、徐立军(北广硕士),栾轶玫(清华博士)。虽然这个blogoshpere是詹膑(其人本身也是清华硕士)建立的技术平台,但恐怕没有任何一个人会“服从”詹膑的“管理”。

它的聚焦也相当明确:都是些上层建筑的讨论。诸多日志,都是这样的。这样其实能形成一种场域(这个名词已经是社会学的概念,而非传播学):非人文的东西,都不好意思放在这个网站中。而且,精英分子的言语通常是理性的(不排除有些blogger可能会感性一些),掐架是见不着的。

还有一点很重要,这帮人在网下还经常互动。喝喝茶聊聊天,参加一些外面的会议(比如最近清华的一场小型研讨会),还要拉扯着一同前往。

中文blogosphere其实相当少,有限的几个,影响力也不够大(OFBLOG在全球的排名也只有二十多万),但毕竟是一些小小的公共领域了。另外一个值得推荐的Blogosphere是方军搭建的思维的乐趣,同样是精英荟萃,比如有许知远吴晓波等大名鼎鼎的文化媒介人。不过,blogoshpere注定是一小群blogger带有魏晋遗风的自留地,大范围的blogger汇聚只能形成具有的把关人的blogmedia。

不过,一个一个小型的blogosphere可以组成一个稍大一点的blogosphere,社区自治,但同样可以联成城邦。利用一些计算机算法(而不是仰仗人力),是可以组成一张大型blogosphere页面的。虽然,我至今没有看到这种网页组织形式,但我对这个页面的出现,抱有强烈的乐观。

伟大的哈贝马斯,谁说你是空想主义者?


评论:


相关文章:


Creative Commons License 本站作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
Copyright© 2007 作者及版权归属: 魏武挥 at ItTalks-魏武挥的blog (数字指纹:数字指纹:18531a57ccc95fdb8ecb9482f1a61a8c

18531a57ccc95fdb8ecb9482f1a61a8c)...
04:44 2007年中国科学院院士增选当选院士 » 格致 - 一起格物致知

数学物理学部(6位)
序号 姓名 年龄 专业 工作单位
1 王恩哥 50 凝聚态物理 中国科学院物理研究所
2 龙以明 58 数学 南开大学
3 邢定钰 62 凝聚态物理 南京大学
4 吴岳良 45 理论物理 中国科学院理论物理研究所
5 张伟平 43 基础数学 南开大学
6 俞昌旋 65 等离子体物理 中国科学技术大学

化学部(6位)
序号 姓名 年龄 专业 工作单位
1 宋礼成 69 有机化学 南开大学
2 张 希 41 高分子化学和物理 清华大学
3 段 雪 50 化学工程(应用化学)北京化工大学
4 赵东元 44 物理化学 复旦大学
5 柴之芳 64 放射化学 中国科学院高能物理研究所
6 高 松 43 无机化学 北京大学

生命科学和医学学部(7位)
序号 姓名 年龄 专业 工作单位
1 杨焕明 54 基因组学 中国科学院北京基因组研究所
2 陈润生 66 生物信息学 中国科学院生物物理研究所
3 孟安明 43 发育生物学 清华大学
4 武维华 50 植物生理学 中国农业大学
5 段树民 49 神经生物学 中国科学院上海生命科学研究院
6 赵进东 50 植物生理学、藻类学 北京大学
7 谢华安 65 植物遗传育种福建省农业科学院

地学部(4位)
序号 姓名 年龄 专业 工作单位
1 张 经 49 化学海洋学与海洋生物地球化学华东师范大学
2 杨元喜 50 大地测量 西安测绘研究所
3 姚檀栋 52 冰川环境与全球变化 中国科学院青藏高原研究所
4 穆 穆 52 大气动力学中国科学院大气物理研究所

信息技术科学部(1位)
序号 姓名 年龄 专业 工作单位
1 吴一戎 43 信号与信息处理 中国科学院电子学研究所

技术科学部(5位)
序号 姓名 年龄 专业 工作单位
1 王克明 68 材料物理 山东大学
2 任露泉 63 仿生科学与工程 吉林大学
3 祝世宁 57 功能材料(微结构功能材料) 南京大学
4 胡海岩 50 一般力学 南京航空航天大学
5 程时杰 61 电力系统及其自动化 华中科技大学

2007年中国科学院当选外籍院士名单
姓 名 国籍出生年月 学科领域 所在单位
法捷耶夫 Ludwig D.Faddeev 俄罗斯 1934年3月 数学物理俄罗斯斯捷科洛夫数学所圣彼得格勒分所
艾伦·黑格 Alan J. Heeger 美国 1936年12月 物理、化学、材料学美国加州大学圣巴巴拉分校
弗里德·穆拉德 Ferid Murad 美国 1936年9月分子和临床药理学、信使和分子细胞信号转导、新药发明美国德州大学分子医学中心
万森·库尔提欧 Vincent Courtillot 法国 1948年3月 地球物理学法国巴黎地球物理研究所
胡正明 Chenming Hu 美国 1947年7月 微电子器件物理与集成电路美国加州大学伯克利分校

via: 李虎军

中国科学院新当选院士公布
http://www.caijing.com.cn/home/cjkx/2007-12-27/43409.shtml
《财经》网络版 [2007-12-27]

29人当选,增选“门槛”提高,当选人数较往年减少;院士总人数达到710名

  【《财经》网综合报道】今天(12月27日)上午,中国科学院正式公布了新增选院士名单,共有29名中国科学家当选中国科学院院士,另有五名外国科学家当选外籍院士。
  与往年相比,今年当选中国科学院院士的科学家人数明显减少。2005年共有51人当选为中国科学院院士,而2003年和2001年分别为58人和56人。按照惯例,中国科学院增选院士每两年进行一次,每次增选的名额不超过60人。
  中国科学院副院长李静海在新闻发布会上解释说,今年的增选是在院士增选工作规程作了较大修改的情况下进行的。
  2006年的中国科学院院士大会对《中国科学院院士章程》再次作了修订,将院士增选的终选阶段“获得赞同票超过投票人数二分之一的候选人当选”,改为 “获得赞同票不少于投票人数三分之二的候选人,按照本学部的增选名额,根据获得赞同票数依次入选”,并将外籍院士选举工作改为与院士增选工作同年进行。
  修订后的增选工作实施细则,还将公示范围确定为“本单位的有效候选人,以及相同专业的外单位的其他有效候选人的相关材料一并公示”;而此前的办法是仅“在有效候选人所在单位公示其相关材料”。
  此外,受理院士增选投诉信的截止日期,也由原来增选年的8月15日延后至9月15日。同时,在院士增选的通信评审阶段,还实行了打分制等。
  李静海表示,提高当选院士公认度、扩大公示范围、延后投诉截止时间和实施打分制等等新举措,对于保证当选院士质量具有积极作用。
  因参与“人类基因组计划”而声名鹊起的中国科学院北京基因组所研究员杨焕明,今年终于得以入选。而今年5月当选为美国科学院外籍院士的中国科学院上海微系统与信息技术所研究员李爱珍,却仍然未能入选中国科学院院士。
  本次当选中国科学院院士的科学家中,最年轻的是41岁的清华大学教授张希,最年长的是69岁的南开大学教授宋礼成。新当选院士的平均年龄为53.7岁,是1991年中国科学院院士增选工作制度化以来平均年龄最轻的一次。
  据悉,经过此次增选,中国科学院院士总人数达到710名,外籍院士总人数为53名。■

  (《财经》记者 李虎军)

04:33 中国科技工作者的收入 » 格致 - 一起格物致知

zhiqiang 看到这个欧盟委员会这个关于各国科学家们薪水的报告,中国科学工作者们的薪水在 38 个国家中最低。

这也许是中国的学生努力往外走的原因之一吧。

但也得注意,这里统计的是薪水,不是收入。国内也有不少科技工作者,各种津贴、科研提成之类,加起来收入也是很可观的。在国外的话,不管你做多大多好的项目,除了薪水就没别的收入了。

从娃哈哈看到的如何保护民族产业的问题Kreny's Blog » Che, Dong's shared items in Google Reader
似乎是一个论文的题目哦~ 其实今天在看NHK的《激流中国》之娃哈哈品牌事件的专辑以后很有感触,于是提笔纪录一下。 娃哈哈和达能的激战开始于今年4月,简单地可以用以下的图来说明。 初期,娃哈哈和达能各出49%的股份,合资建立了5个项目。 亚洲风暴后,达能在不知不觉中收购了投资公司的2%股票,成为了合作项目的最大股东。并且,达能还参与了诸如蒙牛、乐百氏的股份(达能收买了乐百氏90%以上的股份,不知道现在国内还有没有乐百氏这个牌子了....)。 于是达能有了说话的权利,而此时娃哈哈为了不被兼并,在另外的几个领域扩充自己的资本,以达到和达能相抵抗的目的。于是达能就一纸状告娃哈哈,称其侵犯了自己的商标权,滥用娃哈哈这个商标。(大致是这样,如果有出入请补充。) 作为达能来说,他们借中国的本地企业来拓展市场,作为娃哈哈来说,他们要借外资企业的技术来增加自己的竞争能力。这两种“借鸡生蛋”的经营在中国已经是遍地开花。但是问题就是出现在我们还有很多企业家不懂得如何保护自己的企业,以至于在不经意间就被合并或者贩卖,或者碰到像今天娃哈哈的这些情况。 日本的企业在2007年经历了许多大的M&A,不断地被欧美资本所合并。这之中不乏许多欧美企业,不是为了对被兼并公司的经营状况进行改善或者对其进行长期发展战略的指导而进行兼并购买,而只是有为了力图在兼并过程中产生的股份差价而进行的兼并行为。这种企业往往在收购了本地企业后,将本地企业作为其子公司,去除其原本的公司名称或者品牌,并且在每年作为固定资产损耗的项目将这些子公司进行贩卖,以回收成本并赢取利润。因此,在今年的M&A中,日本企业也极力抵抗欧美资本、投机公司的兼并收买行为,频繁在媒体上有某某公司的大股东呼吁全国人民不要将股票转卖给外资投机公司,以维护民族企业等等。 同样的情况也一样发生在我们身上。 投资公司想借本地公司一用,善者兼并为其子公司,扩大生产,恶者兼并后立刻倒卖,以谋取股份上的利润。 但无论是哪种,本地公司都是在被“宰割”的境地,更不用说其品牌的生存了。 娃哈哈的宗总现在是一个民族英雄的角色。我一直想称为一个企业家,一直来最崇敬的也是企业家。例如娃哈哈能够到达今天的发展规模,是我们这个时代的见证,一个标志。那代创业者在他们将近走过半百的时候,却又要面对他们年轻时想都想不到的这些股份、M&A的事情,实属不易。所以说,这个民族英雄不好当,他用不来我们曾经用过的步枪大炮,而得换成新的金融工具和新的法律手段来对付这场战争。 当然解决方案有很多。例如保存一部分“金库股份”,就是将自己原本公司的一部分股份算作非流通股份(例如33.3%以上就有决议权),锁入自己的“金库”中,可以从某种角度上杜绝被收买的风险。不过,这次娃哈哈的事情牵动到了法国总理都出来说话,还是需要很多调节的时间。就在12月21日,有新闻也报道了新的整合方案以解决这次事件。 不管怎样,作为国人,作为杭州人,某一天突然被一家法国企业说,你们滥用了我们娃哈哈的品牌的时候,谁都会不爽,也会有很多人会斗争下去。但是市场经济的开放,特别是资本市场的开放,让我们清楚地看到,光靠民族感情是解决不了很多新的问题的。娃哈哈事件最大的救命稻草就是当年娃哈哈想把品牌转到达能的旗下的时候,被国家商标局驳回的一系列书面证据。国家也在多年前为了预防此类事情的发生而事先上了一道保险(不说别的,就这点,我觉得中国的领导人还是很有远见的)。也难怪宗总翻出了1999年的董事会纪录和国家商标局传来的信函的时候也会舒一口气。因此,我们在看到“合资”企业能够引进技术的同时,也同时要防范民族企业和民族品牌的落没。创造自身的品牌意识固然重要,但是让更多企业家懂得更多的金融知识更是刻不容缓,同时,在国内展开金融知识的普及或者培养一批专业的咨询顾问也是一项战略性的布局,也是今后事关民族企业存亡的一个分岔口了。 说到这里,可以默默地给自己定下一个目标了,嘿嘿~ [END] 相关链接: 激流中国 訴えられたカリスマ経営者 ~追跡.ブランド騒動~ 娃哈哈遭遇达能强行并购
程序员的成长从开窍开始Tinyfool的开发日记(blog) » Che, Dong's shared items in Google Reader
原文:程序员的成长从开窍开始

最近,有两位Google Maps API的初学者向我请教他们按照最简单例子写的程序为什么不能正常的运行。

其中一位用GTalk跟我交流,我仔细了看了他的代码,没看出问题,把代码保存在本地,打开Firefox的错误控制台,用Firefox打开他的页面。出错的那一行被清晰的显示出来,我再仔细端详那句话,原来有两个应该是英文逗号的地方,写上了中文逗号。

另一位,在我的论坛跟我交流他的Google Maps API中遇到的问题,我看他代码的时候也没有马上发现问题。然而,同样在用Firefox打开后,问题很明显的找到了,原来是一个方法openInfoWindow被他写成OpenInfoWindow了。

在我帮助别人解决的程序调试问题中,这是非常常见的。人人都可能打出中文逗号,人人都可能把大小写写错。但是在我帮助他们解决问题以后,他们总是感慨的说,谢谢我解决了这个问题,这个问题困扰了他们几个小时,甚至是几天。

这其实并不是只有初学者才会遇到的问题,我还帮助过些有非常丰富经验的工程师解决问题,有时候问题仅仅出自某个参数没有传递进来,或者是拼接字符串的时候少些了一个冒号,或者是拼接地址的时候漏掉了http:。我甚至帮助一些人调试一些我根本不懂的语言的程序,因为多半出现的问题,都和语言特性无关,不是程序员写错了字符,就是写错了逻辑,或者是错误理解了一个函数。

出问题是正常的,写程序是一个复杂的边思考边打字的过程,笔误和一时糊涂都是难以避免的。程序员一般把这种问题叫做低级问题,因为这类问题跟你的智商完全无关,任何人都可能犯。

但是,问题在于,有时候即使是很优秀的程序员,也会被一个低级错误困扰,可能会几天都解决不了。所以,关键在于,如何找到问题。

遇到问题的时候:
  1. 不要怨天怨地。出了问题,当然有可能是系统的bug,API的问题,但是那些几率往往比你犯低级错误的几率要低多了,先从自己身上找原因,是不是自己写错了。
  2. 要掌握工具。最低限度你要会写Log,最好是Log和调试器结合。好 的工具可以大大的提高效率。以前有人跟我说,Dll不能调试,我发现可以;有人说多线程不能调试,我发现可以;有人说COM不能调试,我发现可以;有人说 IE插件不能调试,我发现可以;有人说OE插件不能调试,我发现也可以。当然,你确实会遇到不能调试的时候,当年我们做东芝芯片的嵌入程序,一个组都没有 一个仿真器和调试器,但是至少可以用Log嘛,无非是麻烦点。
  3. 分析问题要有逻辑。遇到问题可以先把所有的可能性都列出来,然后一个一个分析,肯定能找到原因的。
  4. 要学会隔离问题。问题涉及到的代码越多,越难以理解,问题越难以解决。遇到这样的情况,可以利用Log或者调试器,一行代码一行代码的给它们洗清嫌疑,这样很快你就可以找到出问题的地方。如果代码特别长,程序特别复杂,可以用二分法来做,效率很高。
  5. 千万不要懒惰,不要事事求别人。一次复杂的调试过程就像一部侦探剧,如果你有非常好的逻辑性,那这部剧的主角就是福尔摩斯,剧情一定非常精彩。我说这个是有巨大风险的,说真的我帮人调东西挺上瘾的,很有意思。但是我还是要告诉大家,一次高难度的调试之后,你的满足感绝对不亚于写了一个伟大的程序。
要想不遇到问题,写代码的时候:
  1. 要对写出来的代码负责。我很佩服那些写代码写100行都不执行一次的 高手,如果他们最后不被低级错误困扰的话我就更加的佩服了。我写程序几乎是写一行两行就要执行一次,每句话我都要确保执行效果跟我的预期一致。没错这样写的时候 可能慢一些,但是调试的时候很轻松,我可以很简单的确定哪些代码绝对没有问题。所以我写代码整体速度比一般人高。很多人学习新东西的时候喜欢把例子抄一遍,运行一下,改改,再运行。我喜欢一句一句的抄例子,抄一句两句执行一次,这样可以把例子透彻的理解,而且很难会遇到出现了问题找不到原因的时候。
  2. 函数体功能块不要过长。我认为我的智商并不高,我很难接受一个程序的一个函数体或者一个功能块超越3屏(当然逻辑真的有那么复杂除外,你会发现越是简单的逻辑越是容易被人写的冗长)。很多人对面向对象耳熟能详,对封装继承看起来驾轻就熟。但是动不动就写出来个函数体超长的程序。这就像写本书从头到尾不点句号一样,会累死读者的。自己看的时候,估计也会被累的喘不过来气。这是我对基础教育的微词所在,他们连教会学生写函数都没教会,虽然表面上他们连面向对象这么高深的东西都教。
  3. 缩进要对。这点很重要,虽然大部分语言不是像Python那样用缩进来决定逻辑块的位置,但是人看到缩进的时候,总是会以为这些缩进位置跟逻辑相关。尤其是在有大量的ifelse或者for循环等等的嵌套逻辑的时候,如果缩进错了,可能会直接让人把程序的逻辑读错。所以我拿到别人的代码,第一件事情就是整理缩进。我见过一些比较优秀的页面工程师,他们会在div结束的位置用注释写上这个div的id,这样层级关系就一目了然了。
  4. 不断重构。随着程序的不断修改,有些部分会不断的增长,原来看着清晰的架构可能因为问题的复杂而慢慢模糊,也可能被修正bug的权宜之计弄的面目全非。不信你找一个经过多次修改的程序看看,是不是满目疮痍,是不是都很难认出是你自己的作品了。这在多人参与的项目中更加严重,每个人有不同的代码风格,经过多次杂交后,你肯定认不出你的代码是骡子是马,还是四不像了。随着程序的慢慢成长,原来有些函数体会慢慢膨胀,需要拆分;有些原来简单的功能块四处都需要,应该被提炼成函数或者方法,等等。现在不重构,未来等到代码复杂到无法控制的时候,重构的工作就会变得更加困难。我见过最强的案例是,一个几千行的电子辞典配套联机软件,经过无数次的改版,变成了一个几乎无法维护的主窗体的cpp有1万8千行的怪物。最后经过复杂的重构,才变成一个出新版本只需要新增一个驱动程序的可以维护的几千行的程序。这个故事详见:一个具体项目的重构(一)一个具体项目的重构(二)一个具体项目的重构(三)

Tinydust studio


^==Back Home: www.chedong.com

^==Back Digest Home: www.chedong.com/digest/

<== 2007-12-27
  十二月 2007  
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            
==> 2007-12-29