显示标签为“网站建设”的博文。显示所有博文
显示标签为“网站建设”的博文。显示所有博文

2014年9月20日星期六

等了一个月终于给Godaddy的域名续费了

博客的info域名眼看就要过期了,赶紧上网找Godaddy的优惠码。这一找才知道Goddaddy几乎封了优惠码的功能,网上绝大部分流行的Goddaddy优惠码都不能用。我开始还不信,一两年前在Google随便一搜还能出来一大片可用的Goddaddy优惠码,想着诺大的网络,总会有漏网之鱼吧。

可是,我用肉身试了差不多一个月的结果是没能找到info续费的优惠码。找来找去试来试去,也乏了,不想再浪费精力做无用功了,于是无奈地没用优惠码续费了info域名。让我发现个小技巧是,购买页面的金额显示用USD而不是CNY的话,然后用支付宝支付可以省个几块钱,可能是Goddaddy和支付宝的汇率不一致吧。

记录一下续费域名花掉的血汗钱:
















ICANN Fees*

$0.18

Unit Price

$10.99



Total cost

$11.17

两年前用过优惠码还享受过7.99$的福利呢:















ICANN Fees*

$0.18

Unit Price

$7.99

Total cost

$8.17

不过现在的汇率比前些年高点,而且Godaddy的免费HOSTING用着很好、很稳定,为我省下了不少钱。

搞网站真是个烧钱的事儿,尤其是无名的小站长们。在这里向苦逼的站长致个敬。还有,别等了,赶紧续费去吧。

2014年6月21日星期六

建立数据库连接时出错、数据库恢复及删除重复行

昨天下午博客不能访问了,进入网站时提示“建立数据库连接时出错”。我博客的主机空间用的是Godaddy的免费HOST,一直以来用的都挺好的。

我赶紧登录phpmyadmin,没想到根本登录不进去,提示“#2013 - Lost connection to MySQL server at 'reading initial communication packet', system error: 111”。这下我就纳闷了,不知道是什么原因,难道phpmyadmin的密码与MySql的密码不一致(其实是一致的)?我特意去改了MySql的密码还是不行。我尝试去新建一个数据库,给它一个新的用户名和密码,没想到很容易就进入phpmyadmin了。看来我的原先的数据库真的出了问题。

phpmyadmin_error

打开Gmail邮箱发现Godaddy昨天给我发了一封邮件,通常Godaddy发过来的都是广告邮件,我都没有打开看过。昨天邮件的内容说All in One SEO Pack有重大的安全问题,让赶紧升级到最新的版本。我想这次博客数据库出现的问题应该就是All in One SEO Pack插件的影响的了。

Godaddy_mail

下面的工作就是恢复数据库了,原本很简单的事情折腾了好几个小时。数据库恢复的方法是通过phpmyadmin导入WordPress Database Backup插件备份的数据。导入的时候报错了,提示“1062 Duplicate entry '804' for key 'PRIMARY'”。打开数据库文件发现有两行804的记录一模一样,让我更震惊的是还有很多重复行的记录存在。也就是说WordPress Database Backup备份的数据库有问题,备份了好多重复的记录。

一条条删除肯定不现实,我试图寻找“删除重复行”的方法。网上流传广泛的就是Excel删除重复行的方案,我把数据复制到Excel时,提示复制的内容不全,好像是导入的数据超出了Excel行和列的限制。

后来发现大名鼎鼎的UtralEdit具有“排序删除重复行”的功能,可是,排序的话SQL的语句就全乱了。

最终的解决办法是,找到了另一款文本编辑器EmEditor,它能删除重复行,而且不排序。可是,它在删除重复行的同时,把数据库创建表的某些重复的语句也给删除了。幸好这些CREATE TABLE语句不是太多,我全都手工做了一遍就好了。

看着博客又活了过来,我喜悲交加,喜的是又见到了博客,悲的是再也不相信插件了。接着我整理了一下插件,把一些可有可无的插件都删除之,同时提醒自己以后要做好数据库的备份工作,我打算每个月手工导出一次数据库文件。

2014年5月1日星期四

博客月收入突破1美元

就在这个月,博客的Adsense收入刚好达到了1美元,one dollar啊,一年的话就有10美元了。差不多等十年就能唱着陈奕迅的《十年》去领百元美金了。可是,到时Google公司是否还在呢?

