• 天道酬勤

    2006-12-02

    分类:生活杂记

    说实在的,最近几日才真正弄懂天道酬勤的含义。这样的一些词很早就听说了,更多的时候只是仅仅记住了这个词,到底是什么含义却没有深究,或者是没有时间去深究。最近在学院的一次会议上,院长作了较好的解释,才又重新认真思考它的含义,原来是如此的深刻,也难快这么多的人会以此作为座右铭,众多学校将刻在石头上作为装饰,我们学校也一样。

    周易里讲到“劳谦君子,有终吉。”至尚书就有“天道福善祸淫”和“天道酬勤”。韩愈曾题词“天道酬勤”勉励后来者。

    《尚书.大禹谟》中的“满招损,谦受益,时乃天道。”是最为接近的,原文如下:三旬,苗民逆命。益赞于禹曰:“惟德动天,无远弗届。满招损,谦受益,时乃天道。帝初于历山,往于田,日号泣于旻天,于父母,负罪引慝。祗载见瞽叟,夔夔斋栗,瞽亦允若。至诚感神,矧兹有苗。”“天道酬勤”这个成语的意思是:上天偏爱于勤奋的人们,付出的努力一定会有所回报,也说明了机遇和灵感往往只光顾有准备的头脑,只垂青于孜孜以求的勤勉者。指一分耕耘,一分收获,是指古今中外所称道的多劳多得。这句话出自于《论语》,“天”指“上天”,“天道”即“天意,“道”指“主张”,“酬”可解释为“实现志愿”,即酬谢、厚报的意思, “勤”为“勤劳”。就是说“天意厚报那些勤劳、勤奋的人”。所以总的意思是说:上天会实现勤劳的人的志愿。有耕耘就会有收获,我们只要不懈努力,最大限度的完善充实自己,千方百计的提高自己的竞争实力,就会有一个美好光明的明天。>

  • Google不愧是Google,在收购了一些很有创意的设计后,为我们提供了众多的服务,让我们的网络生活变得丰富了许多!
    以下是我已经在使用的Google服务:

  • 在项目开始之前

    2006-06-04

    分类:学习笔记

      “在项目开始之前”这是The Pragmatic Programmer(程序员修炼之道)第七章的标题,读到这章,想想在这之前所经历的一些项目,感受深刻,有一种相见恨晚的感觉。下面是一些在需求过程中的小提示,有了这些提示,在对项目最需求的时候就会小心多了。
    1、Don’t Gather Requirements - Dig for Them
    不要搜集需求–挖掘它们

    2、Work with a User to Think Like a User
    与用户一同工作,像用户一样思考

    3、Abstractions Live Longer than Details
    抽象比细节活得更长久

    4、Use a Project Glossary
    使用项目词汇表

    需求不是架构,不是设计,也不是用户界面,需求是需要。

    一个小故事
    弗里吉亚的国王戈尔迪斯曾经系过一个没有人能解开的结。据说能解开这个结的人将会统治整个亚洲。亚历山大大帝来了,用剑劈开了这个结。只是对要求做了小小的不同的解释,就是这样……他后来的却统治了亚洲大部分。

    一个谜题
    你只用三条线能把下面的四个点连起来,并且返回起点吗?不能让笔离开纸面,或者是折回已经画过的地方。
    .      .

    .      .

    5、Don’t Think Outside the Box - Find the Box
    不要在盒子外面思考——找到盒子

    6、Listen to Nagging Doubts - Start When You’re Ready
    倾听反复出现的疑虑——等你准备好再开始>

  •   成果鉴定时需要一个演示录像片,这个任务交给了我,重来没有做过视频剪辑,今天去遇到了,为了完成这个任务,花了我一天和一个晚上。
    最开始想到的办法是使用Microsoft 的 Movie Maker,下载安装后开始使用,还不错,非常简单,也很容易上手,但是却在我的机器上频繁出现致命错误,不能顺利的完成剪辑。没办法,只有使用Adobe Premiere这个比较专业的工具了。
    好不容易找到一个可以下载的,下载后安装完毕,再打开程序时去出现不能完成编辑的错误,再换台机器,还是这样的错误,最后只有重新找了一台机器,重新安装了WinXP,然后再安装了Adobe Premiere Pro 1.5,这回好了,终于可以用了。
    打开程序,终于看到界面了,虽然以前没有用过,但是凭着以前使用Adobe的其它产品的经验,感觉还是比较容易上手,经过一个晚上的努力,终于搞定了,虽然有点粗燥。
    不过在最后将视频导出的时候还是范了个大的错误,最开始用的是文件里的导出为电影,结果发现需要10多个小时,而且经过几分钟后提示磁盘空间不够,13 分钟的视频,而且还是导出到有35GB的硬盘上的,还不够,后来才发现这种导出的时电影格式,没有经过压缩,于是只有重新来过,再倒出菜单里发现了它自带的编码器,经过几番折腾,终于使用这个编码器把视频导出为RMVB的格式。不管怎么样,在凌晨3点钟的时候,还是把它搞定了。

  • 由于项目需要,要在Linux下虚拟一个Windows,经过查找些资料,发现可一用VMware来实现,当然还有其他一些虚拟机可以使用如Win4lin,bochs等,但经过试用,只有VMware还好用.以下就是安装的步骤.
    首先到https://www.vmware.com/ 下载最新的安装包,比如VMware-workstation-4.0.5-6030.tar.gz,假设放在“/tmp”下.然后使用下面的命令解压后安装.
    1、tar –zxvf VMware-workstation-4.0.5-6030.tar.gz
    2、cd ./vmware-distrib
    3、./vmware-install.pl
    下面按照提示选择就可以了,如果没有特殊要求,直接回车即可.
    4、安装完启动VM,提示符下输入命令:vmware,或者按照提示输入就可以起动,就可以看到VMware的界面了.

    如果是用rpm包安装:
    1、rpm -ivh VMware-workstation-4.0.5-6030.i386.rpm
    Preparing… ########################################### [100%]
    1:VMwareWorkstation ###########################################[100%]
    2、安装完现用下面命令启动:vmware &
    3、提示要配置vmware-install.pl,仔细查看“vmware-install.pl”他的位置,并进入他的文件夹,用命令./vmware-install.pl,进行配置,根据提示做就行。
    4、完成之后就可以用命令:“vmware”启动了。

    起动后就可以添加的你自己的虚拟机了,我这里添加的windows 2000 prwfessnal,把虚拟机的CDROM设置成光驱,就可以从光盘安装操作系统了.
    当然这里有很关键的一步,就是先到VMware的网站申请30天试用的序列号,在打开虚拟机之前要输入注册号,否则没办法Pow on。
    ok,现在你可以施用了.

  • Ajax牛刀小试

    2006-05-01

    分类:开发手记

      今天是五一,劳动人民的节日,但是我这个劳动人民仍然呆在实验室,继续在代码中游荡。
    前些天看了看Ajax,正好,在正在写的程序中用得着,马上拿过来试试,效果还不错。
    uploads/200605/01_145457_ajaxtest1.gif
    要完成的功能如下:在输入了职工的工号后,马上显示出该职工的一些基本信息。如图所示,在文本框“employeeid”输入工号,在层”showresult”处显示职工基本信息。
    在以前的处理中我是将“showresult”处用了一个Iframe来实现,当然也可以实现,但是每次当输完工号后,显示职工基本信息的页面都要加载一次,很是麻烦,正好Ajax可以解决此类问题,就用上了。下面就是具体的代码:

    输入页面的Ajax代码:

    < script language=”javascript”>
    //ajax start
    var xmlHttp;
    function createXMLHttpRequest() {
    xmlHttp = false;
    if(window.XMLHttpRequest) { //Mozilla
    xmlHttp = new XMLHttpRequest();
    if (xmlHttp.overrideMimeType) {
    xmlHttp.overrideMimeType(”text/xml”);
    }
    }
    else if (window.ActiveXObject) { // IE
    try {
    xmlHttp = new ActiveXObject(”Msxml2.XMLHTTP”);
    } catch (e) {
    try {
    xmlHttp = new ActiveXObject(”Microsoft.XMLHTTP”);
    } catch (e) {}
    }
    }
    if (!xmlHttp) { // 异常
    window.alert(”不能创建XMLHttpRequest 对象实例.”);
    return false;
    }

    }
    function processRequest() {
    if (xmlHttp.readyState == 4) {
    if (xmlHttp.status == 200) {
    document.getElementById(”showresult”).innerHTML = xmlHttp.responseText;
    } else {
    alert(”您所请求的页面有异常。”);
    }
    }
    }

    function startRequest(strurl){
    createXMLHttpRequest();
    xmlHttp.onreadystatechange = processRequest;
    xmlHttp.open(”Get”, strurl, true);
    xmlHttp.send(null);
    }
    function showemployeeinfo() {
    var employeeid=document.form1.employeeid.value;
    var temstr=”showmsg.asp?employeeid=” + employeeid;
    document.getElementById(”showresult”).parentNode.style.display = “”;
    document.getElementById(”showresult”).innerHTML = “正在读取数据…”
    startRequest(temstr);
    }

    数据录入部分的HTML代码:

    < form id=”form1″ name=”form1″ method=”post” action=”">
    工号:< input name=”employeeid” type=”text” id=”employeeid” size=”6″ maxlength=”8″ onblur=”javascript:showemployeeinfo();” />
    姓名:< input name=”employeename” type=”text” id=”employeename” size=”8″ maxlength=”8″ onblur=”javascript:showemployeeinfo();” />
    < input type=”submit” name=”Submit” value=”提交” />
    < /form>

    < div id=”showresult”>< /div>

    数据处理程序showmsg.asp的代码:

    Response.Charset=”gb2312″ ‘避免乱码
    EmployeeID=Request.Querystring(”employeeid”)
    ‘这里省略了数据库查询的代码,将职工信息给strEmployeeInfo,然后输出就可以了
    strEmployeeInfo strEmployeeInfo = “职工信息”
    Response.Write strEmployeeInfo

  •   在很多页面中都可能会用到同样的Ajax初始化代码,因此,可以把这部分公共的代码写到一个js文件中, 在某个页面需要调用时,直接调用这个文件就可以了,就不要在每个页面中都加入一段Ajax的初始化代码。这段公用代码如下:

    var xmlHttp;
    function createXMLHttpRequest() {
    xmlHttp = false;
    if(window.XMLHttpRequest) { //Mozilla
    xmlHttp = new XMLHttpRequest();
    if (xmlHttp.overrideMimeType) {
    xmlHttp.overrideMimeType(”text/xml”);
    }
    }
    else if (window.ActiveXObject) { // IE
    try {
    xmlHttp = new ActiveXObject(”Msxml2.XMLHTTP”);
    } catch (e) {
    try {
    xmlHttp = new ActiveXObject(”Microsoft.XMLHTTP”);
    } catch (e) {}
    }
    }
    if (!xmlHttp) { // 异常
    window.alert(”不能创建XMLHttpRequest对象实例.”);
    return false;
    }

    }
    function processRequest() {
    if (xmlHttp.readyState == 4) {
    if (xmlHttp.status == 200) {
    document.getElementById(”showresult”).innerHTML = xmlHttp.responseText;
    } else {
    alert(”您所请求的页面有异常。”);
    }
    }
    }

    function startRequest(strurl){
    createXMLHttpRequest();
    xmlHttp.onreadystatechange = processRequest;
    xmlHttp.open(”Get”, strurl, true);
    xmlHttp.send(null);
    }

    可以将这段代码存为ajaxcommon.js文件,在页
    中需要使用时在标签中引入就可以了,代码如下:

    < language=”JavaScript” type=”text/javascript” src=”http://mryang.blogspot.com/js/ajaxcommon.js”>< /script>

    在使用的页面中用下面的方法来调用:

    function resultshow() {
    var temstr=”showmsg.asp”;
    document.getElementById(”showresult”).parentNode.style.display = “”;
    document.getElementById(”showresult”).innerHTML = “正在读取数据…”;
    startRequest(temstr);
    }

  • 近日在读《程序员修炼之道》一书时,读到这样的故事,很有些意思,故事大概如下:

    三个士兵从战场返回家乡,在路上饿了。他们看见前面有村庄,就来了精神——他们相信村民会给他们一顿饭吃。但当他们到了哪里,去发现门紧锁,窗户也关着。经历了多年战乱,村民们粮食匮乏,并把他们仅有的一点粮食藏了起来。

    士兵们并未气妥,他们开始煮一锅水,小心地把三块石头放进去,吃惊的村民们走出来看望着他们。

    “这是石头汤。”士兵们解释说。“就放石头吗?”村民们问。“一点没错——但有人说加一些胡萝卜味道更好……”一个村民跑开了,又很快带着他储藏的一篮胡萝卜跑回来。
    几分钟之后,村民们又问:“就是这些了吗?”

    “哦,”士兵说:“几个土豆会让汤更实在。”又一个村民跑开了。

    接下来的一小时,士兵们列举了更多让汤更加鲜美的配料:牛肉、韭菜、盐,还有香菜。每次都回又一个不同的村民跑回去搜寻自己的私人储藏品。

    最后他们煮出了一大锅热气腾腾的汤。士兵们拿掉石头,和所有村民一起享用了一顿美餐,这是几个月以来他们所有人第一次吃饱饭。

    看完后,又在Google搜了一下,发现这个故事还有其他的版本,比如有的说是一个乞丐到了一个地主家使用了该方法,有的有说是一群小孩中的一个小孩使用了该方法,不管什么样的版本,故事的大概都查不都,不过我更喜欢这本书上的版本,因为在里面一直都有一种相互合作的氛围,实际上团队软件开发也是这样,团队中需要有个催化剂来提高队员的协作能力,而上面的士兵就充当了这个催化剂,只要团队协作效果好,最后每个人都是赢家。

    当然,每个故事在不同的情形下都有自己不同的寓意,对于读到这则故事的你,得到些收获了吗?

    最后在附上该故事的英文版:
    The Story of Stone Soup

    Once upon a time, somewhere in post-war Eastern Europe, there was a great famine in which people jealously hoarded whatever food they could find, hiding it even from their friends and neighbors. One day a wandering soldier came into a village and began asking questions as if he planned to stay for the night.

    “There’s not a bite to eat in the whole province,” he was told. “Better keep moving on.”

    “Oh, I have everything I need,” he said. “In fact, I was thinking of making some stone soup to share with all of you.” He pulled an iron cauldron from his wagon, filled it with water, and built a fire under it. Then, with great ceremony, he drew an ordinary-looking stone from a velvet bag and dropped it into the water.

    By now, hearing the rumor of food, most of the villagers had come to the square or watched from their windows. As the soldier sniffed the “broth” and licked his lips in anticipation, hunger began to overcome their skepticism.

    “Ahh,” the soldier said to himself rather loudly, “I do like a tasty stone soup. Of course, stone soup with cabbage — that’s hard to beat.”

    Soon a villager approached hesitantly, holding a cabbage he’d retrieved from its hiding place, and added it to the pot. “Capital!” cried the soldier. “You know, I once had stone soup with cabbage and a bit of salt beef as well, and it was fit for a king.”

    The village butcher managed to find some salt beef . . . and so it went, through potatoes, onions, carrots, mushrooms, and so on, until there was indeed a delicious meal for all. The villagers offered the soldier a great deal of money for the magic stone, but he refused to sell and traveled on the next day. The moral is that by working together, with everyone contributing what they can, a greater good is achieved.