基本思路就是向数据库发送 SQL “SET NAMES UTF8″,可根据不同的情况来编写代码。
如:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| < ?php
$params = array (
'host' => '127.0.0.1',
'username' => 'verdana',
'password' => '******',
'dbname' => 'phpvim'
);
try {
$db = Zend_Db::factory('PDO_MYSQL', $params);
$db->query("SET NAMES UTF8");
Zend_Db_Table_Abstract::setDefaultAdapter($db);
} catch (Exception $e) {
exit($e->getMessage());
}
Zend_Registry::set('dbAdapter', $db);
/* vim: set expandtab tabstop=4 shiftwidth=4: */
?> |
这是早期的解决方法,其实并不推荐这么做,因为并不是所有页面都需要 SQL 查询,上述代码放在 bootstrap 中,在不需要 SQL 连接的页面中也会开启一次数据库连接并发送 SET NAMES UTF8 ,这就浪费了资源。
Read more…
Zend_Filter_Input 可以用来获得安全可靠的用户数据,简单的来说这个类就像一个黑盒,原始数据输入后,经过过滤器过滤,然后再由校验器校验,若通过了原先设定的过滤及校验规则,则最后输出可用的数据,否则给出详细的错误报告。
为了数据安全,比如转义一些特定字符,默认情况下 Zend_Filter_Input 会使用 HtmlEntities Filter 过滤所有的数据,然而不幸的是,这个 HtmlEntities 使用默认编码 ISO-8859-1,如果是中文等多字节语种,那么最后数据就会出现乱码,面目全非。
最近我在自己的项目中就遇到这个问题,其实解决方法很多,多写几行代码而已,但是因为乱码的问题由来已久,而且造成乱码的原因也非常多,找不到问题所在,那就恼火的很了,这里简单总结了一下。
Read more…
以前在使用 xdebug 的时候,偶有崩溃现象,但并不是太频繁,但是自从换用 Apache2.2 以后,Apache 崩溃的频率大幅增加,换用了不同的 PHP 和 xdebug 的版本都是一样,不停的崩溃,正常的开发根本无法保证。
后来无意中发现是 php5apache2_2.dll 的问题,因为我一直使用 module 模式安装 PHP5,所以不管 PHP5 和 xdebug 换到什么版本,都没有意义,昨天将 php5 换到 CGI 模式后,配合 xdebug 一直使用到现在,Apache2 再也没有崩溃过。
关于爱情,刚看到一段话,觉得很喜欢,不过是女性角度来看的,稍微改动了一下:
爱是这种感觉:觉得她并不是最漂亮的但是正合适自己,就像一枚硬币的两面,等了几十年终于合璧再也不想分开;爱是越看她越发现原来自己真的是太聪明了:这样的宝贝都让我寻到,一定要存上几万年;爱是一想到她只因为你就在某个固定时间做某个固定的事情,哪怕她不看你一眼,不说一句话,也可以信服的足以吃下一顿哪怕再难吃的盖浇饭;爱就是最甜蜜的话从自己嘴里说出来也不觉得自己矫情,如果她在你面前一定要抱在怀里用一手抓她胳膊一手掐自己大腿才觉得踏实。可契合严丝合缝的,不是爱情,是水泥。做梦吧,趁没结婚,多梦几回也好。
新的一年就要到了,在这个团聚的日子里,异国他乡的你,是不是和我一样,一个人静静的坐在电脑前?
没有亲人的陪伴,这个原本让人欢乐的节日,我们守候的却只有孤单。
当外面的天空烟花烂漫的时候,心中的那片烟花怎么也不能燃起。
我们的心在哪?
也不知道从什么时候开始我们的春节变的如此寂寞。
春节寂寞,节日中的我们更寂寞了。
大约一年前陪着朋友买的这个鼠标——罗技 G5 2007 版,不过最近却出现了问题,鼠标滚轮仿佛焊死了一样,极难滚动,有的时候却又是好的,但如此反反复复特折磨人,对于我这样经常使用滚轮翻页的人来说,尤其如此。
这两天问题尤为严重,一怒之下,把鼠标大卸八块,仔细研究了一番,结果一无所获,只好重新装配起来,现在滚轮貌似好一些了,可是手感却变得极差,好像10块钱的双飞燕… 我顶你个肺啊!窝着一肚子火上淘宝去拍了个G5的新滚轮,希望拿回来装好后能恢复如初。
PS: 新买的滚轮,还是没有用上,后来发现拆卸后,滚轮手感巨差的原因是忘记上弹簧了 -,- 重新装回去以后,滚轮一点问题都没有了。
由于某些原因,我需要在 WP 插件页面自定义 Locale,使插件的页面能够以用户选择的语言呈现,并且不影响 WordPress 的整体 Locale。
我们知道插件通过 API load_plugin_textdomain() 载入 Gettext mo 文件实现国际化,那么我们只要在载入 mo 之前 hook WordPress Locale 不就可以了?
粗略看了一下源码,发现其实很简单,WP 的 Locale 保存在全局变量 $locale 中,那么劫持它就好了。
以下是 fanfou-tools 的部分实现代码,非常简单:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
| // {{{ fanfou_init
/**
* fanfou_init
*
* @access public
* @return void
*/
function fanfou_init() {
global $wpdb, $fanfou;
$wpdb->fanfou = $wpdb->prefix . 'fanfou';
if (isset($_GET['activate']) and $_GET['activate'] == 'true') {
$fanfou->install_table();
$fanfou->install_options();
}
$fanfou->get_settings();
if (($fanfou->last_download + $fanfou->download_interval) < time()) {
add_action('shutdown', 'fanfou_update_posts');
}
if (is_admin()) {
wp_enqueue_script('prototype');
}
// Using our own locale
$custom_locale = get_option('fanfou_locale');
if (!$custom_locale or $custom_locale == 'default') {
$custom_locale = WPLANG;
}
$GLOBALS['locale'] = $custom_locale;
load_plugin_textdomain('fanfou-tools', 'wp-content/plugins/fanfou-tools');
}
add_action('init', 'fanfou_init');
// }}} |
换上了新的模板 Devart,由设计师deniartru制作,它采用了DeviantART的设计风格,如果喜欢这款模板,可以再 DeviantART 上下载。
http://deniartru.deviantart.com