最近一段时间,因为有了熊仔,我和Jasmine都没有怎么写博客,我俩手机中都存了好些草稿。前几天却发现博客的流量不降反升,每天有七八十个人过来看。虽然这与之前设想的相差甚远,曾幻想着博客的访问人数以曲线形式上升,没想到增长曲线处处导数为0。

有人问,博客都没人看放个广告干什么。我只能回答他,小乐趣。偶尔看看收入,挺好的,管它赚了多少呢。

2014年3月12日星期三

博客留一手,WordPress导入文章到Blogger

我对网络世界的数据安全性和稳定性存怀疑态度,毕竟这些0、1数据看得见摸不着,指不定哪一天就灰飞烟灭了。

现在在写的博客的每一篇文章也是辛辛苦苦耗时耗力地一个字一个字码出来的,虽然写得不怎么样但也是心血之作,万一哪天没有了定会痛苦不已。所以在很久以前我就把文章保存在本地,可能在不久的将来会印成纸张。

以前有想过把博客的文章同步到新浪搜狐网易博客上,只是这些BSP都不支持WordPress文件导入的功能,虽然WordPress的插件大军中存在类似功能的插件,但是我用着很不舒服:影响正常发文,偶尔出错,而且占有CPU资源。我试图寻找一个通过RSS同步博客的方法,貌似人人和FaceBook提供。总觉得这些强社会关系社区和博客精神是相悖的,非要注册才能浏览,才能发言,而且把写作者绑在你的网站上。

于是我选择了Blogger作为博客的备份之选,它支持XML文件的导入导出,很是方便。如果某一天我的域名到期、服务器崩溃,在网络上至少还有一个存放梦想的地方。

WordPress导入文章到Blogger的步骤是(也就是个导出导入的过程):
1、 WordPress导出XML文件
2、 进行格式转换(或许你不需要这一步,但是我没做这一步的话下一步没法进行)
3、 Blogger导入XML文件

以后大概每半年会把博客的文章导入到Blogger里,有兴趣可以围观Blogger上的静风博客吧。

PS: Blogger提供自定义HTML的功能,还可以添加AdSense,自由度比较大,但我用起来还是感觉不方便。

2014年3月6日星期四

用HTTPS Everywhere插件解决Flickr图片不能显示问题

自从家里装了移动(铁通)的宽带以后,最让我蛋疼的是它把Flickr给作死了。我博客的图片全部采用外链自Flickr的形式,这下连自己上传外链图片都不能登录Flickr了。首先想到的解决办法是在HOST中添加IP,可是慢慢我发现获得的IP偶尔也会失效,图片依旧不能访问,原来是某些Flickr的整个farm服务器会屏蔽。这时我对自己当初选择外链图片的方式产生了动摇,想着把图片放在自己服务器空间上。

当初图片外链自Flickr也是无奈之举,博客建在免费服务器上,因为服务器不稳定需要到处搬家,这样只带着数据库数据跑比较方便,而且我们这个属于生活类博客,会有游记之类图片爆多的文章,外链图片不占用服务器空间存储。

外链有外链的好处,也有它的弊端,就是链接失效或者无法访问。图片本来就是个耗资源的大户,没有几家人情愿给你提供免费高效外链的图片服务,国内的类似服务吝啬的要死,选来选去选择了Flickr。

CMCC的网络环境下,虽然Flickr惨不忍睹,但是我发现HTTPS的图片显示却没有问题,但是Flickr的图片默认是没有HTTPS的,于是想找一个能让Flickr图片强制使用HTTPS的方法。然后就让我找到了HTTPS Everywhere这个Chrome插件。装上该插件以后,Flickr的图片又活了过来,再也不用笨手笨脚地去添加IP了,而且Flcikr的farm服务器也在不断增加,这样我总算可以在自己的电脑上使用Flickr了。

说实在的,在当下国内的网络环境,有HTTPS总比没有好,能用HTTPS就尽量用吧,虽然它会影响你丁点儿网速,但对你我来说必定是利大于弊的。

用HTTPS Everywhere插件解决Flickr图片不能显示问题

自从家里装了移动(铁通)的宽带以后,最让我蛋疼的是它把Flickr给作死了。我博客的图片全部采用外链自Flickr的形式,这下连自己上传外链图片都不能登录Flckr了。首先想到的解决办法是在HOST中添加IP,可是慢慢我发现获得的IP偶尔也会失效,图片依旧不能访问,原来是某个Flickr的整个farm服务器会挂掉。这时我对自己当初选择外链图片的方式产生了动摇,想着把图片放在自己服务器空间上。

