• 2009-06-25

    单独编译一个PHP模块

    Views: 16510 | No Comments

    以libcurl为例. 执行:

    cd 源码目录/ext/curl
    执行 PHP安装目录/bin/phpize
    ./configure --with-php-config=PHP安装目录/bin/php-config
    make
    

    得到 ./modules/curl.so
    拷贝到 PHP 的模块目录
    修改 php.ini

    extension_dir = ".so文件的路径"
    extension=curl.so
    

    重启 Apache

    注意: 如果有其它版本的 /usr/local/bin/php-config 存在, 会导致编译出错. 因为这是其它版本的的环境配置, configure时会用到. 不知道怎么让configure不使用, 只能把这个文件移到别处, 编译完后再弄回来.

    Posted by ideawu at 2009-06-25 11:56:46
  • 2009-05-27

    在Eclipse中生成英文框架的Javadoc

    Views: 26674 | No Comments

    虽然我写中文注释, 但我不喜欢Javadoc的框架是中文(比如显示"类"而不是"Class"). Javadoc有几个有用的选项:

    -locale <名称> 要使用的语言环境,例如 en_US 或 en_US_WIN(可以决定生成的框架是否是英文)
    -charset 用于跨平台查看生成的文档的字符集。(决定HTML源码中声明字符集的标签内容)
    -encoding <名称> 源文件编码名称(决定javadoc把Java源码文件当做何种字符集)
    -docencoding 输出编码名称(决定生成的HTML文档的字符集)

    不过, Eclipse中不支持-locale选项, 会提示出错"选项 -locale 必须为第一个选项。", 因为Eclipse在这些自定义的参数之前还加上了其它的参数, 你又不能改变这一点. 还好, 可以利用vm的参数:

    -J-Duser.language=en_US

    而Extra Javadoc options:

    -encoding UTF-8
    -charset UTF-8
    -docencoding UTF-8

    Posted by ideawu at 2009-05-27 11:29:50
  • 2009-05-03

    使用i_am_not_spam WordPress插件

    Views: 32814 | 9 Comments

    虽然akismet识别垃圾评论的准确率很高, 但对于我来说, 每天看到垃圾评论队列里有那么多垃圾评论, 还是很不爽. 眼不见为净. 于是自己写了个Wordpress插件, 直接丢弃垃圾评论.

    WordPress只有comment_post, 但没有pre_comment_post事件, 在评论被保存之前触发. 我只好自己加上了. 所以修改了wp-comments-post.php文件.

    // 就是这一行, ideawu.net
    do_action('pre_comment_post', $commentdata);
    
    $comment_id = wp_new_comment( $commentdata );
    
    $comment = get_comment($comment_id);
    

    插件很简单, 就是利用comment_post事件加入一个隐藏字段, 该字段的值通过客户端JavaScript代码来设置. 提交后和服务器端的值比较, 如果不相同, 说明用户未开启JavaScript, 被认为是垃圾评论. 评论机器人一般不会支持JavaScript.

    有需要的朋友给我留言, 我发给你. 欢迎有心的朋友按第一条评论的格式回复进行测试!

    Posted by ideawu at 2009-05-03 20:54:28 Tags: ,
  • 2009-04-30

    博客迁移到WordPress, 欢迎订阅

    Views: 14555 | 2 Comments

    从第一次想法到现在好几年, 今天终于把博客迁移到Wordpress上, 欢迎订阅. 近4年来不使用Wordpress, 而是使用自己写的博客程序, 原来有几个: 1. 自己写的程序更快. 2. 自己写的程序用起来更顺手.

    因为自己比较熟悉PHP+MySQL, 所以数据迁移很顺利, 原来ideablog中的文章, 评论和留言都迁移过来了, 没有丢失. 而且通过简单的文本替换, 适应了Wordpress的文章显示格式, 保持了原有的文章格式. 当然会有部分格式有问题, 但还未发现.

    新博客刚上线没几分钟, 就收到垃圾评论(spam). 还不如我的ideablog, 只用简单的客户端JavaScript代码就可以实现防垃圾评论, 因为spam机器人不会去执行javascript.

    欢迎订阅RSS.

    Posted by ideawu at 2009-04-30 20:10:14 Tags:
  • 2009-04-02

    非常反感那些以时间长度来标记时间的垃圾做法

    Views: 21729 | No Comments

    有一种垃圾经常做的一种垃圾做法, 就是用距离现在的时间长度来标记时间, 比如两天前, 1小时前, 10分钟前. 我想说: 这么做的垃圾都见鬼去吧! 你一会给我一个精度是天的时间, 一会给我一个精度是小时的时间, 一会又给我一个精度是分钟的时间, 你SB啊!

    两天多1分钟也是两天, 两天前多12小时也是两天, SB才会认为这两个时间是相同的. 都差了半天. 还有些SB认为两天多23小时也是相同的!

    如果你认为时间精度到天就够了, 那就给出精确到天的时间, 别一会S, 一会B.

    Posted by ideawu at 2009-04-02 11:50:17
  • 2009-03-12

    WordPress分页代码

    Views: 23598 | 2 Comments

    将下面的函数放到你的主题的 functions.php 文件中:

    function theme_echo_pagenavi(){
        global $wp_query;
        global $request, $posts_per_page, $wpdb, $paged;
        $maxButtonCount = 9; //显示的最多链接数目
    
        $current_page = $paged;
    
        $current_page = $paged;
        if(empty($current_page)) {
            $current_page = 1;
        }
    
        $numposts = $wp_query->found_posts;
        $max_page = $wp_query->max_num_pages;
    
        $start = max(1, $current_page - intval($maxButtonCount/2));
        $end = min($start + $maxButtonCount - 1, $max_page);
        $start = max(1, $end - $maxButtonCount + 1);
    
        if($current_page <= 1){
            echo "<span>|<</span>";
            echo "<span><<</span>";
        }else{
            echo '<a href="'.get_pagenum_link().'"><span>|<</span></a>';
            echo '<a href="'.get_pagenum_link($current_page-1).'"><span><<</span></a>';
        }
        for($i=$start; $i<=$end; $i++){
            if($i == $current_page) {
                echo "<span class=\"page_num on\">$i</span>";
            } else {
                echo '<a href="'.get_pagenum_link($i).'"><span class="page_num">'.$i.'</span></a>';
            }
        }
        if($current_page >= $max_page){
            echo "<span>>></span>";
            echo "<span>>|</span> ";
        }else{
            echo '<a href="'.get_pagenum_link($current_page+1).'"><span>>></span></a>';
            echo '<a href="'.get_pagenum_link($max_page).'"><span>>|</span></a>';
        }
    
        echo " {$current_page}/{$max_page}页, {$numposts}条记录.";
    }
    

    在主题的 index.php 文件中这样引用:

    <?php theme_echo_pagenavi(); ?>
    
    Posted by ideawu at 2009-03-12 14:47:01 Tags:
|<<<121314151617181920>>>| 16/28 Pages, 163 Results.