Ubuntu 下的播放器有很多,系统默认的是 Totem,而貌似更多人都喜欢 mplayer。
首先可以卸载 Totem,如果你不喜欢系统中同时存在两个播放器的话,这一步可以使用 apt 或者 synaptic 轻松搞定。
安装 mplayer:
sudo apt-get install mplayer mplayer-fonts mplayer-skin mozilla-mplayer
然后登录 mplayer 官方网站,进入下载页面: http://www.mplayerhq.hu/design7/dload.html
下载解码器(Binary Codec Packages),由于我是安装的 64 位系统,所以选择了 64 位解码器(Linux AMD64 20071007)。
解压后,释放到 /usr/lib/codecs 目录中,指令如下:
sudo mkdir /usr/lib/codecs
tar jxvf essential-amd64-20071007.tar.bz2
sudo cp essential-amd64-20071007/* /usr/lib/codecs
做完这两步以后,mplayer 应该就可以正常播放 rmvb 文件了,但是打开 rmvb 文件后,我得到了如下的错误:
[VO_XV] It seems there is no Xvideo support for your video card available.
[VO_XV] Run 'xvinfo' to verify its Xv support and read
[VO_XV] DOCS/HTML/en/video.html#xv!
[VO_XV] See 'mplayer -vo help' for other (non-xv) video out drivers.
[VO_XV] Try -vo x11.
Error opening/initializing the selected video_out (-vo) device.
使用 gedit 或者 vim 打开配置文件,修改一下视频驱动:
sudo vim /etc/mplayer/mplayer.conf
将 vo=xv 修改为 vo=x11,保存退出。
然后启动 mplayer 后,打开 Preference -> Video,选择 X11 (XImage/Shm),保存,重启 mplayer。
OK,这样不论是 Terminal 中命令行启动,还是 File Browser 中双击 rmvb 文件,都可以正常播放 rmvb 了。
其它一些设置可以参考 http://wiki.ubuntu.org.cn
由于工作需要,经常要从 Windows 主机访问远程的 Ubuntu 服务器,每次输入账号和老长的密码,感觉很麻烦,于是参考网上的教程简单的设置了一下就能自动登陆远程主机了,非常的方便。
虽然 Putty 也提供了 puttygen.exe 生成公/密钥,但是和 Linux 主机生成的 KEY 格式不同,需要手工修改格式,所以采用 Linux 主机自己生成 KEY 的方式。
首先登陆到 Linux 主机,具体过程如下:
1. 生成公钥和密钥
verdana@hostname:~$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/verdana/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/verdana/.ssh/id_rsa.
Your public key has been saved in /home/verdana/.ssh/id_rsa.pub.
The key fingerprint is:
51:51:da:44:28:b5:83:de:d2:1e:60:4f:81:c9:f1:1a verdana@hostname.com
注意 passphrase 留空。
2. 将公钥内容追加到 authorized_keys
# 若 authorized_keys 已经存在,则跳过 touch 创建文件这一步
verdana@hostname:~/.ssh$ touch authorized_keys
verdana@hostname:~/.ssh$ cat id_rsa.pub >> authorized_keys
3. 下载密钥并转换为 Putty 可识别的格式
Putty 无法识别 Linux 主机生成的的密钥,所以需要用 puttygen.exe 转换一下。
a) 使用 FTP 软件或者其它方式将生成的密钥 id_rsa 拷贝到客户端主机,这里我的客户端是 Vista 系统
b) 打开puttygen.exe,点击菜单上的:转换->导入密钥->保存密钥(如:id_rsa.ppk),密钥即转换完成,这里不设置密码保护
4. 设置 Putty
打开 Putty
a) 会话,主机名称填入:user@remote-host,user 是你的 Linux 主机登陆名称,remote-host 是 IP 或者远程主机域名,比如: root@phpvim.net。
b) 连接->SSH->认证->浏览,选择刚才转换后的密钥(id_rsa.ppk),之后保存会话即可。
5. 使用 Cygwin?
如果使用的 Cygwin 的 ssh 登录远端服务器的话,只需要把第3步生成的密钥 id_rsa (无需任何转换)拷贝至 Cygwin 用户的 .ssh 目录即可。