当初图片外链自Flickr也是无奈之举,博客建在免费服务器上,因为服务器不稳定需要到处搬家,这样只带着数据库数据跑比较方便,而且我们这个属于生活类博客,会有游记之类图片爆多的文章,外链图片不占用服务器空间存储。

外链有外链的好处,也有它的弊端,就是链接失效或者无法访问。图片本来就是个耗资源的大户,没有几家人情愿给你提供免费高效外链的图片服务,国内的类似服务吝啬的要死,选来选去选择了Flickr。

CMCC的网络环境下,虽然Flickr惨不忍睹,但是我发现HTTPS的图片显示却没有问题,但是Flickr的图片默认是没有HTTPS的,于是想找一个能让Flickr图片强制使用HTTPS的方法。然后就让我找到了HTTPS Everywhere这个Chrome插件。装上该插件以后,Flickr的图片又活了过来,再也不用笨手笨脚地去添加IP了,而且Flcikr的farm服务器也在不断增加,这样我总算可以在自己的电脑上使用Flickr了。

说实在的,在当下国内的网络环境,有HTTPS总比没有好,能用HTTPS就尽量用吧,虽然它会影响你丁点儿网速,但对你我来说必定是利大于弊的。

2014年2月14日星期五

一个月收到谷歌广告PIN码

上个月15号我再次提交了Adsense的PIN码申请,今天下午下班前收到了Google的寄过来的邮件。邮件的包装很简单,就是一张纸对折一下,然后把四周粘贴住,外面写上收信人地址,里面有PIN码信息。外面的收信人地址用的是拼音,里面的信息却是中文。我就纳闷邮递员怎么能看懂呢,为什么收信人地址也用中文标记。猜测可能要经过美两国邮局中转,如果写中文人家老美看不懂。

进入Adsense输入PIN,博客的广告还是显示空白,没有理它,等回到家再打开博客,广告就显示出来了。看来输入PIN码之后广告恢复需要一段时间。

这件事给我的启示就是:1)因为谷歌的邮件采用平信的方式邮递,所以留的收信人地址一定要是可以收到平信的地址;2)最好不要留家庭地址,一般的小区邮递员不进去;3)如果第一次收不到PIN信件,修改收件地址再次提交申请;4)收件地址对PIN验证很重要。

2014年2月8日星期六

升级WordPress3.8小记

忍受了好几个月WordPress后台更新版本信息的干扰,今天终于把WordPress从3.6版本升级到3.8.1,中间跳过了好几个版本更新。

这次更新并不是一帆风顺的,做了不少的工作。

1、禁用自动保存、自动草稿、自动修订功能

到目前为止还没有出现禁用WordPress自动保存、自动草稿、自动修订功能的完美方法,每一次更新都需要修改WordPress根目录下的wp-admin/includes/post.php文件来实现文章ID连续,这也是我为什么不积极对WordPress进行更新的原因。

网络上出现了针对WordPress3.8的新方法,通过修改Theme对应的functions.php文件。具体实现步骤是找到functions.php文件,在“< ?php之后”或“?>”之前插入如下的代码:


function keep_id_continuous(){
global $wpdb;
$lastID = $wpdb->get_var("SELECT ID FROM $wpdb->posts WHERE post_status = 'publish' OR post_status = 'draft' OR post_status = 'private' OR ( post_status = 'inherit' AND post_type = 'attachment' ) ORDER BY ID DESC LIMIT 1");
$wpdb->query("DELETE FROM $wpdb->posts WHERE ( post_status = 'auto-draft' OR ( post_status = 'inherit' AND post_type = 'revision' ) ) AND ID > $lastID");
$lastID++;
$wpdb->query("ALTER TABLE $wpdb->posts AUTO_INCREMENT = $lastID");
}
// 将函数钩在新建文章、上传媒体和自定义菜单之前。
add_filter( 'load-post-new.php', 'keep_id_continuous' );
add_filter( 'load-media-new.php', 'keep_id_continuous' );
add_filter( 'load-nav-menus.php', 'keep_id_continuous' );
// 禁用自动保存,所以编辑长文章前请注意手动保存。
add_action( 'admin_print_scripts', create_function( '$a', "wp_deregister_script('autosave');" ) );
// 禁用修订版本
remove_action( 'pre_post_update' , 'wp_save_post_revision' );


2、弹出“blockui requires jquery v1.2.3 or later you are using v1.10.2”的对话框

