yichao firstname, zeaster nickname, zhang lastname

wordpress中引号转义的问题

昨天发贴说解决了wp中中文乱码的问题,但是马上又发现帖子中的代码:
$this->query("SET NAMES 'utf8'");
代码中的引号在mysql数据库中存的都没问题,但用wp显示出来就变成全角的了。
google后知道这是wp-includes\functions-formatting.php 中的 wptexturize() 函数在搞鬼
解决办法:
1 使用 sparanoidquotmarks-replacer 解决.(我最后就用这招了)
2 把wptexturize中转义的那几行代码注释掉
3 见下面wordpress官方论坛中给的2个插件

下面内容来自worpdress官方论坛
Quotation Mark/Apostrophe Switch
引号 分号 转义

http://wordpress.org/support/topic/32803?replies=3
Q:
Hello, I use Verdana font for my website and I noticed when I submit a post or page or even a comment it replaces my quotation marks and apostrophes with different ones. The new ones tend to be curved and run into my text. Any ideas?
A:
It's part of the formatting features in WordPress (what's known as the wptexturize function). You can turn this off by commenting out any of the add_filter lines in wp-includes/default-filters.php that use wptexturize, or by editing the function in wp-includes/functions-formatting.php.
Another, fancier option is to use a plugin to control text formatting:
http://dev.wp-plugins.org/wiki/TextControl
http://www.vapourtrails.ca/wp-preformatted

成功解决wordpress备份时的中文乱码问题

前天心中正美着wordpress可以备份mysql数据,但不幸的是一试才知道中文是乱码,无法备份成功。

现在找到解决办法:

1备份已有数据到sql文件中,所有DEFAULT CHARSET=latin1 改为 DEFAULT CHARSET=utf8。collation选为utf8_unicode_ci。

2修改wp-includes/wp-db.php文件,在$this->dbh = @mysql_connect($dbhost, $dbuser, $dbpassword);后添加$this->query("SET NAMES 'utf8'");


注意事项:

1 使用editplus修改上述文件,UltraEdit不行

2 mysql的版本是4.1.*

3 apahce的版本是2.0.*

4 php的版本是5.2.*


参考文献:

1 kaoart

2 yanfeng


第一个my wordpress,发帖纪念

这段日子也写了些blog,但都是放在别人的网站上,如bloggerblog.edu.cn。前一阵发生过blogger,blog.edu.cn服务中断的事儿,想想也后怕,把心得,感悟啥的放到了随时有可能自己访问不到的地方,太没安全感了,哈:)
为此,建了这个基于wordpress的blog,这里的文章都放到byethost提供的mysql数据库里了,并且我可以随时对该数据库进行备份。确保不会丢失。
另外wordpress也提供了诸多实用的feature :)

Hello world!

Welcome to WordPress. This is your first post. Edit or delete it, then start blogging!
欢迎!中文没乱码了

还是搬回去了

据李同学说blogspot近期解禁的可能性很小了,唉!
so move back to http://yichao.blog.edu.cn now.

经常使用windows xp休眠以及移动硬盘的同学请注意了

如果按如下操作,windows xp会出问题
1 使用移动硬盘
2 xp系统休眠
3 拔走移动硬盘
4 在其他机器上, copy 文件A到移动硬盘上
5 把移动硬盘重新插回原来xp系统上
6 重新启动原来xp系统
7 拷贝文件B到移动硬盘上
8 重启机器

你会发现文件A,B都没有了!

解决办法:
chkdsk h:/f 修复你的移动硬盘,如果文件没被覆盖,还是可以恢复的

原因:
休眠xp前,移动硬盘的分区表cache在内存中了,休眠后它只能恢复cache,不知道它休眠期间,你对移动硬盘做了什么. xp没有重读移动硬盘分区表.

Oct 3-4云蒙山至云蒙峡穿越总结

1 出行前准备
根据前人的GPS数据,整理成了Google Earth图像
坐标数据保存为kml文件,放在此处,有需要者欢迎下载
这是Google Earth的截图:
全景图1

全景图2


前3个点的图

其他个点的图请见:
http://lh4.google.com/yichao.zhang/RSTVcmmtABI/AAAAAAAAAB4/kyzlAPQVkbQ/4.JPG
http://lh4.google.com/yichao.zhang/RSTVdwqcABI/AAAAAAAAACI/d4d7ZSnBUY8/all2.JPG
http://lh6.google.com/yichao.zhang/RSTVecdYABI/AAAAAAAAACQ/x_ZHQRuA0bo/1-8.JPG
http://lh4.google.com/yichao.zhang/RSTVe7ucABI/AAAAAAAAACY/P-i4obunSJo/8-26.JPG
http://lh3.google.com/yichao.zhang/RSTVfCIeABI/AAAAAAAAACg/NaI89AVV_6I/8-34.JPG
http://lh3.google.com/yichao.zhang/RSTVh_hDABI/AAAAAAAAACo/GH3xmsmaTwE/15-42.JPG
http://lh3.google.com/yichao.zhang/RSTViv1QABI/AAAAAAAAACw/DaNvvvaV3RI/42-48.JPG
http://lh6.google.com/yichao.zhang/RSTVjKs5ABI/AAAAAAAAAC4/sS-ec1bU7tI/41-52.JPG

