在这个数字时代,如果没有朋友,没有社交生活,而唯一关心的就是点击量、浏览量和点赞数,这确实有点悲哀。但如果像一样,是一个专业的“沙发土豆”,除了在家写应用程序和文章之外,没有更好的事情可做,那么正好有一样东西可以推荐给。之所以没有社交生活,是因为待在家里写应用程序和文章(更不用说那自省的“不在乎”的性格缺陷了)。如果也没有自己的生活,这将帮助消磨时间,同时可以欣赏自己的写作技巧(无论是真实的还是想象的)在这个统计数字的镜子中反映出来,作为一种虚荣心来补偿缺少朋友的愿望。可能会发现关于价值的令人震惊的真相。除非有朋友、家人和爱人,否则,就不必在意这一切了。
有人刚刚下载了一份《侦探游戏》的副本,现在正在巴迪大厦里愉快地侦查,询问孔雀夫人是否带着扳手在舞厅里。当第一次运行它时,默认的URL设置为,所以如果想看自己的,需要召唤上下文菜单并点击“setURL”。然后会出现一个组框,可以在那里剪切并粘贴Code-Project作者的文章列表(通过点击页面右上角名字下方出现的“My Articles”选项找到)。将相应的URL粘贴到文本框中,然后点击“ok”。第一次加载时,应用程序不会报告任何变化,因为它以前从未见过这个页面。可以在下面的图片中看到,有几个文件在Bin/Debug/目录(工作目录)中,有一些可疑的XML文件。这就是存储文章信息的地方。当尝试了几个不同的作者文章列表后,他们每个人都有自己的XML文件,应用程序将为提供一个可以在下面的列表框中选择的名字列表。当点击那个列表框中的名字时,那个作者的文章被加载,比较并报告变化。
当运行这个应用程序时,会注意到“Views”统计数据总是以10的倍数递增,但不要害怕,Code-Projects的年鉴中没有点击农场在以10的倍数查看文章,只是为了让感觉真的有读者,以人为地增加浏览量计数……不,不,不。这里发生的事情是,浏览量被正确地统计,并且当文章达到最低10个计数时,包含所有文章的网页才会更新。普京总统与此无关。
菜单选项是直接的。
这个应用程序没有什么复杂的。一直在用称之为HTML-ator的东西来弄清楚需要对HTML文件做些什么,以便从网站上提取想要的数据。使用这个工具,解析了HTML文件,提取了文章统计数据,并将它们存储到一个类Article对象列表中,这些对象跟踪它们的统计数据。这些文章使用它们的标题作为搜索键存储在二叉树中,然后在选定作者更改时记录到XML文件中。
以下是一些代码,它从类URL的public List
string strArticle_Field_Start =
"
"
;
int intArticleIndex_End = strHTML_Source.IndexOf(strArticle_Field_End);
int intArticleIndex_Start = intArticleIndex_End;
int intTemp =
0
;
string strDebug =
"
"
;
int intBest = strHTML_Source.IndexOf(strArticle_Field_Start);
while
(intTemp >=
0
&& intTemp < intArticleIndex_End)
{
intTemp = strHTML_Source.IndexOf(strArticle_Field_Start, intTemp +
1
);
strDebug = intTemp >=
0
? strHTML_Source.Substring(intTemp,
130
)
:
"
"
;
if
(intTemp >=
0
&& intTemp < intArticleIndex_End)
intBest = intTemp;
}
intArticleIndex_Start = intBest;
strDebug = intBest >=
0
? strHTML_Source.Substring(intBest,
130
)
:
"
"
;
while
(intArticleIndex_Start >=
0
&& intArticleIndex_End > intArticleIndex_Start)
{
string strHTML_Article = classStringLibrary.HTML_GetNext
(strHTML_Source,
"
"
, intArticleIndex_Start);
strHTML_Source = strHTML_Source.Replace(strHTML_Article,
"
"
);
List lstFields = classArticle.getFields(strHTML_Article);
if
(lstFields !=
null
)
{
classArticle cArticle = classArticle.Tree_Search
((
string
)lstFields[(
int
)enuArticleFields.Title].
value
);
if
(cArticle ==
null
)
{
cArticle =
new
classArticle();
cArticle.lstFields_Current
= cArticle.lstFields_Next
= lstFields;
classArticle.Tree_Insert(
ref
cArticle);
}
lstArticles.Add(cArticle);
cArticle.lstFields_Current = cArticle.lstFields_Next;
cArticle.lstFields_Next = lstFields;
然后在While-Loop部分稍后,调用C# string strHTML_Article = classStringLibrary.HTML_GetNext(strHTML_Source, "
List lstFields = classArticle.getFields(strHTML_Article);
然后,使用标题字段在lstFields中搜索现有的classArticle实例。如果在树中没有找到这篇文章的实例,就会创建一个并插入到树中,新的统计数据列表被设置为“旧”数据以及“新”数据,这次不会记录任何变化。如果树中找到了这篇文章,它的旧数据与新数据进行比较,这些统计数据的任何变化都会被放到屏幕上。