原因是WordPress的某个插件的JS中使用了jQery.BlockUI的版本太旧,解决方法是逐个排查你所使用的插件,替换掉该插件JS中过久的jQery.BlockUI代码片段。我的问题出现在Quick Comments插件身上。
My plugin used a file called wf-an-jqery-plugins.js. Inside that file was a chunk of jQery.BlockUI code that said it was v2.39.

I went to the following link for the latest jQuery.BlockUI code (v2.64) and then just replaced the v2.39 code in that plugin file with the code from this link. Hey presto, it all works again:http://malsup.github.io/jquery.blockUI.js

3、wpdb::prepare() 报错

我的报错位置是博客最下面的footer的地方,报错的内容为“Warning: Missing argument 2 for wpdb::prepare(), called in footer.php on line 75 and defined in /www/wp-includes/wp-db.php on line 990”。

解决方法是找到prepare()函数出现的地方,为它增加一个内容为空的参数:在footer.php中找到
$wpdb->prepare('xxx')
 改为
$wpdb->prepare('xxx', '')


4、更新并精简了一些WordPress插件,可以查看我的WordPress插件列表

2014年1月15日星期三

谷歌广告不显示之PIN 码验证

当博客的谷歌广告(AdSense)收入突破10美元时,我还兴奋了一把,特撰文记录此事。我满怀激动地按着谷歌的要求“验证帐号”,等待“个人识别码(PIN码)”的信件到来。

以后每天下班路过楼下那破旧不堪的信箱时,总是撅着屁股往自家信箱扒着瞅一会儿。

这一等一个月过去了,心想人家的邮件是从大美寄过来的没那么快。再一等又一个月,心想可能邮件已经在大平洋的船上了。继续等了一个月,心想外国的信件国家管理的比较规范,或许已经到海关了。最后的一个月,差不多已经到邮局了,很快就到了吧。

前几天博客的谷歌广告不显示了,我首先想到的是Adblock Plus的功劳,它为我把守浏览器,给我一片纯净的上网环境,我并没有理会。又过了几天在死板的IE浏览器里看博客时,广告依旧没有显示,我想这就怪了,于是登录Google AdSense查看原因。刚进入AdSense的首页,就发现了一串红底白字挡在眼前:
由于您尚未验证 PIN 码和/或电话号码,您的网页上目前展示的是空白广告单元。有关详情,请查看付款记录页。

哦,原来博客不显示广告的原因是AdSense没有得到验证。可是我没有收到谷歌的PIN码的邮件啊,没法验证。

从Google搜索中寻找答案,原来在PIN码最初发放日期起4个月后如果仍未输入正确的PIN码,谷歌广告就不会正常显示了。这时我想到可能是之前填写的收件地址的问题,那个邮箱在小区内,邮递员很少进小区去投递,造成我根本没法收到PIN码邮件。

我在AdSense中修改了收款人地址,重新申请了PIN码,期待在不久的将来收到谷歌的邮件。

这几个月就让博客的广告保持空白的吧,反正一个月才半美元多点,对我几乎没什么损失。如果你的AdSense一个月几十几百美元的话,千万要注意谷歌的 PIN 码验证了。

2013年9月30日星期一

和文章ID连续说拜拜

WordPress最近连续升级了好几个版本,我都没更新。以前当WordPress有新版本更新我都会等一段时间再升级,一个原因是想等它稳定了再操作,还有一个原因是我每次升级WordPress之后都要手动更改代码使文章的ID连续,嫌麻烦。

随着写博客越来越久,对它的感情没有刚开始时的那么新鲜和爱护,每天花费好多时间在它上面。现在写博客没有了以往兴奋和激动,而是很坦然与平静。这时我突然生怕自己会像那些抛弃博客转身投怀微博的名博们。

说起文章ID连续,博客的文章链接(URL)从一开始采用的就是http://www.jingfeng.info/archives/%post_id%.html的格式,因为简单实用,再因为就是自己很懒。诚然,文章的URL最好的形式应该是文章名的形式http://www.jingfeng.info/post-title/,这样链接中会包含该篇文章的Title,文章名又对SEO极其重要。但是中文博客的文章名天然对英文的URL不友好,中文会被转成一串%¥#@%¥%…鬼都看不懂的格式。你可以在写文章时给文章一个英文文章名,或者采用各种插件。但是这些都不是我想要的,我只想要简单的数字形式。但是WordPress自从加入了自动保存、自动草稿、文章版本控制之后,文章的ID会变得很乱。我曾经通过各种方法保持文章ID的连续。