前人画的图
http://lh5.google.com/yichao.zhang/RSTVbHZgABI/AAAAAAAAABg/iPSvYZonObg/qzhen_ym_2004_5_5.jpg

Google Earth真的很棒,我都想为google黑板报写个帖子了。

2 穿越结果
没走对路,最后撤回来了。
第一次进山最大感受:山路太容易迷了。原因总结了一下:
a b
\/

c
迷路主要是由于发现走错路后,无法沿原路退回造成的。
假设我从a->c,前进时从a很容易就发现c,并走上c这条路,此时甚至不知道还有b路。
当在c路上发现是条错路时返回到岔路,很有可能会发现b路比a路更明显,从而走b,进而迷路了:)
总之我探路时,因为这个原因迷了好几次。
解决的办法:前进时,如果转向,必须要回头观察,如果有b路,必须要做好标记。


本次穿越的第一次:
第一次搭帐篷,原来很简单
第一次在国道旁,小溪旁,山下睡觉,最原始的生活
第一次2人帐篷睡了4个人,哈

2006年10.3云蒙山穿越Trek准备清单Checklist

车头灯
手电筒
军训背带
租绳
塑料袋
雨披
小铁锹

剪子
望远镜
基本药品 创可贴
食品 花生酱、巧克力,压缩饼干
水 男生至少5升,女生至少3升
pda充好电
手套
登山杖
凉鞋
擦汗毛巾
女士带防晒用品,遮阳伞
仿瑞士刀
扑克
火机 火柴
镜子
报纸若干

早7:30在东直门长途客车站集结,坐936到云蒙山公园
沿111国道步行2km到后山铺,开始穿越之旅



没有GPS设备,但可以利用GPS数据
实现GPS数据程序:
输入 点a,N40.60247 E116.78447和点b,N40.60525 E116.77914的坐标信息
输出 b对于a的角度,例如北偏西25度;以及a,b间长度
网上有人说如果不考虑地球的扁平率误差会很大
不过找到了这个网址:
http://www.movable-type.co.uk/scripts/LatLong.html
用这个网页测了
02 N40.60525 E116.77914 途中的岔路,走左边
03 N40.60556 E116.77136 308m 水坝,前方是水泉峪(废墟)
02,02点间距离=0.6577 km
用Google Earth测的距离是0.66 km
看来这个网页还是可以用的,我已经当下来存到手机里了
这样依靠GPS数据,就可以确定下一个点在什么方位,在多少米距离上,迷路以及走弯路的可能就少了

编写一个函数,作用是把一个char组成的字符串循环右移n个

例如,"abcdef"循环右移2个就变为"efabcd"

popo实现了一个,不过需要O(n)的额外空间
程序:
void LoopMove(char * pStr,int steps)
{
int len = strlen(pStr);
char *s = new char[len+1];
int count = 0;
char *temp = pStr;
while (*pStr)
{
s[(count+steps)%len] = *pStr;
pStr++;
count++;
}
s[len] = '\0';
strcpy(temp,s);
delete []s;
}


最近想出了个空间为O(1),时间为O(n)的算法
就是只通过数组指针移动和交换来实现

int LoopMove2(char *p, int i, int t, int s, int m){
int n = strlen(p);
int j = (i+m)%n;
if(t == j) return 0;
p[s] = p[j];
p[j] = p[t];
LoopMove2(p, j, s, t,m);
}

使用方法是
如果要右移2位就调用
LoopMove2(p,0,0,-1,2);

基本思想是:
如果数组X有n个元素,要右移m个位置
申请一个临时变量,设它为数组上的X[-1]
对于数组中的Xi,要把它一次性移到它的最终位置,这个位置是j=(i+m)%n,那么首先把Xj移到X[-1],然后把X[i]移到X[j],接下来一次性移动Xj到它的最终位置(j+m)%n,此时临时变量为X[i],要移动的元素是Xj,并且Xj的值在X[-1]位置上。
由此定义LoopMove2函数,它参数的含义是
i:此步要移动的元素Xi
t:当前元素Xi的值在数组上的位置
s:临时变量在数组上的位置
m:右移的位数

最终移动的终止条件是:
当前元素Xi的值在数组上的位置==Xi要移向的最终位置

这个程序中使用了数组的-1处作为临时变量的位置,主要是想把程序写得简单些
当然这样会带来一些问题,但作为说明性的例子就暂不考虑了。
gmail id: yichao.zhang
欢迎和各位讨论算法