返回首页


{S0}我有一个想法,博客文章,或不按日期顺序排列,或以任意顺序列出的规则,但在某些计算顺序排序。为此,我需要从某处获取数据,我猜想使用的评论数,引用数,书签交易书,Digg,FriendFeed上Twitter和Google的网页排名。在此示例中,我使用作为牧马人等级之间的交叉长期Rangler,但他们是真正的数据采集。

这是一个真正的探索性脑转储和概念证明,所以请原谅任何不好的代码或做法的目标是什么?
的想法是调用一些外部服务和拉动本地数据。然后计算基于一个算法:

Rank = ([Facebook Likes] + [Tweets] + [Digs] + [Pingbacks/Trackbacks]) * [Google Rank]
图:算法
然后,我希望能够为基于此值的内容和最流行的内容是什么。您还可以增加加入的意见,以及这个,但我没有这些数据一应俱全。
我才真正有时间的时间创建一个概念证明,那里有大量的数据服务,你可以调用,所以我选择两个数据馈送。有有大量的数据服务,但BackType使相当多的数据和谷歌网页排名的数位是一个众所周知的质量指标。结果是什么呢?
我建立了一个非常简单的接口,我可以用它来测试所有的核心功能,坐在后面的Web服务的概念。
{S2}
图:这个博客帖子获得一个排名2460
正如你可以看到我的UI技能是梦幻般的
{S4}的
图:只有1这条规则的鸣叫
如果您的网页排名这种方式,那么你就可以看到哪些页面丢失的原因和它是值得花一些时间跟上日期和充实。或者反之亦然,如果你是在一段时间没有多少爱,你想尝试,并提高其地位的内容。它是如何做的呢?
这是实施作为一个WPF应用程序调用Web服务来获取数据。这是唯一的POC,但它是可扩展:
{五}
图:?添加一个新的"Rangler是一个bin文件夹中添加一个新的装配的问题。不需要接触现有的代码。
正如你可以看到我没有很多的测试,我真的只是用它们来测试每一层的UI和运行之前。我认为我写了共4个测试。
{中六}
图:Ranglers动态加载的,如果他们是在放在网站的Bin目录。
我想rudimentarily可扩展的平台,即使在这个阶段,因为我喜欢切换代码和出表现最好。我会用在这个阶段的第一个改进之一是交出个人Ranglers的得分计算,你可能需要有一些疯狂的计算的变化,在以后的日子。
有一些如何动态加载的东西,我认为这是快速和肮脏的方式。{C}
图:这是代码,通过在所有的程序集的类型搜索类实现IRangler
您也可以使用MEF和其他的框架,以便使在未来更可扩展。
{七}
图:UI调用服务
我用了一个Web服务的原因是,我可以看到一个更通用的使用,这在未来的能力。它允许你刚才得到相当大量的统计资料,但它可以扩展,让所有的鸣叫,评论和其他信息比特构成的统计资料的检索。
{S8}
图:哪些所有的计算,并要求所有它找到的Ranglers
Web服务调用RanglerManager这是负责寻找后Ranglers和缓存数​​据的后续调用速度快了很多相同的URL。
{S9}
图:BackType Rangler拉回来了大量数据,从BackType的服务器上的XML提要
BackType Rangler呼吁BackType的API,并解析出在自定义数据类返回的统计信息。
{S10}
图:谷歌Rangler有些吓人只会巨型的网页排名
谷歌网页排名Rangler是一个棘手的,因为你不能只是获取数据的一点点,但它实现就好了,你可以看到在上面的UI截图的结果。
看到所有的内部工作。结论
虽然这只是一个小证明了概念,你可以想像数百页在您的网站上,我认为你会惊讶什么花车顶端。如果我是细读,我想这进一步落实多了很多的数据收集器
{A}(我知道这是不是一个规则,但它是一个页面)将基于计算: FACEBOOK喜欢:0
({A2}) 鸣叫:9
({A2}) 挖掘:16
({A4} 链接:56
({A5} 谷歌:3 / 10 & #160;
({A6})
这整个目的是表面上你的网站非常流行的内容,并确定你应该把时间花在在底部或顶部。 你怎么想到这个办法呢? 60; 你想看到什么样的其他数据收集器?Technorati标记:{A7}

回答

评论会员:Ruselo里瓦Asentista 时间:2012/01/26
服务器应用程序,特别是下载线程需要所有的操作系​​统,它可以得到的帮助。尝试卸载一些你的程序,应该可以解决下载问题。第一个问题是关于即将重置侦测请求。正在进行中的ping不能复位尽快任何其他形式的变量
评论会员:。阿布舍克苏尔 时间:2012/01/26
嘿,

窗口基本上是因为你使用的是同一个线程下载文件以及更新应用程序挂起。

当您在后台工作时,它总是建议使用{A8}]和调用从那里下载的方法。

要ping您可以使用:

{S11}
评论会员:哈桑faghihi 时间:2012/01/26
我尝试这样做,但给我的错误,所以我没有每每一次,egain产生错误:'(

公共静态INT平(主机名字符串)
{
& #160; 萍萍=新平()
&# 160;
PingReply答复= ping.Send(主机名);
&# 160; (reply.Status == IPStatus.Success)
&# 160; {
& #160; Console.WriteLine("地址:{0}",reply.Address)

("往返时间:{0}",reply.RoundtripTime);  60;
("生存时间:{0}",reply.Options.Ttl);  0;
("不要片段:{0}",reply.Options.DontFragment);   ;
("缓冲区大小:{0}",reply.Buffer.Length); ("状态:{0}",reply.Status);
&# 160;
 60; ()
  ; (0);
}
 60; ELSE
& #160; {
("错误");
 0; ("状态:{0}",reply.Status);
  ; ()
& #160; (1);
&# 160; }
}