现在WordPress版本更新的速度快赶得上我更新文章的速度了,每次都那么麻烦地为了虚无的文章ID连续纠结,太累。所以从现在,我开始放弃文章ID连续的措施,文章的ID想咋地久咋地去吧。

2013年9月8日星期日

俺的谷歌广告收入终于破10啦

俺的博客从一开始就挂上了Google AdSense的广告,一直以来博客都没啥流量(俺也很少关注这事啦),所以AdSense的广告收入几乎啥都没有。

今年年初开始AdSense收入在缓慢地增长,每天获得0.01美元的收入。原来是网页 RPM的缘故。

前几天偶尔登录AdSense,首页中显示“暂停支付收入”。
目前我们暂停了给您的付款。若要取消暂停付款,请执行有关的操作。

点进去发现是“收入达到付款最低限额”,查了一下达到了10美元。
祝贺您!您的收入达到了进行验证的最低限额要求,因此我们已开始验证您的帐户,以使您能够在收入达到付款最低限额时收到第一笔付款。

为验证您的帐户,我们会自动生成一个个人识别码 (PIN) 并将其邮寄到您帐户中所列的付款地址。在收到该 PIN 之后,您需要在该页底部将其输入。同时,您的帐户仍然保持有效状态,您可以继续展示广告并获得收入。

不知道是该高兴还是伤心,3年啦才赚了10美元,赚的钱还赶不上物价增长的速度。

以前老婆知道我又往博客投入资金时,总是有些埋怨。我安慰她说:“等我们博客的流量大了,广告收入就会多了,等几年给你用博客的收入给你买个LV。”前天我又把这句话重复给她听时,她说:“哎,我看我也等不到了。等孙媳妇去背着你的LV吧。”

2013年6月26日星期三

促使WP-PostViews插件作者排除中国大陆搜索引擎机器人

在我刚开始使用WordPress经典插件WP-PostViews为博客文章计数的时候,就发现WP-PostViews存在一个问题,它不能排除掉中国大陆的搜索引擎机器人,也就是说文章的计数中包含了机器人(或蜘蛛)的浏览量。这样,即使你在插件的设置选项中排除了机器人的访问数,但是不久你将发现文章的Views会出现异常增长。

这个问题只对中国大陆的网站有影响,因为插件作者并没有考虑到我们的国情,他在WP-PostViews的Exclude Bot Views code中并没有排除掉baidu、360、soso、sogou的蜘蛛,而这几个正是我国广大网民使用最多的搜索引擎。

