“web”目录存档

window live writer wordpress出错

2010年03月19日,星期五

当出现下面的问题时:

The response to the metaWeblog.getRecentPosts method received from the blog server was invalid:

Invalid response document returned from XmlRpc server

可以用下面的方法解决:

因为wordpress本身的一个bug,在utf-8编码下,在wp-includes文件夹下, xml-rpc返回的格式不正确,缺了三个字节,要修正这个问题,按如下操作即可:
用一个文本编辑工具打开class.ixr.php,查找:
$length = strlen($xml);

替换为:<!–more –>

$length = strlen($xml)+3;

就可以解决这个问题了!

ruby版本的discuz自动注册机

2009年12月29日,星期二

概要:
为了让别人以为你discuz网站的注册用户比较多,你可能需要注册大量虚假用户来伪造discuz网站的人气,如果手动地注册,那效率肯定会很低,势必需要一个工具来帮我们自动化地完成这个工作,本人就用ruby写了这样一个自动为discuz注册用户的工具.
(全文…)

ruby watir安装

2009年12月26日,星期六

照官方网站上说的安装[http://watir.com/installation/#win],老是在运行

gem update --system
gem install watir

的时候出错,错误如下:

C:\ruby\bin>gem update –system
Updating RubyGems…
Attempting remote update of rubygems-update
Install required dependency builder? [Yn]  Y
ERROR:  While executing gem … (Gem::GemNotFoundException)
    Could not find builder (>= 0) in any repository
(全文…)

discuz Access denied

2009年11月23日,星期一

由于在把PHP 版本的discuz从7.0升级到7.2中忘记了备份config.inc.php而直接覆盖掉了原来的,升级完了之后出现了Access denied的问题,经过查找,发现了解决方法:

把ucenter目录的下的config.php里的UC_XXX配置部分复制到config.inc.php里,然后刷新就可以了。

原因可能是UC配置部分是程序在安装的时候自动生成的,但我却用最原始的配置文件覆盖了。

我复制内容如下:

//应用的UCenter配置信息(可以到UCenter后台->应用管理->查看本应用->复制里面对应的配置信息进行替换)
define(‘UC_CONNECT’, ‘mysql’); // 连接 UCenter 的方式: mysql/NULL, 默认为空时为 fscoketopen(), mysql 是直接连接的数据库, 为了效率, 建议采用 mysql
define(‘UC_DBHOST’, ‘localhost’); // UCenter 数据库主机
define(‘UC_DBUSER’, xxx); // UCenter 数据库用户名
define(‘UC_DBPW’, xxx); // UCenter 数据库密码
define(‘UC_DBNAME’, xx); // UCenter 数据库名称
define(‘UC_DBCHARSET’, ‘gbk’); // UCenter 数据库字符集
define(‘UC_DBTABLEPRE’, ‘`xxx`.uc_’); // UCenter 数据库表前缀
define(‘UC_DBCONNECT’, ’0′); // UCenter 数据库持久连接 0=关闭, 1=打开
define(‘UC_KEY’, xxxxxxxxxxxxxxxxxxxxx); // 与 UCenter 的通信密钥, 要与 UCenter 保持一致
define(‘UC_API’, http://www.iq-works.cn // UCenter 的 URL 地址, 在调用头像时依赖此常量
define(‘UC_CHARSET’, ‘gbk’); // UCenter 的字符集
define(‘UC_IP’, xx.xx.xx.xx); // UCenter 的 IP, 当 UC_CONNECT 为非 mysql 方式时, 并且当前应用服务器解析域名有问题时, 请设置此值
define(‘UC_APPID’, ’1′); // 当前应用的 ID
define(‘UC_PPP’, 20);

对cakephp的几点疑惑和误解

2009年09月1日,星期二

由于开始对cakephp还不是很熟悉,所以在学的时候,对cakephp有了些疑惑和误解,现在终于明白了,现在列举如下:

1. cakephp通过Elements对view实现了模块化,使得代码得到了更好的重用,而且Elements还支持cache功能,一开始我认为Element(view)只能通过controller assign变量来动态显示信息,如果这样的话,那cache功能就没用了,因为不管Element有没有cache存在,controller都有要取得数据,然后assign到Element(view)里,其实不是这样的,Element(view)还可以通过requestAction方法取得数据。它的使用方式是:

controller 代码:

// controllers/comments_controller.php
class CommentsController extends AppController {
    function latest() {
        return $this->Comment->find('all', array('order' => 'Comment.created DESC', 'limit' => 10));
    }
}
 
element 代码
 
// views/elements/latest_comments.ctp
 
$comments = $this->requestAction('/comments/latest');
foreach($comments as $comment) {
    echo $comment['Comment']['title'];
}
 
调用方式:
echo $this->element('latest_comments'); 
或支持cache方式
echo $this->element('latest_comments', array('cache'=>'+1 hour')); 
 

根据官方网站的说明,这种方式如果不使用cache的话,它的效率是很差的

2.     cakephp里的controller的继承结构是这样的:xxxController extends AppController extends Controller, Controller是cakephp框架的,AppController默认是空的类,它是让程序员来自由扩展的, xxxController是页面级别的控制逻辑的,但我一开始发现AppController的类文件app_controller.php在cake/libs/controller目录下,我想既然是让程序员自由扩展的,为什么还要放在cake的libs下呢, 那万一应用程序要升级cakephp的版本,如果没有备份的话,那岂不是把之前扩展的内容都给覆盖了啊,其实不是这样的,你需要做的是在/app/目录下建立一个app_controller.php文件就行了, 更简单的方式就是从/cake/libs/controller把app_controller.php复制到/app目录下, 然后在/app目录下的app_controller.php里进行相应的扩展, 这样的如果升级cakephp就不用担心被覆盖了。