Posted in 2010/01/05 ¬ 03:00h.阿飞
对于一些关注SEO的网站,多数希望自己新增的页面能够第一时间被搜索引擎收录,更有些悲剧的网站在搜索引擎抓取到之前,就已经被其他的采集器先抓取了。
偶然发现WordPress有这样的一个BlogPing的功能,能够主动通知Google收录页面。
原来这是一个开放式的协议,关于BlogPing,在cnblogs上有一篇关于Ping Service的技术实现方法的文章。
要说的是,对于非博客类网站,可以建立一个符合标准的RSS文档来进行Ping服务通知。
这样测试下来,页面添加好以后几乎一分钟之内,Google的搜索结果中就会收录了。
Posted in 2009/12/16 ¬ 13:28h.阿飞
godaddy的页面改版了,不知道是不是审美疲劳的原因,反正看着比以前舒服了。
在接触Lunarpages以前很喜欢Godaddy,价格便宜速度也不错。后来有一阵子很喜欢模仿godaddy的页面布局形式,因为它的很多管理页面功能很强大,可以有足够多的空间来放置部署一些命令按钮和显示信息。
但是godaddy一直使用runat=server的form,传统的ASP.NET页面形式是个人非常不喜欢的。
冗长的__VIEWSTATE,使页面速度慢了许多,而且ASP.NET自带的客户端JS脚本似乎总是会让页面反应非常迟钝。
08年的ChinaHR就是一个典型的例子。功能本身并不复杂,但是因为使用了ASP.NET自动生成的诸多JS,页面反应相当迟钝,加载速度也很慢。
目前分析使用runat=server的form慢的主要原因应该是当页面上的服务端控件较多,__VIEWSTATE内的信息量过于 庞大,例如godaddy登录后首页的__VIEWSTATE内的文本就有50多KB,这意味着页面上的很多操作点击一下,就要把这50KB的的文本 upload到服务端,而且每次下载的页面都要包含着50多KB的信息,整个页面的html代码才159KB,相当于_VIEWSTATE信息占用了三分 之一。
希望哪天再看到godaddy改版的时候,能够抛弃_VIEWSTATE,让页面欢快起来。
Posted in 2009/12/03 ¬ 16:10h.阿飞
最近查询反链的时候发现有很奇怪的反链,锚文字居然是“李善友的博客”。
查了一下具体地址,以及历史记录才发现,原来这个域名曾经做过一个类似多人博客的采集网站,而某个URL刚好是李善友的博客。
了了,笑一下。
Posted in 2009/08/04 ¬ 17:24h.阿飞
如果幸运,你会在项目开始时就有了想得到的系统的清晰图像。系统的设计是存在于你头脑中的一幅至关重要的图像。如果更幸运一点,在首次发布时,设计依然保持清楚。
接着,事情开始变糟。软件像一片坏面包一样开始腐化。随着时间的流失,腐化蔓延、增长。丑陋腐烂的痛处和疖子在代码中积累,使它变得越来越难以维护。最后,即使仅仅进行最简单的更改,也需要花费巨大的努力,以至于开发人员和一线管理人员强烈要求重新设计。
这样的重新设计很少会成功。虽然设计人员开始时的意图是好的,但是他们发现自己正朝一个移动的目标设计。老系统不断地发展、变化,而新的设计必须跟得上这些变化。这样,甚至在第一次发布前,新的设计就积累了很多的下次和弊病。
设计臭味——腐化软件的气味
当软件出现下面任何一种气味时,就表明软件正在腐化。
- 僵化性
- 脆弱性
- 顽固性
- 粘滞性
- 不必要的复杂性
- 不必要的重复
- 晦涩性
关于这几点特征,可以在百度或Google中很容易的找到跟多的信息。
以上文章摘自Bob大叔的《敏捷软件开发》。
Posted in 2009/08/04 ¬ 10:20h.阿飞
关于强盗分金的问题细细节不再赘述
此类问题体现出的多方博弈情况下的生存哲学如下:
- 没有永恒的朋友,只有永恒的利益。
- 在临界点之下,以决策者的身份出场,冒最大的风险,得到最大的利益。
- 在接近临界点的地方,是收益分配最接近公平的地方。半数的人均匀地受益,另半数的人均匀地不受益。
- 越过临界点之后,以决策者的身份出场,风险极大,甚至会将老本赔进去,而收益却为零,这是最糟的情况,因为大家的收益都不高。这是一种不稳定的状态,系统会通过自我调整向临界点靠拢。
- 永远都不可能发生所有人都有收益的情况,任何时候都有至少 一半或者接近一半 人无收益,除非只有1个人。
另外,如果逻辑推理没有漏洞,那么结论就必定站得住脚,即使它与你的直觉矛盾。
Posted in 2009/07/28 ¬ 14:13h.阿飞
使用JavaScript获取input光标,这里只介绍常用的IE和Firefox中的方法:
在Firefox中非常简单,在IE中非常强大,两种不同的获取方式如下:
function GetPosition(input)
{
if($.browser.msie)
{
var cuRange=document.selection.createRange();
var tbRange=input.createTextRange();
tbRange.collapse(true);
tbRange.select();
var headRange=document.selection.createRange();
headRange.setEndPoint("EndToEnd",cuRange);
var pos=headRange.text.length;
cuRange.select();
return pos;
}
else
return input.selectionStart;
}
Posted in 2009/07/28 ¬ 10:05h.阿飞
在网上找了很多次XmlWriter格式化(自动缩进)输出的写法,每次用完就忘了,在此备忘:
System.Xml.XmlDocument doc = new XmlDocument();
//Your Code...中间对XmlDocument的一些加载、操作
//开始格式化代码
System.Xml.XmlWriterSettings set = new XmlWriterSettings();
set.Indent = true;
set.IndentChars = "\t";
set.Encoding = System.Text.Encoding.UTF8;
System.IO.MemoryStream stream = new System.IO.MemoryStream();
System.Xml.XmlWriter writer = XmlWriter.Create(stream, set); //此处也可以用一个StringBuilder代替stream, 但容易遇到编码问题
doc.Save(writer);
//输出,完结
string html = System.Text.Encoding.UTF8.GetString(stream.ToArray());
Response.Write(html);
Posted in 2009/07/20 ¬ 08:30h.阿飞
Word2007新增了不少WEB功能,最近发现用它写博客蛮方便的。直接输自己WordPress的地址,账号便可以发布、修改博文。
具体的步骤大家打开Word2007一定很快就发现怎么用了。
这里贴出自己遇到的若干问题,以及解决方法:
1. 添加账号时,提示无法连接到博客提供商
1.a) 首先确认你的博客设置中Writing里的”Enable the Atom Publishing Protocol” 和 “Enable the WordPress, Movable Type, MetaWeblog and Blogger XML-RPC publishing protocols” 这两个选项已经勾上。这是启用XMLRPC,只用启用了此功能,Word才能连接到博客。
1.b) 如果已经启用了,但仍然无法连接,那么很可能是你的WordPress经过了手工编辑,可能是你自己编辑,也可能是安装包已经是经过修改的。而在修改时有相关文件被加上了UTF8编码标记。
打开wp-includes/class-IXR.php 文件,找到
$length = strlen($xml);
header('Connection: close');
header('Content-Length: '.$length);
header('Content-Type: text/xml');
header('Date: '.date('r'));
echo $xml;
exit;
这段代码,大概应该在395行的样子,将设置Content-Length这句注释掉:
$length = strlen($xml);
header('Connection: close');
header('Content-Length: '.$length);
//header('Content-Type: text/xml');
header('Date: '.date('r'));
echo $xml;
exit;
因为这句话设置了反馈给Word的内容的长度,而一旦内容中包含了UTF8编码标记的话,将会导致xml文档内容不完整,而使得Word无法正常解析。显然不设置这句,PHP也会自动计算出长度的。
2. 打开现有文章时,文章内容不全。
细心的人会发现,凡是加入了“More”标记的文章,打开后都只能显示More之前的内容。这个不知道为什么会这样设计,反正WordPress的设计者就这么干了,我们可以改一下代码。
打开根目录下的xmlrpc.php文件。找到如下代码片段(大概在2630行):
$resp = array(
'dateCreated' => new IXR_Date($post_date),
'userid' => $postdata['post_author'],
'postid' => $postdata['ID'],
'description' => $post['main'], //这个$post['main']是上面计算出来的More标签之前的摘要内容
'title' => $postdata['post_title'],
'link' => $link,
'permaLink' => $link
其中的$post['main']替换成$postdata['post_content']即可。这样即是返回全文:
$resp = array(
'dateCreated' => new IXR_Date($post_date),
'userid' => $postdata['post_author'],
'postid' => $postdata['ID'],
'description' => $postdata['post_content'], //返回全文
'title' => $postdata['post_title'],
'link' => $link,
'permaLink' => $link
OK,我就遇到这两个问题了。最近在研究将WordPress改造成电子商务网站,有成果了再跟大家分享。