我们可以修改WP-PostViews插件的代码来排除掉国内的搜索蜘蛛,确保文章访问数的纯净。(方法点这里

但是这两天WP-PostViews连升两级,我又懒得每次都自己去修改插件代码。于是抱着试一试的态度联系插件作者,让他把国内的蜘蛛加进去,这样对于我来说就一劳永逸了。

说干就干,找到Lester Chan的电子邮箱,一封求助邮件发了过去。

没想到他很快就回复了我的邮件:
Can I know what is the useragent baidu and soso used? I can add it and commit the code. If you can paste just the difference here it would be good.

他让我把国内蜘蛛的useragent发给他,于是我就把baidu、360、sogou、sosou的useragent统统发给了他,顺便把这几个搜索引擎的市场份额也告诉了他。

没过多久,作者给我发来邮件说已经添加了代码。我上Github看到作者wp-postviews.php的备注已经注明Add China search engines bots了。

以前听过联系国外作者很容易也很热心,这次体会到了。

2013年6月9日星期日

博客3周岁了

如果不是这两天高考我差点就忘记博客已近3岁了。

3周岁对于个人来说是个值得纪念的生日,过完了3岁这个孩子也算相对安全了,没那么容易夭折了。

静风博客在不知不觉中已经坚持了三年,从开始写博客的兴奋难以抑制,恨不得把拉屎睡觉都写在博客里,到后来的云淡风轻,想写的时候写上一篇。

工作以后,成家以来,为着日常生活奔波,博客越来越变成以自我为中心,记录日常琐事的地方。在这里真觉得对不起仅剩的几个读者,对您来说没什么有价值的东西。

再过几个月我们将有一个可爱的宝宝,博客应该少不了他/她的身影,我们想多记录一些关于宝宝成长的故事。再往以后,如果得闲了我们想多出去走走,多看看阳光海水,多体验大好河山,不再为了省钱周末不敢出门在家睡觉,也不再抑制去电影院的冲动在网上到处寻找枪版的电影。总之,我们想好好体验这种杂乱简单的生活。

2013年3月9日星期六

静风博客部分文章汇总

博客的文章数据都是保存在服务器上,用当下流行的说法是保存在“云端”。云端虽好,但也有不稳定的缺点,所以我会在本地保存一份博客的数据,这种数据是数据库格式的文件,是网站的数据结构的形式,它并不不宜我们浏览。于是我就想找一种能够保存博客文章为Doc或者PDF的方法。

找了各种方法一一尝试,效果都不满意。慢慢地我发现寻找方法花费的时间超过了手动操作的时间,最终我还是采用手工的笨方法来一一保存每一篇文章。

下面就是静风博客从开办以来的部分文章汇总,其中IT类的文章几乎没有收录,因为我觉得这类文章写得快,过时的也快,保存下来的价值也不大。

2010年静风博客文章汇总

2011年静风博客文章汇总

2012年静风博客文章汇总

2013年2月25日星期一

博客文章备份(下载)的尝试

网站的数据是网站的灵魂,可以说是网站的最最重要的东西了,一般来说站长都会把数据文件备份起来以防止意外发生。我的博客使用的是WordPress Database Backup插件来备份数据库文件。但是数据库文件不利于查看,所以我们可以采用RSS订阅和邮件订阅的方式来保存文章,这样每篇文章都能保存下来同时也利于阅读了。可是这些方法保存的文章都很零散,我想寻找一种把整个站点的文章打包保存在本地电脑上的方法。下面就记录下我的尝试的过程。

1、软件

尝试了下面一大堆的国产软件:BlogDown、Blog Backup、Wiz(为知)、豆约翰等。这些博客备份工具大多是基于BSP的,没有一款是专门针对独立站点的。更要命的是这么一群东西没有一个是能用的。不管你怎么尝试,它们就是死活不能用。

2、WordPress插件

到万能的WordPress插件中寻找,找到了两款备份文章到PDF功能的插件,一个是Post PDF Export,另一个是Blog as PDF,这两款插件确实能保存文章成PDF,尤其是Post PDF Export,它能够按着时间段和文章分类来打包保存文章。但是这两个插件都有些问题,对中文的支持都不好,总是出现乱码的问题(问号和鬼符)。

3、总结

以上的尝试归于失败,我还是老实本分以博客为中心,不去苛求什么本地编辑博客文章的功能了。

2013年1月29日星期二

让WP-PostViews排除(国内)机器人的访问数

博客安装了WP-PostViews插件用来显示文章的浏览次数,但是我发现显示出来的访问次数与谷歌分析(Analytics)的统计数据不一致,WP-PostViews统计出来的数据远远大于谷歌分析的数据。于是我就怀疑WP-PostViews统计数据包含了机器人的访问量,可是我在插件的设置里面明明把Exclude Bot Views的值置为Yes了,原则上已经排除了网络爬虫机器人的访问次数了。

我在谷歌中满世界寻找WP-PostViews插件排除机器人访问的方法,来回变换中英文的搜索关键字,最终还是没有找到解决的办法。后来我才知道,国外用户使用WP-PostViews插件不会遇到我们的问题,原来从中做怪的是国内的机器人\爬虫\蜘蛛。

求人不如求己,拿出WP-PostViews插件的源代码来看。在wp-postviews.php找到了排除机器人访问次数的代码(不妨叫作Exclude Bot Views code),如下所示:


if(intval($views_options['exclude_bots']) == 1) {
$bots = array('Google Bot' => 'googlebot', 'Google Bot' => 'google', 'MSN' => 'msnbot', 'Alex' => 'ia_archiver', 'Lycos' => 'lycos', 'Ask Jeeves' => 'jeeves', 'Altavista' => 'scooter', 'AllTheWeb' => 'fast-webcrawler', 'Inktomi' => 'slurp@inktomi', 'Turnitin.com' => 'turnitinbot', 'Technorati' => 'technorati', 'Yahoo' => 'yahoo', 'Findexa' => 'findexa', 'NextLinks' => 'findlinks', 'Gais' => 'gaisbo', 'WiseNut' => 'zyborg', 'WhoisSource' => 'surveybot', 'Bloglines' => 'bloglines', 'BlogSearch' => 'blogsearch', 'PubSub' => 'pubsub', 'Syndic8' => 'syndic8', 'RadioUserland' => 'userland', 'Gigabot' => 'gigabot', 'Become.com' => 'become.com');
$useragent = $_SERVER['HTTP_USER_AGENT'];
foreach ($bots as $name => $lookfor) {
if (stristr($useragent, $lookfor) !== false) {
$should_count = false;
break;
}
}
}

稍微解释一下上面的代码功能:

$bots数组用来存放机器人标识的关键字。

$useragent是访问站点的user-agent标识。

foreach()用来遍历数组,如果探测到访问站点的user-agent标识和bots数组中机器人标识匹配,则不计数。

作者想要实现排除机器人访问数的意图,通过以上的代码大致可以做到。但是仔细研究$bots数组会发现,它里面没有国内搜索爬虫的标识,比如Baiduspider、360spider、Sosospider等。所以WP-PostViews插件并没有排除掉国内常见的机器人。

我在站点统计中找到了站点的访问情况,一般的主机空间都会提供站点的Report功能。下图所示为我的站点一周内的访问情况:

Agent

可以看到站点每天被不同的蜘蛛或机器人访问,而这些机器人并没有记录在WP-PostViews插件的bots数组中,以至于并没有被排除掉。为了排除掉国内的蜘蛛访问数,只需在bots数组中把蜘蛛的标识添加进去即可。我也是懒于研究了,干脆来个干净的,把Spider、Bot、Slurp统统咔嚓掉(注意:这种做法有误杀的可能)。具体做法是修改Exclude Bot Views code为下面的代码:


if(intval($views_options['exclude_bots']) == 1) {
$bots = array('Google Bot' => 'googlebot', 'Google Bot' => 'google', 'MSN' => 'msnbot', 'Alex' => 'ia_archiver', 'Lycos' => 'lycos', 'Ask Jeeves' => 'jeeves', 'Altavista' => 'scooter', 'AllTheWeb' => 'fast-webcrawler', 'Inktomi' => 'slurp@inktomi', 'Turnitin.com' => 'turnitinbot', 'Technorati' => 'technorati', 'Yahoo' => 'yahoo', 'Findexa' => 'findexa', 'NextLinks' => 'findlinks', 'Gais' => 'gaisbo', 'WiseNut' => 'zyborg', 'WhoisSource' => 'surveybot', 'Bloglines' => 'bloglines', 'BlogSearch' => 'blogsearch', 'PubSub' => 'pubsub', 'Syndic8' => 'syndic8', 'RadioUserland' => 'userland', 'Gigabot' => 'gigabot', 'Become.com' => 'become.com', 'Feedburner' => 'feedburner', 'Spider' => 'spider', 'Bot' => 'bot', 'Slurp' => 'slurp');
$useragent = $_SERVER['HTTP_USER_AGENT'];
foreach ($bots as $name => $lookfor) {
if (stristr($useragent, $lookfor) !== false) {
$should_count = false;
break;
}
}
}

2013年1月5日星期六

解决iNove主题评论的回复功能光标位置不正确的问题

iNove主题没有采用传统的评论嵌套回复的样式,而是使用鼠标悬停显示原始评论的方式,这样做的好处是可以使得评论看起来比较规整而且评论之间不受父子级的限制。

可是iNove的回复功能存在光标不跟随始终保持在@user的最前面的问题。具体描述为:当点击“回复”之后,鼠标的光标定位在@user的前面,而不是在@user的后面或者下一行。如下图所示:

@user1

控制“回复”功能的代码是comment.js文件(在主题目录下的js中),通过查看代码可以知道作者的本意是把光标放在@user的下一行。我一开始以为是这段JS的问题,难道是JS不换行的原因,但事实是它没有问题。
var insertStr = '@' + author.replace(/\t|\n|\r\n/g, "") + '  \n';


但是点击回复光标在@user的下一行的功能没有实现,而“引用”的功能却没有问题,仔细观察可以发现“回复”和“引用”的功能大同小异,对比代码最终找到问题出在field.focus()上(控制光标位置的聚焦函数)。

解决的方法是在function appendReply(insertStr, commentBox)函数中找到以下的代码,添加俩field.focus()函数:

if (field.value.replace(/\s|\t|\n/g, "") == '') {
field.value = insertStr;
} else {
field.value = field.value.replace(/[\n]*$/g, "") + '\n\n' + insertStr;
}

修改成如下的代码:

if (field.value.replace(/\s|\t|\n/g, "") == '') {
field.focus();
field.value = insertStr;
} else {
field.focus();
field.value = field.value.replace(/[\n]*$/g, "") + '\n\n' + insertStr;
}

最终的效果如下图所示:

@user2

2012年12月26日星期三

iNove主题添加文章浏览次数的功能

WordPress的iNove主题添加文章浏览次数的功能的效果图:

views

大致步骤如下(以下代码针对iNove主题,其他主题的操作过程类似):

1、安装wp-postviews插件,并设置

2、下载或制作一个浏览量图标view.gif存放到主题的img目录里(如果不需要的话这一步骤可省略)

view (点击下载

3、修改显示浏览量的页面(index.php、single.php、page.php等)

2012年10月17日星期三

WordPress空间转移到Godaddy免费空间的过程小结

自从Godaddy的免费空间没有广告以后,我就试图换用Godaddy的免费空间,现在把空间迁移的过程小结一下。

1、安装WordPress程序


问题:直接安装WordPress失败

Godaddy的空间控制面板中存在直接安装WordPress程序的链接,但是直接点击却无法安装,据说是免费空间不提供此功能。

解决:手动安装

通过FTP上传WordPress程序压缩包,然后解压缩即可。

2、MySQL数据库转移


问题1:数据库无法成功转移

通过phpMyadmin备份数据库,然后通过phpMyadmin恢复数据库,出现错误,提示信息为“#1062 – Duplicate entry ’2′ for key 1
Duplicate entry ‘%s’ for key %d 错误编号:1062”

尝试:不通过phpMyadmin来恢复数据库,而是通过Godaddy空间的MySQL数据库自带的数据库还原功能。具体步骤是:
1、通过FTP将数据库备份文件上传到godaddy主机根目录下的_db_backups目录内(如果_db_backups目录不存在,就手工创建),数据库备份文件后缀需为.sql(如果是.txt需要改为.sql)。

2、进入主机管理面板Host control center后,点击菜单Databases,然后点击子菜单MySQL,进入MySQL数据库管理界面。

3、点击要导入的数据库后面的小铅笔符号(此符号为数据库编辑图标)。

4、点击小铅笔符号后进入MySQL数据库编辑界面,然后点击菜单Restore。

5、点击Restore后展开一个界面。这个界面里列出主机根目录下_db_backups目录里的.sql文件。选择要恢复的.sql文件,或者要导入的.sql文件,然后点击橙色Restore按钮。这样系统就开始将选中的.sql文件中的数据导入到MySQL数据库中了。

不过我通过以上步骤来试图恢复数据库,几次尝试都没有成功,作罢。

解决:通过WordPress备份插件WordPress Database Backup来备份数据库

出现数据库无法成功转移的原因是mysql数据库版本不同而导致Wordpress数据库导入出错,我通过此插件重新备份数据库,然后通过phpMyadmin恢复数据库,结果成功了。但是出现了下面一个问题。

问题2:文章正文出现乱码,显示的是一连串的问号“?”

明眼人一看便知这是数据库编码的问题,由于两个数据库编码不同而产生数据库的内容乱码了。

我开始尝试通过phpMyadmin来反复修改数据库的编码,比如latin1和utf8等。可是不管我把数据库的编码修改成什么类型,最终还是不能解决问题。

解决:通过cosdbrecover.php 方案

通过江东大哥的“WordPress数据库转移乱码解决方案”来恢复数据库,结果是出现了下一个问题。

问题3:问号变成了乱码

虽然问题还没有解决,但是我知道已经前进了一大步,因为这一堆乱码和源数据库中的乱码是一致的。

解决:WordPress数据库导入乱码

修改WordPress根目录下的confing.php配置文件,进行如下修改(就是去掉utf8):

define('DB_CHARSET', 'utf8');  →  define('DB_CHARSET','');

话外:在我尝试通过传说中的“帝国备份”来恢复数据库时,Godaddy的FTP File Manager出现了问题,显示" Cannot find home. Please try again in a few minutes. If the problem persists, please contact support." 或者 "Could not get directory info." 提示。

在我向Godaddy提交维修单之后问题得到解决。

2012年10月16日星期二

换用Godaddy的免费空间

几年前在Godaddy申请Jingfeng.info域名时,Godaddy大方地赠送给我一个免费的主机空间(Free Hosting  with Domain),可是这个空间存在广告,而且无法屏蔽。于是这样一个空间对我来说也就没什么用了,所以一直闲置在那里。

谁知道现在Godaddy赠送的免费空间里的广告突然没有了,而且它的配置相当给力(10G空间存储容量,300G/月的带宽),比我自己掏腰包购买的付费空间的还高很多,所以我一动心,又投怀送抱到了这里。

目前您所看到的这个WordPress网站,采用的是Godaddy的免费空间搭建的。

如果您也感兴趣,不妨也去试一试吧。