终于解封了,庆祝一个。

2007年12月24号的上午,发现自己的blog无法访问了,接着尝试主页,mantis等几个页面也都不行。用putty访问虚拟主机仍然不行,然后却能ping的通。把此情况报告给了smzz,他发现共用一个空间的caoye012.com也无法访问,只有neihuang.org还能访问。看来是虚拟主机的部分服务器被封掉了,也许是哪个某个城门失火了,殃及池鱼啊,郁闷。

可以通过在线代理访问我的主页,但是svn就访问不了了,而且也无法下载东西,可恶啊。

2007年12月28号的晚上,呵呵,绝望之中居然发现我的域名所在服务器已经解封了,可以访问了。赶紧转了一篇自己特别有感触的文章《一句话的力量》,然后发表这篇庆祝贴。

老天啊,俺是良民啊,别再封俺了:-(。

Posted by 王永杰 in 五味人生 - Comments (0)
28 12月

一句话的力量(你死了谁会哭?)

我家在湄河边,外婆在河对面,外婆常来我们家。一次妈妈和外婆在岭上挖红薯,恰好看见村上有人出殡,那长长的送丧队伍、那几十条幢幡、那唢呐的哀号、特别是那悲恸的哭声,动了外婆的心。外婆说:“好人哩,不是好人谁会哭?”
母女俩坐在岭上看。外婆抚摸着妈妈的头发。外婆触景生情。外婆对妈妈说了许多话。许多话妈妈过后都忘记了,妈妈只记住外婆说的一句话:你死了谁会哭?
妈妈在村里小学当老师。妈妈在课堂上对学生讲了外婆的那句话。妈妈说,人的生和死同样只有一次,但死比生更珍贵,人活着时做了什么,在死时最能体现出来,一句话:你死了谁会哭?
妈妈生了六个儿女,儿多母苦,妈妈拉扯着我们,妈妈苦哩,可妈妈不说苦。妈妈在冬天里穿了一双补了又补的凉鞋和我们拍全家福不说苦。妈妈在漏风漏雨的教室里当了二十余年的代课老师不说苦。。。。。。妈妈的那点薪水总要帮别人的忙,我们一家却成了村里最穷的人。
妈妈终因积劳成疾,过早的离开了我们。妈妈在临死时挣扎着说她还没有活够,她还要做许多事,她不能辜负她妈妈。
全村人都哭了。全村三百余人扯成一长溜队伍,送妈妈上山。外婆要是看见,一定会感到欣慰的。
妈妈临死时怎么不肯合眼,妈妈是想抚摸我们的头,说外婆说的那句话。我们跪下,我们把头伏在妈妈的怀里。
妈妈留下一句话:你死了谁会哭?

(注:摘自《读者》2002年 第14期 9页,见附图)
一句话的力量(你死了谁会哭)

Posted by 王永杰 in 五味人生, 文摘转贴 - Comments (1)
28 12月

本博客已转移: www.iseeker.org/blog

blogger 提供了免费的二级域名 *.blogspot.com,但是由于种种原因,此域名几乎是一直被封,无法直接访问。为了能够直接访问自己的博客,还特意定了blog.iseeker.org的个人二级域名指向自己的博客。可是这并没有持续多久,很快也被封了,同样无法访问了。郁闷啊!无奈之下,只好“另立门户”,用wordpress建立了自己的博客: www.iseeker.org/blog,这样不至于“再来”吧?

声明

Posted by 王永杰 in 五味人生 - Tags: - Comments (0)
18 12月

诸葛亮: 诫子书

夫君子之行,静以修身,俭以养德。非淡泊无以明志,非宁静无以致远。夫学须静也,才须学也,非学无以广才,非志无以成学。淫慢则不能励精,险躁则不能治性。年与时驰,意与日去,遂成枯落,多不接世,悲守穷庐,将复何及!
“非淡泊无以明志,非宁静无以致远。”出自诸葛亮54岁时写给他8岁儿子诸葛瞻的《诫子书》。这既是诸葛亮一生经历的总结,更是对他儿子的要求。在这里诸 葛亮用的是“双重否定”的句式,以强烈而委婉的语气表现了他对儿子的教诲与无限的期望。用现代话来说:“不把眼前的名利看得轻淡就不会有明确的志向,不能 平静安详全神贯注的学习,就不能实现远大的目标”。
通过上述分析,我们可以看出诸葛亮运用了《逻辑学》中的“否定之否定规律”来强调他要表达的“淡泊以明志,宁静而志远”。这是一句富含哲理的话。这同“要想取之,必先与之”,“欲达目的,需先迂回曲折”的道理一样,现在的“淡泊”、“宁静”求清净,不想有什么作为,而是要通过学习“明志”,树立远大的志 向,待时机成熟就可以“致远”,轰轰烈烈干一番事业。
“淡泊”是一种古老的道家思想,《老子》就曾说“恬淡为上,胜而不美”。后世一直继承赞赏这种“心神恬适”的意境,如白居易在《问秋光》一诗中,“身心转恬泰,烟景弥淡泊”。他反映了作者心无杂念,凝神安适,不限于眼前得失的那种长远而宽阔的境界。

注:

原贴有译文,鄙人不喜,删之,如有需者,参阅链接。

参考资料:http://zhidao.baidu.com/question/383347.html
参考资料:http://www.zglwh.com/show.asp?newsid=4

Posted by 王永杰 in 五味人生, 文摘转贴 - Tags: - Comments (1)
16 12月

为发布自动化做点贡献——makefile 中使用 xcopy

用makefile做好了一个工程,不同的模块源代码将会被置于不同的文件夹下,而编译后往往也都只是生成在当前编译的目录下。发布的时候就有点麻烦了,比较笨拙的方法就是,一个个的拷贝出来然后再进行打包。这样显然非常繁琐,如果工程的规模较大,这将是一件非常枯燥的事情。如果把这个枯燥的事情变得自动化是不是比较美好呢?

嘿,这其实是很简单的,你只需要在每一个模块生成的命令的后面利用xcopy来拷贝到目的路径就可以了。这个命令是这么写的:

  • DIST_PATH = D:\dist\bin
  • xcopy /y /r /d /f .\*.dll $(DIST_PATH)

有了这句话,就会把当前编译文件夹下生成的所有DLL都拷贝到目的路径下。下面我来解释一下他们含义:

  • “DIST_PATH = D:\dist\bin” 这样定义一个变量作为发布的路径。
    • 好处是:可以做到一改全改,大家都可以理解咯。
    • 需要注意的是:路径不允许用Unix的`/’来进行分割,xcopy是不认识的。
  • xcopy 语句的几个参数,可以在dos命令符下用xcopy /?得到帮助。
    • /y 关闭文件被覆盖的提示信息,保证流程自动化,避免流程被打断。
    • /r 可以覆盖只读文件,确保拷贝工作的顺利进行:-)。
    • /d 根据日期,以新文件覆盖旧文件,减少必要的拷贝。
    • /f 在拷贝的时候显示全部源文件名和目标文件名。

看了这个解释是不是已经能够透彻的理解啦?:-)

当然如果要让这个发布流程都自动化,这样简单的尝试显然是不够的,日后再慢慢探讨吧。

Posted by 王永杰 in C&C++ - Tags: Comments Off
16 12月

Gmail 搜索(Search)和过滤器(Filter)的逻辑运算(Boolean operators)

为何要用逻辑运算(Boolean operators)

  • 如果想要把发往foo@bar1.com或foo@bar2.com,主题里面包含”任务”打上“task”的标签而不是foo@bar1.com或foo@bar2.com的标签,这该怎么办呢?
  • 如果想要把和同学a(a@bar.com)以及同学b(b@bar.com)讨论makefile相关问题的邮件全都找出来,那又该怎么办呢?

这时逻辑运算就有了用武之地。

Search和Filter的表达式位置
如果要制作条件比较复杂的Filter或者对邮件进行更为精确的搜索,那么就要书写复杂一点的高级逻辑表达式。表达式对Filter和Search都是通用的,只是写的位置不同:

  • Search的表达式要写在Search Mail的编辑框内
  • Filter的表达式要写在Has the words后面的编辑框内


逻辑运算符(Boolean operators)

Gmail官方有相关的帮助还有一张逻辑运算符的表格,这将是我们写运算表达式的重要依据。表格很详细的列举了所有可以使用的运算符和用法以及例子。这里只着重介绍几个重要而常用的。

  • 空格:用空格隔开表示的关系
  • OR:用OR隔开表示关系
  • - :用 - 做为前缀表示
  • is:chat:搜索范围为聊天记录
  • ():它的作用就不言而喻了
  • ……


例子(Example)

回到开头提到的问题,很容易就写下他们的答案了。对于过滤器的要求需要写三个表达式。

  • 标签task对应表达式Filter1:“(to:foo@bar1.com OR to:foo@bar2.com) subject:任务”
  • 标签foo@bar1.com对应表达式Filter2:“(to:foo@bar1.com) -subject:任务”
  • 标签foo@bar2.com对应表达式Filter3:“(to:foo@bar2.com) -subject:任务”

第二个表达式是为了避免同时打上task和foo@bar1.com的情况。
对于第二个问题,只需要使用下面的表达式

  • (from:a@bar.com OR to:a@bar.com OR cc:a@bar.com bcc:a@bar.com) (from:b@bar.com OR to:b@bar.com OR cc:b@bar.com bcc:b@bar.com) subject:makefile

为了搜索更为准确,你还可以用这些运算符组成更为复杂的表达式。

后话
Gmail 提供的逻辑运算已经很强大了,不过我觉得 Filter 有点疏漏,缺少了一般的过滤器都有的两点功能:1、能够为过滤器进行排序;2、如果以及符合一个过滤器可以选择不再继续查找其他过滤器。如果有这两点功能的话,我们的Filter2和Filter3就不用那么麻烦了。

Posted by 王永杰 in 网络应用 - Comments (0)
10 12月

VS2005 编译环境,解决 Runtime Error(运行时错误): R6034。

问题:Runtime Error R6034
在VS2005编译环境下,用makefile编译的程序爆出了一个可恶的Runtime Error。
错误如下图:

提示信息是:
Runtime Error!
R6034
An application has made an attempt to load the C runtime library incorrectly. Please contact the application’s support team for more information.
无法正常载入 C runtime library。

问题追因
程序生成之后直接执行是没有问题的,而打包后的程序却有问题,看来应该是缺少了什么文件。于是我对编译程序生成的文件一个个删除,并查看检查程序的运行情况。在$(APP).exe.manifest被文件删除之后,R6034现身了,看来罪魁祸首就是它了。
我又在MSDN上搜索R6034,得到了这个Error描述的:

C Run-Time Error R6034
Error Message

An application has made an attempt to load the C runtime library without using a manifest. This is an unsupported way to load Visual C++ DLLs. You need to modify your application to build with a manifest.

这么以来更确认了出现这个问题的原因:缺少了manifest,程序因此无法正常载入C runtime library。

解决办法
解决方法有两个:

  1. 将编译得到的 $(APP).exe.manifest 一并打包,即和应用程序放在同一个文件夹下;
  2. 将manifest文件直接嵌入到可执行文件。

嵌入到可执行文件的方法是,需要在生成exe之后在执行下面的命令:

mt.exe –manifest $(APP).exe.manifest -outputresource:$(APP).exe;1

编译DLL的话,有一点点小区别的。

mt.exe –manifest $(LIB).dll.manifest -outputresource:$(LIB).dll;2

后话
VC2005搞出个这玩意有什么好处?

Posted by 王永杰 in C&C++ - Comments (8)
8 12月