Month: October 2008

  • 编程的乐趣

    这两天,和狗屎皮群在讨论一个小应用的编写。作为这个主意的提出者,原型的编写当然应该是我来做。

    在选择原型开发语言时,我还是踌躇了一番。从将来(必然的WEB)扩展来看,用python或者PHP似乎更好,但是我对这些脚本语言的OO特性一直掌握的不好。所以,在挣扎了20分钟后,我还是觉得用C++更“顺手”一些。

    我编程是从来不会先写什么流程图的。在脑海中将应用的框架做了一番YY后,自然就知道了要有哪些底层的类。然后简单的测试例程应该如何写也就清楚了。

    终于今天完成了一个最最最基本的原型。前令狐已经写好了针对Linux,minGW,VC,BCC的makefile,这样不同的开发平台都可以对这个原型进行编译了。我个人测试了BCC和Linux的编译,代码的兼容性应该是不错的。只有在Linux下出现了两个无关痛痒的warning。

    感觉很有成就感。当我看到程序的测试输出和我的想象一致的时候,我还是很兴奋的。

  • 睡不着了……

    实在是睡不着……

    起来更新了BLOG的WordPress后台版本,发现原来一直有问题的comment居然神奇恢复正常。

    同时,打开了Akismet防SPAM。再顺大便更新了一下一个SEO插件。

    稍微平静了一些。

  • 杭州一日行

    10月8日,我因为要到杭州和客户讨论一些合同上的事宜,而且预计到讨论会很快,所以就和杭州的诸位BT商量了一下,晚上一起吃饭。

    先约好了QQMM和小超,然后大家一起先去花港观驴边上的冰激凌店吃甜点。小超由于“冰激凌性寒,孕妇不宜”而只能哀怨的点了一小粒芒果口味的球球,并充满怨念的看着QQMM毫不手软的点了三小粒的球球,再充满巫妖气质的预祝QQMM能全部吃完,并继续发胖……

    晚饭在所谓的知味观(杨公堤)店进行。随便点了几个菜(事后证明,只有若干个菜很不错),叫了一瓶冰酒(事后证明,这瓶张裕的冰酒远不如我家里买的好吃)。

    这次吃饭,最大的收获当然是重逢了Finex,新见了小辛。小辛带来的巧克力和进贡给肾上的雪茄都非常、非常不错。

    这次再次见到小超和刺猬、QQMM也很开心。正如小超所说,以前是到肾上家,是觐见、上朝;现在是肾上到外地,是巡幸、接驾。因此,决定将小超和刺猬居住的新村改名为接驾村,村口的那座桥改名为接驾桥……

    最后放一张王道(我和Finex。为方便大家分辨who is who,提示如下:我的穿着显然比Finex更有RP,我的手机也比Finex更好…… 当然,Finex可能比我帅那么一点点……

    刺猬:肾上,你边上还有我啊……
    肾上:我本来是比他帅一点点的。就是因为有了你,他才会比我帅一点点!

    Meeting in Hangzhou

  • 老彼得的奖状

    今天虽然老彼得的数学考试成绩不理想,但是我没有太责备他。一来因为错的地方不是很离谱,基本属于审题不清;二来,他的英语背的不错;三来吗,是因为还拿回来一个奖状:

    基本满意。

  • 人体彩绘图

    今天再次发现一张很好的图,是人体彩绘。大家看看,这才是真正的艺术啊。根本不用强调“这些模特都是大一女生”之类的噱头:


    从这张图上看,这些应该都是Pink Floyd乐团的专辑封面。我能认出左三到左五,在搜索引擎的帮助下,可以认出除左二的其它五张。它们分别是(从左至右):

    1. Atom Heart Mother
    2. Relics
    3. The Dark Side Of The Moon
    4. Wish You Were Here
    5. The Wall
    6. Animals

    如果有谁知道左二那张是哪个专辑的,请告知……

    ps:哈哈,不用麻烦大家了。在网络上找到了。之所以前面没有查到,是因为那个站点只给出了1996年Relics重新发行时新换的CD封面所谓的Cover of the American Harvest LP release(感谢小辛指正)的照片。怪不得呢。

    Cover of the American Harvest LP release的CD封面一并放出:

  • 囧图一张

    废话少说,直接上图:

    缩略图可能看不出动画效果,请点击看大图……

    这个很让我想起YouTube上那只可爱的忍者猫……

  • 一些小小的想法

    近期的国际经济形式很不妙。连带着最新一期的CSSD Newsletter也不得不承认:今年上半年度苏州工业园区(SIP)吸引的直接外资投资(FDI)是0。对于我来说,对于我现在所从事的行业来说,这可是天大的坏消息了。投资商都不见了,哪还能把厂房租出去呢?

    一个封闭的经济体系,是不会受到这些外在因素干扰的;一个经济体系越是开放,就越是不能避免受到这样的影响,而且影响会越来越大。

    那么中国还有没有办法通过降低开放程度来减少这样的影响呢?

    我觉得已经没有办法了。首先,目前的经济体系已经完全进入了开放式的范式,这种开放的要求不是靠行政命令能够控制的,而是其内在的必然要求;其次,太多的经济团体已经在这个体系中获利,不但在经济上,而且在政治上,因此不可能要求他们来进行这样的举动;第三,万一这样做了,其直接后果就是我将会失业,所以我也不会赞同这么做。

    “永远不要把所有的鸡蛋放到一个篮子里”是风险控制的重要策略。但是,在所有的鸡蛋都是坏鸡蛋,又或者所有的篮子其实还都放置在一个更大的托盘上时,风险控制变得毫无意义。从全局的角度来说,当所谓的风险分散实际已经退化为寄希望于他人的盈利模式和发展,而且这样的依赖关系变为互相之后,风险就被放大了,并最终无法收场。

    不管怎么样,我想巴菲特是赢了,他赌美国会救市,他赌赢了。

  • 【一日一得】Paamayim Nekudotayim

    在OO的编程语言(如C++)中,有一个很重要的符号:::,即双冒号,一般称其为Scope Resolution Operator,范围解析运算符。

    在C++中,我们可以这样写:

    class Base
    {
        protected int i;
        public showI()
        {
            cout showI();
            //感谢指正,用脚本语言多了,忘记在C++中是没有GC的
            delete d;
            d=NULL;
        }
    }

    (more…)

  • Smarty中用section完成主从表循环

    在我的“任氏有无轩”WEB界面中,有一个是读书页面。这个页面列出了我非但读过、而且写过相关评论的书籍,各个评论将链接到对应的BLOG文章去。 显然,这是一个很典型的“一对多”的主从表循环。原来我是简单的用嵌套循环,现在既然用了Smarty引擎,我就改用了Smarty中的section语法。

    =======================

    Smarty中的section语法说来不复杂——特别是在不嵌套的时候:

    <?php
    //从PHP脚本中assign()一个数组给Smarty:
    $data = array(1000,1001,1002);
    $smarty->assign('custid',$data);
    ?>
    输出数组的模板:
    {* 本例将打印出$custid数组的所有值 *}
    {section name=customer loop=$custid}
    id: {$custid[customer]}
    {/section}
    {*  逆序打印所有$custid数组中的值 *}
    {section name=foo loop=$custid step=-1}
    {$custid[foo]}
    {/section}

    语法是自明的,这里不多做解释。如果牵涉到主从表的嵌套循环,那么语法会稍微复杂一些:

    {section name=reading loop=$readings}
        //循环显示外层循环的内容
        {section name=reading_detail loop=$reading_details[reading]}
        {$reading_details[reading][reading_detail].reviewid} <a
          href={$reading_details[reading][reading_detail].uri}>
        {$reading_details[reading][reading_detail].title}
        </a>
        {$reading_details[reading][reading_detail].datein}
        {/section}
    {/section}

    可见,外层循环(主循环)还是保持基本语法不变,内层的语法中需要特别注意loop=$reading_details[reading]这个loop变量的控制,以及循环显示内层循环的内容时对索引的引用控制。 当然,我使用的是一种最直截了当的方法。在对应的PHP文件中,对各个循环变量可以使用一个类似的嵌套循环来赋值:

    $i=0;
    $arr1=array();
    $arr2=array();
    foreach ($result1 as $master)
    {
        $arr[$i]['aField']=$master['aField'];
        // 更多的外层赋值
        $j=0;
        foreach ($result2 as $detail)
        {
            $arr[$i][$j]['anotherField']=$detail['anotherField'];
            // 更多的内层赋值
            $j++;
        }
        $i++;
    }

    这样就可以完成两个循环变量的初始化,然后再用Smarty赋值给模板变量即可。 Smarty中的section是非常强大的循环控制语句。任何需要使用Smarty进行模板操作的人,必须掌握其语法。也许,它的唯一不足也在于此:对于一个MVC完全隔离,前端界面可能由根本不懂计算机编程的设计人员完成的前端来说,section的语法还是稍微复杂了一些。

  • 【一日一得】2008年度IgNobel奖项

    2008年度的IgNobel奖项于10月2日公布,各大奖项得主详见此处,简要摘录如下:

    • 营养学:今年的搞笑诺贝尔营养学奖得主证明了:好听的食物,也会比较好吃。此说一出,一片哗然;
    • 瑞士一个主管生物科技的委员会,因为认定植物也有尊严,不应该随意践踏,而获得搞笑诺贝尔和平奖;
    • 巴西圣保罗大学的研究团队,证明穿山甲会跑到考古坑洞里面捣乱,他们拿到搞笑诺贝尔的考古学奖;
    • 今年搞笑诺贝尔的生物学奖得主是法国研究人员,他们发现狗身上的跳蚤,比猫蚤跳得更高;
    • 杜克大学的团队证明昂贵的假药,比廉价的假药有效,得到搞笑诺贝尔医学奖;
    • 新墨西哥大学的研究人员发现脱衣舞娘在排卵期的那几天,小费收入也特别丰硕,获颁搞笑诺贝尔经济学奖;
    • 搞笑诺贝尔化学奖让证明可口可乐可以杀死精子以及提出反证的两组研究人员共享;
    • ……………………