任氏有无轩最新改版

任氏有无轩改版已经很多次了,从最早的Symfony 1.x开始,在Symfony框架进入到2.x的时候重新改版了一次,最近的这次刚刚结束,也算是很大的一次。

根据我在Bitbucket的提交记录,3月12日开始第一次重新提交,4月22日完成最后一次的提交,历时40余天。但是,众所周知,我的开发是很断续的,平均下来每天投入的时间不会超过1个小时,所以这次改版的总耗时不超过40小时,也就是常规工作时间下一周的工作量——加班的话也就3天左右。

Continue reading

在Symfony 2中获取WordPress信息

在我正在进行的任氏有无轩改版中,我希望在首页获得我的博客的一些信息,比如最新发布的五个帖子。

我使用的博客后台是Wordpress,它提供了很好的编程接口,可以轻松地完成这个任务。而且Wordpress也提供了这些编程接口的说明。

WordPress对博客信息的操作是通过所谓的XML-RPC实现的,其官方文档见此处。它也提供了诸如MetaWeblog API接口和其它格式的API接口。经过比较后,我还是选择使用MetaWeblog API接口,主要是因为它调用相对更加简单,返回值虽然不完整,但是够用也很精练。

获取最新的若干(缺省为4)篇帖子的代码如下:

private function getRecentPostsFromWP($num=4)
    {
        require_once 'wordpress/wp-includes/class-IXR.php';
        
        $user='user';
        $pwd='password';
        $xmlclient='http://www.rsywx.net/wordpress/xmlrpc.php';
        
        $client=new \IXR_Client($xmlclient);
        $params=array(0, $user, $pwd, $num);
        $client->query('metaWeblog.getRecentPosts', $params);
        
        $posts=$client->getResponse();
       
        return $posts;
    }

这个函数以数组形式返回最新的几个帖子,在Twig中可以进一步使用诸如:

{{rp.title}}
{{rp.dateCreated.year}}年{{rp.dateCreated.month}}月{{rp.dateCreated.day}}日
{{rp.description|striptags|truncate(120)}}

等方式获取相关信息并展示。

有兴趣的读者可以进一步参阅API说明,挖掘Wordpress更多的功能,并应用到自己的站点中。

Symfony 2中Twig模板的两个小技巧

今天抓紧时间又更新了一下任氏有无轩的首页的改造。在我已经获得了我的博客的若干最新帖子的前提下,我需要在首页上显示其中的几个。

我要解决两个问题:

  1. 对帖子的内容进行过滤。
  2. 对过于长的帖子内容进行截断。

由于Twig引擎在渲染HTML的内容时,缺省会将其作为<pre>文本输出,因此所有HTML/CSS效果都会丢失。这是可以接受的,但是问题在于,在这一过程中所有的HTML标记(如<p>,<img>等)也会按照转义输出,这样一来我们的输出中文字就会非常凌乱,不利于阅读。

我要达到的是下面的效果:

Ashampoo_Snap_2014.04.13_12h33m30s_002_任氏有无轩 - 藏书-读书-博客-维客-资源 - Mozilla Firefox

也就是说,只输出文本,对于其中可能出现的HTML标记被剥离并不是太大的问题。

这可以通过如下的输出控制实现:

rp.description|striptags

接下来,要对这样输出的文字进行截断。Twig提供了一个truncate过滤器,但是要使用它需要进行一些设置。

修改app/config.yml并增加如下代码:

services:
    twig.extension.text:
        class: Twig_Extensions_Extension_Text
        tags:
            - { name: twig.extension}

然后对刚才输出的文字继续套用truncate:

rp.description|striptags|truncate(120)

就可以得到图片中的效果了。

本文收录于[go4pro.org]

PHP-CPP编写PHP扩展

(原文发布于2014年3月26日和4月5日,原文链接Getting Started with PHP Extension Development via PHP-CPP,以及PHP Extension Development with PHP-CPP: Object Oriented Code

本文收录于[go4pro.org]

=====

这两篇文章利用http://php-cpp.com/提供的PHP-CPP作为基础,讨论了利用C++(严格说是PHP-CPP)编写PHP扩展的方法,讨论了最基础的东西以及一个类(复数类)的基本实现。

To whom it may concern and help

Running Press Book Publishers
2300 Chestnut Street
Philadelphia, Pennsylvania 19103-4317

To Whom It May Concern And Help,

I have bought your book God Created Integers (ISBN: 978-0-7624-3272-1) and finished reading.

I will be very much honored if I can translate this book into Chinese. There is one local publisher who is also very much willing to proceed once it gets the clearance on the copyright.

So far, the publisher has contacted your local representative in Beijing but no feedback yet.

This means no complaint to the representative but we would like to see a quicker movement on this.

Yours,

Taylor Ren

G+上一道蒙了好多人的题目

今天在G+上看到这么一题,如下:

bbd369f3-74cb-4eb5-8baf-7fe4138dcc3e

我的答案是:无解。这道题本身就是一个悖论。理由如下:

首先,必须假定四个答案中有一个是对的。那么随机选择到该答案的概率是25%,但是答案中出现了两个25%的选项,所以将选对的概率增加到了50%。

于是,就会将A/D两个答案排除,而只有B答案正确。这么一来,又只有25%的概率选对。

因此,说是25%的会提升概率到50%,而说50%吧,又将概率降低到25%。

显然是一个悖论。

你不能将这两种情形叠加考虑,因为这是两种完全矛盾的情形,这不是概率中的独立情形。

Symfony 2中的功能测试

(原文发布于2014年3月4日,原文链接Functional Testing in Symfony 2

本文收录于[go4pro.org]

=====

基于《Symfony 2中的批量数据生成》,我们可以对页面进行有控制的功能测试。所谓“有控制”,意为在测试数据是受控产生的前提下,假定程序逻辑没有问题,那么结果应该是如我们所预期的那样受控。否则程序一定有问题。

是的,因为真正的生活是在远方