Author: root

  • TYTSTN

    TYTSTN是BT群得独创词汇,意思是Too Young, Too Simple, Too Naive。

    最近这几天,拼着晚上睡的很迟,看完了《三体》三部曲,以及《超新星纪元》,现在在看《球状闪电》。关于《三体》的读后感稍后放出,今天我先说说我看《超新星纪元》的感受。

    首先,向作者刘慈欣表示致意!我从小就喜欢看科幻小说,看过最多的是凡尔纳的,然后是阿西莫夫的,还有国内叶永烈的。对科学(尤其是天文、地理、历史)、哲学方面的浓厚兴趣可以说就是靠看科幻小说给培养起来的。

    (more…)

  • 【iPad】软件推荐:Pulse

    好久没有为广大猪手推荐猪手喜闻乐见的iPad软件了。今天再推荐一个:Pulse,免费。

    Pulse是什么呢?它是一个RSS阅读器+新闻阅读器。

    它的界面如下:

    (more…)

  • 肾上在“饭婚礼”上的证婚词

    全文贴出如下。

    =======

    各位来宾,大家好!

    今天是公元2011年6月4日,农历五月初三。今天是我的好朋友猛禽和京京结婚的好日子。我很荣幸接受他们夫妇的邀请,担任他们婚姻合情合理、合法合体的证婚人。

    肾上鄙人在下我和他们认识已经有很多年了。在过去几年来的河蟹大会、床菜会、小规模高姿态很黄很暴力的群P会上,肾上见证了他们的情感历程。他们终于走到今天,我们能不为他们祝福吗?

    婚姻首先是一种责任,更是承担这些责任的承诺。从此,夫妇双方就不再简单地过着一个人的生活,而必须承担更多的责任。猛禽和JJ都是我的好朋友,我相信,当你们了解到你们所要承担的责任后,再做出在你们余下的生命历程中走在一起的承诺,更能全心全意的、义无反顾的去实现这些责任,从而在你们的人生道路上取得了不起的成就。这是多么了不起的一个承诺啊!这是一个比“牢不可破的誓言”更牢不可破的承诺。

    婚礼只是一个仪式,而婚姻才能使你们的感情升华、永固。当时光流转、韶华逝去,神马都变成了浮云,惟有你们在一起度过的美好的时光永存。

    最后,我改编一下著名作家马尔克斯在他的《霍乱时期的爱情》一书结尾的一段话作为我的证婚词的结束:

    船长看了一下费尔米纳,在她的睫毛上看到了初霜的闪光。然后他又看了一眼阿里萨,看到了他那不可战胜的自制力和勇敢无畏的爱。于是,终于悟到了爱情与生命跟死亡相比,爱情才是无限的这一真谛,这使船长大吃一惊。 “您认为我们这样瞎扯谈的来来去去可以继续到何时?”他问。 阿里萨早在五十三年七个月零十一个日日夜夜之前就准备好了答案。 他说:“永生永世!”

  • 少说话,多看书

    自从2月10号写了一篇关于《Decision Points》的读书笔记后,一直没有写读书笔记。但是,我还是一直在看书。期间一共看了这么几本:

    My Spiritual Journey
    The Grand Design
    Alone
    The Girl With The Dragon Tattoo
    The Girl Who Played With Fire
    The Girl Who Kicked The Hornet's Nest

    后三本也统称为The Millennium Trilogy,千禧年三部曲。

    (more…)

  • Symfony 2入门简介

    我一直关注Symfony这个框架。最近这个框架推出了Symfony 2,其官方站点也迁移到了http://symfony.com/。目前这个框架还没有正式发布,写作本文时可以下载到的是PR10版本(下载地址请戳这里)。

    请注意:Symfony 2需要PHP 5.3的支持,因为它用到了PHP的新特性namespace。

    (more…)

  • 重构狗屎皮:第六天

    在第六天,重构后的狗屎皮终于上线了:http://www.go4pro.org 。总结一下,目前新版的狗屎皮的架构是这样的:

    第一大功能模块是后台的机器人抓取模块,由猛禽开发,使用的语言是Python。机器人负责遍历所有的文章来源的RSS并取出新的文章并存入数据库。

    第二大功能模块是前台,由TR开发,使用的语言是PHP+Symfony 1.4。这个模块用来显示数据库里的文章等。

    (more…)

  • 重构狗屎皮:第五天

    继重构狗屎皮第四天后,我要开始非常重要的一个环节:狗屎皮后台的管理。而后台管理必然牵涉到用户登录。

    在Symfony框架中,这两个功能都可以简单的实施。 首先是后台模块的创建,基本上需要如下几个命令:

    (more…)

  • 重构狗屎皮:第四天

    今天进入狗屎皮重构的第四天。有件事要纪念一下:从今天晚间开始,我的虚拟主机上站点:BSpMq.com以及rsywx.net无法正常访问,必须翻墙。我实在不能明白的是,这样一个纯粹是打P扯谈的站点,一个以藏书、温和时事评论的站点怎么会被封?GFW真的是不可理喻了!

    进入妓术专题。

    今天进入狗屎皮重构的第四天。我主要解决了分页的问题。

    (more…)

  • 重构狗屎皮:第三天

    今天进入了狗屎皮重构的第三天。今天要解决一个很关键的问题:如何让用户贴出评论?

    先看界面:

    ui-master-detail

    这时一个标准的主从表界面:帖子内容、已经有了的评论内容再加上一个表单方便用户提交评论。

    我本来认为要完成用户提交评论,在Symfony下是很简单的——简单到你可以不用写任何额外的代码,但实际情况并不如此。

    主要的一些修改如下。

    首先,要修改article的action.class.php文件中的executeShow函数:

    class articleActions extends sfActions
    {
        public function executeShow(sfWebRequest $request)
        {
            $article=$this->getRoute()->getObject();
            $this->article = $article;
            $this->comments=Doctrine_Core::getTable('g4pcomment')->getComments($article->getId());
            $this->form=new G4pCommentForm();
        }
        ......
    }

    上述代码中必须人肉创建了一个comment的表单,并传递到模板中进行进一步处理。

    在showSuccess.php模板中,通过include_partial来显示comment表单:

    include_partial('comment/form', array('form'=>$form, 'article_id'=>$article->getId()));

    注意,我还额外传递了一个article_id参数进去,这是为了后续的处理。

    修改comment表单文件如下,让它带一个article_id的参数:

    <?php echo form_tag_for($form, '@comment') ?>

    最后,修改comment的create以及processForm函数:

    public function executeCreate(sfWebRequest $request)
        {
            $this->forward404Unless($request->isMethod(sfRequest::POST));
            $aid=$request->getParameter('aid');
            $nc=new G4pComment();
            $nc->set('article_id', $aid);
            $nc->set('created_at', date('Y-m-d H:i:s'));
            $this->form = new G4pCommentForm($nc);
            $this->processForm($request, $this->form);
            //$this->setTemplate('article/show');
        }
    
    protected function processForm(sfWebRequest $request, sfForm $form)
        {
            $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
            if ($form->isValid())
            {
                $comment = $form->save();
                $article=$comment->getG4pArticle();
                //var_dump($article);
                $this->redirect($this->generateUrl('show_article', array('id'=>$article->getId(), 'title_slug'=>$article->getTitleSlug())));
            }
        }

    在executeCreate函数中,设置了一个comment的外键article_id(从前一个页面传递过来),设置了comment创建的时间。

    在processForm函数中,需要修改一下处理完毕后的重定向,回到原来的帖子的页面,显示帖子、评论等。

    最后,我不得不说两句。我认为这个要求是几乎所有WEB程序都会用到的,但是我提问到Symfony的官方论坛后三天没有人回答!最后还是靠自己解决了问题……

    (本文收录于[go4pro.org])

  • 从地震、核泄露,到盐慌子孙

    地震我们中国人已经听过、甚至亲身经历过了。这次的日本地震虽说震级相当的大,但是如果没有加上“核泄露”,我相信不会在中国引发盐慌。

    我很少看新闻,我现在对外部世界的了解来自微博。我稍微回想了一下,这整个这个过程大概是这样的:

    (more…)