`
isiqi
  • 浏览: 16493890 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

[转贴]关于 Blog 和 RSS 的全面介绍

阅读更多

关于 Blog 和 RSS 的全面介绍


原著:Aaron Skonnard

翻译:NorthTibet


原文出处:MSDN Magazine Apr. 2004(The XML Files)

什么是 Blog?

"Blog"是 Web Log 的简称(译者注:也就是网志)。它是一种作者与读者以日志风格进行交互的中介。在软件社区,人们以网志形式来共享观念与思想变得越来越流行。如:http://blogs.msdn.com 就是 MSDN 上的一个 blogging。

建立网志最轻松的方法是什么?

要想建立自己的网志,最容易的方法是到类似 blogger.com 这样的站点注册一个新用户,它提供一个创建自定义网志的 Web 界面,并且可以立即使用所创建的网志。类似 blogger.com 的站点有很多,它们都提供对网志特性的支持。 如果你想更多地控制网志的基础结构或者想要在自己的服务器上建立网志服务系统。你可在以下最流行的几种网志应用商业产品中选择其一:Radio Userland、Manila 和 Movable Type。还有些易用的免费 .NET 网志应用可以使用,最流行的有:.TEXTdasBlog。只要把它们下载下来,然后按照安装说明进行安装与设置,分分钟便可建立起一个可运行的网志服务系统。
  从功能上讲,这两个基于 .NET 的网志应用系统不相上下。其主要区别在于 .TEXT 需要数据库,SQL Server 或者 MSDE,而dasBlog 将所有信息都存储在 XML 文件中(它基于原来一些微软公司开发人员创建的 BlogX 框架),另一个差别是 .TEXT 在单个安装配置中可支持多个网志(比如现在的 http://blogs.msdn.com 就是如此),而 dasBlog 要支持多个网志,必须进行多次安装。但 dasBlog 有一个很突出的特性,那就是“Mail to Weblog”,它允许你通过邮件来发布新信息。
  新的 MSDN 网志服务站点和 PDC Bloggers 都是开始查找关于软件开发主题的很好去处。只要浏览这些站点之一便可阅读其经过聚合的预定内容。其预定的摘要会向你公开许多个人网志,渐渐的你会自然而然地发现一些你比较喜欢阅读的内容。这样,你便可以直接预定你最喜欢的个人网志摘要。
  对于专门讨论 XML 和 Web 服务的网志,请查看 MSDN Web Services Developer Center 上的清单,我个人要花很多时间上这些网志站点。

什么是 Feed(以下称为提要),如何预定它?

网志以 RSS 文档形式为其内容提供一个提要,该 RSS 文档可以通过众所周知 URL 获得。RSS 文档是一个 XML 文件,它包含大量离散的新闻项,如某个网志中的入口项(RSS 提要的例子参见 Figure 1)。由于 RSS 是 XML 格式文件,所以它很容易被其它程序所使用。
  RSS 聚合器是一个读取 RSS 文档并显示新闻项的程序。大多数聚合器只要输入 RSS 的 URL,使得预定提要成为可能。
  RSS 使阅读网志便得容易。大多数经常阅读网志的开发人员都使用某种类型的聚合器来帮助他们有效地筛选提要内容。聚合器使得阅读网志的感觉就象是在阅读电子邮件,因为它们突出新闻项并将新闻项进行缓冲处理以便离线阅读(参见 Figure 2)。
  还有一些在线 RSS 聚合器将 RSS 提要捆绑到某个单独的网站。其优点是易于设置并且可以从任何计算机存取你的提要内容。当然,其缺点也是显而易见的,那就是在阅读时必须始终保持连接。
  RSS 是网志成为一种强大的新型信息交流形式之根本所在。在网志出现之前,大多数开发人员为了要查找到需要的内容,通常要花大量时间来筛选掉那些令人讨厌的无关的信息。
  网志通过让读者选择所要阅读的提要,将控制权交给读者,从而有效地构建自己的个性化内容流。
  其它类型的站点也能利用 RSS 的优点来聚合内容。例如,多数主流的新闻站点包括 Wired、CNet、Yahoo 和 NPR News 都提供 RSS 提要。访问 BlogdiggerSyndic8,你可以找到一些支持 RSS 的站点。
  微软的 MSDN 提供 RSS 提要(RSS feeds)来聚合新添加到站点的技术内容。MSDN 的 Just Published提要是一种保持 MSDN 新文章和下载的主要方式。甚至 MSDN Magazine(MSDN 杂志)都有其自己的 RSS 提要!可以预定:http://msdn.microsoft.com/msdnmag/rss/recent.xml 获得每月的更新以便查看本期有何内容?目前有许多种 RSS 聚合器可供选择,在 http://blogs.law.harvard.edu/tech/directory/5/aggregators 上可以找到一个相当完整的列表。其中一些是在线聚合器,而另外一些是桌面应用程序。有些是免费的,另外一些需要付费才能使用。

哪个 RSS 版本是最通用的?

这个问题的答案要看你问的是谁,RSS 的版本有好多个,0.90、0.91、0.92、0.93、0.94、1.0 和 2.0。要弄清楚这些版本之间的差别是巨大的挑战之一。理解它们需要了解一些有关它们的历史背景。Netscape 创建了 RSS 的最初版本 0.90,起初的名字是“RDF Site Summary”或者“Rich Site Summary”(规范中说前者是正式名称)。Netscape 创建 RSS 0.90 用于其 Web 门户,这个时候,其他人看到了 RSS 的使用潜力。Userland Software 是第一个开始将 RSS 用于其网志商业产品者之一。
  版本 0.90 在很大程度上基于 W3C 的 Resource Description Framework (RDF)。许多人都认为 RDF 过于复杂,因此都建议出一个免费的简化版本 0.91。这个任务恰好就给了 Userland Software。Userland Software 便继续发展 RSS 的简化版本,随后出台的版本包括:0.92、0.93 和 0.94。为了强调其所做的简化工作,他们将 RSS 的全称定为“Really Simple Syndication”。
  正当 Userland Software 继续专注于其简化工作时,另外一组开发人员在复兴最初的 RDF 版本(0.90),因为 RSS 号称自己更灵活。他们最终发布了一个 RSS 1.0 的版本,其正式名称还是“RDF Site Summary”。由于使用 RDF,这个版本完全不同于 Userland Software 所控制的版本。Userland Software 当然不太愿意看到 RSS 1.0 似乎要取代其 0.94 版本的事实,于是出了一个新版本,并将版本号一下子跳到了 2.0。
  这就是今天的这种局面,形成了两个主要的竞争版本:一个基于 RDF 1.0,而另一个则不是(2.0),但它们两个都共用相同的名字。这是一种可怕的混乱,因为版本号导致人们误认为 2.0 是 1.0 的改进版本,而实际上它们是两个目标完全不同的规范。另一组开发人员已经下狠心着手解决这种混乱问题,通过定义新的摘要(syndication)规范来与 RSS 名字的随意性决裂。这个解决方案称为 Atom(原子)项目。本文稍后将会详细讨论。
  使用哪个版本其实是无关痛痒的,大多数 RSS 聚合机制支持所有的 RSS 版本(有些甚至支持 Atom)。最终的决定取决于你是否想使用 RDF,可谓萝卜白菜,各有所爱,它完全要看某人所信奉的 Semantic Web 概念而定。

RSS 1.0 和 RSS 2.0 各是什么样子?

RSS 1.0 和 2.0 格式所包含的核心信息相同,但其结构不一样。我提供了一个 RSS 1.0 文档(参见 Figure 1)以及一个同等的 RSS 2.0(参见 Figure 2)用于对照。
你会注意到顶行右边开始的根元素的差异,RSS 1.0 的根元素是 rdf:RDF,而 RSS 2.0 的根元素是 rss。rss 还包含一个强制版本属性用以表示所用的RSS的准确格式(可能的值包括:0.91, 0.94 等)。另一个主要差别是 RSS 1.0 文档有名字空间限定,RSS 2.0 的文档就没有。不管怎样,包含在两个文档中的信息本质上是一样的。
  两个版本都包含 channel 元素,而 channel 元素又包含三个必须的元素:title、description 和 link,其代码如下:

<channel><font size="2"> <description><!-- 简要描述 --></description><link>
<!-- channel 的 URL --><!-- 可选/可扩展元素 --></font></channel>

  除了这些必须的元素外,RSS 1.0 还定义了三个附加元素:image、items 和 textinput,其中,image 和 textinput 是可选的。另一方面,RSS 2.0 提供了 16 个附加元素,其中也包括 image、items 和 textinput,此外还有 language、copyright、managingEditor、pubDate 和 category。RSS 1.0 允许通过定义在单独的 XML 名字空间中的可扩展元素来创建这种类型的元数据。
  这两种格式在结构上的主要区别必须要看其 item、image 和 textinput 节点的表示形式。RSS 1.0 中,channel 元素包含对 item、image 和 textinput 节点的引用,这些节点存在于 channel 节点本身之外。这样在 channel 和 所引用的节点之间建立了一种 RDF 关联。如 Figure 1 所示,channel 元素与一个 image 元素以及两个 item 元素关联。RSS 2.0 中,item 元素只是在 channel 元素中连续排放(如 Figure 2 所示)。item 元素包含实际的新闻项信息。item 的结构在两个版本中是相同的。item 元素通常包含 title、link 和 description 元素,如下代码所示:

<item><font size="2"> <link>
<!-- 项 URL --><description><!-- 简要描述 --></description><!-- 可选的/可扩展的元素 --></font></item>
  在 RSS 1.0 中,title 和 link 是必须的,description 是可选的。而在 RSS 2.0 中,title 或 description 必须提供其中的一个;其它均可选。这些只是定义在 RSS 1.0 中的 item 元素。RSS 2.0 提供几个其它可选元素,其中有 author、category、comments、enclosure、guid、pubDate 和 source。RSS 1.0 获取这样的元数据是通过定义在单独的 XML 名字空间中称为 RSS 模块的可扩展元素来实现的。例如,在 Figure 1 中,item 的日期是用 Dublic Core 模块的 <?xml:namespace prefix = dc /><date><font size="2">元素表示的。<br><br>有关不同格式的完整信息请参考 </font><a href="http://web.resource.org/rss/1.0/spec" target="_blank"><font size="2">RSS 1.0</font></a><font size="2"> 和 </font><a href="http://blogs.law.harvard.edu/tech/rss" target="_blank"><font size="2">2.0</font></a><font size="2"> 规范。<br><br><img src="http://www.vckbase.com/image/Question.gif"><b>那么,何为 Atom?</b><br><br><img src="http://www.vckbase.com/image/Answer.gif"> 前面我提到过,Atom 乃一项目的名字,主要是开发一个新的网志摘要格式以解决目前 RSS 存在的问题(混乱的版本号,不是一个真正的开放标准,表示方法的不一致,定义贫乏等等)。Atom 希望提供一个清晰的版本以解决每个人的需要,其设计完全不依赖于供货商,任何人都可以对之进行自由扩展,完整详细说明。<br>  当今许多 Blog 引擎已经支持当前的摘要格式。</font><a href="http://www.vckbase.com/document/journal/vckbase31/figures/xmlfiles_0404fig.htm#fig3" target="_blank"><font size="2">Figure 3</font></a><font size="2"> 是一个Atom 0.3 提要例子,它与前述 </font><a href="http://www.vckbase.com/document/journal/vckbase31/figures/xmlfiles_0404fig.htm#fig1" target="_blank"><font size="2">Figure 1</font></a><font size="2"> 及 </font><a href="http://www.vckbase.com/document/journal/vckbase31/figures/xmlfiles_0404fig.htm#fig2" target="_blank"><font size="2">Figure 2</font></a><font size="2"> RSS 提要等同。注意 Atom 提要用名字空间限定的,但它不使用 RDF。这使得 Atom 和 RSS 1.0 及 RSS 2.0 在某些地方有相似之处。Atom 在未来是否能被接受,人们拭目以待。<br>  除了定义新的摘要格式之外,Atom 还希望定义一个标准的档案文件格式和一个标准的网志编辑 API(Atom API)。有关 Atom 详细规范以及其它 Atom 资源请访问 </font><a href="http://www.intertwingly.net/wiki/pie/FrontPage" target="_blank"><font size="2">The Atom Project</font></a><font size="2">。<br><br><img src="http://www.vckbase.com/image/Question.gif"><b>什么是 blogroll?</b><br><br><img src="http://www.vckbase.com/image/Answer.gif"> blogroll<span lang="en"> </span>是网志提要的集合,大多数 blogger(博客)在其个人网志上都提供 blogroll。这就允许读者连接到其他趣味和写作风格相投的人的网志上。Blogroll<span lang="en"> </span>方便了网络上的沟通。通过使用Outline Processor Markup Language (OPML),人们可以用 XML 格式文件交换 blogroll。</font><a href="http://www.vckbase.com/document/journal/vckbase31/figures/xmlfiles_0404fig.htm#fig4" target="_blank"><font size="2">Figure 4</font></a><font size="2"> 是 blogroll 的一个例子。<br>  大多数网志引擎都自己管理 blogroll,每当读者请求 blogroll 时都自己产生相应的 XML 格式。同样,大多数聚合器都能导入 blogroll 并自动预定所包含的摘要。有关 OPML 更多的信息参见 </font><a href="http://opml.scripting.com/"><font size="2">http://opml.scripting.com</font></a><font size="2">。 <br><br><img src="http://www.vckbase.com/image/Question.gif"><b>能解释 referrers、trackbacks 和 pingbacks 是什么吗?</b><br><br><img src="http://www.vckbase.com/image/Answer.gif"> 大多数网志软件都能让读者添加网志评论。但更常见的做法是让读者在其自己的网志添加一个入口回链到原来的帖子。博客们(Bloggers)都乐于跟踪连接发生的时间以便新读者能理解整个会话内容。 <br>  所谓 referrer 是一个外部站点,用户单击该站点上一个超链接便可以到达你的网站。许多网志引擎当读者导航到你的网志的某个入口时都能自动保持跟踪。大多数引擎都会在网志入口底部显示一个 referrers 清单,以便读者能往回导航到 referrer 的站点,并清楚他们关于该入口要说些什么,这基于一个假设,那就是如果他们链接到它,可能就此会写些什么。referrer 存在的问题是必须要有这个假设才成立——没有足够的信息说明是否引用的页面事实上包含有关信息。实际上,垃圾信息的发布者为了营销企图已经利用了这个漏洞来重定向读者。<br>  Trackback 和 pingback 同一个规范,被用来弥补上述问题的方案。使用 trackback 和 pingback,其他博客们能自动发送一个 ping 到你的网志以明确表示他们已经写了一个引用特定帖子的入口。<br>  这种类型的反链允许你的网志以更明显的方式显示所有评论的清单。当今大多数网志软件支持所有这些技术。参见 </font><a href="http://www.movabletype.org/docs/mttrackback.html" target="_blank"><font size="2">TrackBack Technical Specification</font></a><font size="2"> 和 </font><a href="http://www.hixie.ch/specs/pingback/pingback-1.0" target="_blank"><font size="2">Pingback 1.0</font></a><font size="2">。<br><br><img src="http://www.vckbase.com/image/Question.gif"><b>如何为我的站点产生 RSS 提要?</b><br><br><img src="http://www.vckbase.com/image/Answer.gif"></font><a href="http://www.vckbase.com/document/journal/vckbase31/figures/xmlfiles_0404fig.htm#fig5" target="_blank"><font size="2">Figure 5</font></a><font size="2"> 举例说明了如何用 asp:Repeater 控件在 .aspx 页面中生成 RSS 2.0 提要。该页面假设你已经在后端代码文件中将控件的 DataSource 属性设置成对应的数据库结果集。<br><br><img src="http://www.vckbase.com/image/Question.gif"><b>我想聚合几个 RSS 提要并将信息显示在个人网站上,能解释一下如何实现吗?</b><br><br><img src="http://www.vckbase.com/image/Answer.gif"> 因为 RSS 提要是 XML 文件,作为练习,你可以用自己最擅长的 XML API,比如,Microsoft .NET Framework 中的 System.Xml,</font><a href="http://www.vckbase.com/document/journal/vckbase31/figures/xmlfiles_0404fig.htm#fig6" target="_blank"><font size="2">Figure 6</font></a><font size="2"> 中包含 ASP.NET Web 用户控件代码,它是我编写用来聚合 blogroll 文件中(.opml)所列出的 RSS 提要的一段代码。这段代码假设 opml 元素包含 numberToDisplay 属性,以表示你打算显示的每个提要有多少项。<br><br><img src="http://www.vckbase.com/document/journal/vckbase31/images/xmlfilefig07.gif" border="0"><br>Figure 7 ASP.NET Web 用户控件<br><br>你可以将控件拖到任何 .aspx 页面中,它将显示 blogroll 文件中列出的不同提要的项,Figure 7 显示了 Utah .NET User Group 网站使用这个控件的效果画面。<br><br><img src="http://www.vckbase.com/image/Question.gif"><b>有没有与网志交互的 Web Services APIs?</b><br><br><img src="http://www.vckbase.com/image/Answer.gif"> 许多网志引擎都提供属于自己的 Web service 接口,通过编程与网志交互,但目前还没有出现一种标准化的东西。<br>.Text 和 dasBlog 两者都提供某些 .asmx 端点,可以通过 SOAP 来实现编辑功能,但其接口是不同的。Blogger.com 提供基于 XML-RPC 的交互式 API (</font><a href="http://www.blogger.com/developers/api/1_docs" target="_blank"><font size="2">Blogger API</font></a><font size="2">)。Userland Software 对Blogger API 的功能进行了增强,并把它叫做 </font><a href="http://www.xmlrpc.com/metaWeblogApi" target="_blank"><font size="2">MetaWeblog API</font></a><font size="2">。这些可能是当今公认的网志 APIs,但仍然不是所有网志引擎都支持的。还有一个用于添加评论的独力的 API 叫做 </font><a href="http://wellformedweb.org/story/9" target="_blank"><font size="2">Comment API</font></a><font size="2">,同样,它也不是被普遍支持。<br>  Atom 组正在努力解决这些问题,Atom API 定义了一个标准的网志 API 用于发布和编辑网志内容。有关信息请参考</font><a href="http://www.intertwingly.net/wiki/pie/FrontPage" target="_blank"><font size="2"> The Atom Project</font></a><font size="2"> 网站。<br><br>发送问题和评论给 </font><a href="mailto:Aaron%EF%BC%9Axmlfiles@microsoft.com"><font size="2">Aaron:xmlfiles@microsoft.com</font></a><font size="2">。<br> </font></date>
作者简介
  Aaron Skonnard 在盐湖城 Northface 大学授课。与人合著有《Essential XML Quick Reference》(Addison-Wesley, 2001)以及《Essential XML》(Addison-Wesley, 2000),经常在会议上演讲。在 http://www.skonnard.com 可以联系上他。
本文出自 MSDN MagazineApril 2004 期刊,可通过当地报摊获得,或其最好是 订阅

本文由 VCKBASE MTT团队 翻译
分享到:
评论

相关推荐

    行业资料-电子功用-全自动导电布成型转贴穿管设备及工艺的介绍分析.rar

    标题"行业资料-电子功用-全自动导电布成型转贴穿管设备及工艺的介绍分析.rar"表明这是一份关于电子行业中的特定应用——全自动导电布成型转贴穿管设备及其相关工艺的详细介绍。导电布是一种具有导电性能的材料,常...

    动易系统的论坛转贴工具

    《动易系统的论坛转贴工具详解与应用》 在互联网信息交流日益频繁的今天,论坛作为用户互动的重要平台...通过深入理解和熟练运用,我们可以更好地利用论坛转贴工具,推动内容的广泛传播,实现互联网信息的共享与繁荣。

    胖子说RUP(转贴)

    **标题:“胖子说RUP(转贴)”,源自博客文章:https://lkfnn.iteye.com/blog/33902** 这篇文章是关于Rational Unified Process(RUP)的讨论,由“胖子”(可能是作者的昵称)分享的一个转帖。RUP是一种广泛使用的...

    电子政务-导电泡棉转贴装置.zip

    6. **维护与保养**:提供关于导电泡棉及转贴装置的日常维护、清洁、替换等方面的指导,以延长设备使用寿命。 7. **未来趋势**:探讨电子政务领域中导电材料和技术的未来发展,可能涉及新材料的研发、更高效的转贴...

    易语言源码动网转贴.rar

    3. **用户身份验证**:为了确保用户权限和安全性,动网转贴功能可能涉及到用户登录状态的检查和验证,这可能需要用到Cookie、Session或Token等技术。 4. **界面设计**:在用户界面方面,需要设计友好的操作界面,让...

    动网转贴.zip易语言项目例子源码下载

    总的来说,“动网转贴”项目实例是一个全面展示易语言应用的范例,涵盖了网络通信、数据处理和界面设计等多个关键领域,对于所有想要提升易语言编程技能的人来说,都是不容错过的宝贵资源。通过深入研究和实践,你将...

    易语言动网转贴.rar

    关于"动网转贴"的具体实现,可能涉及到以下知识点: 1. **网页爬虫技术**:为了从动网论坛抓取帖子,开发者可能使用了HTTP请求和解析HTML的技术,这可能涉及到了易语言的网络模块和字符串处理。 2. **数据解析与处理...

    动网转贴.e.rar

    动网论坛的用户可能经常进行帖子的分享和转贴,这些信息可能包括帖子的文本内容、图片、链接和其他附件。.rar文件格式是一种常见的压缩格式,用于将多个文件打包在一起,减少存储空间并方便传输。 【标签】"动网...

    BFC UBB转贴器

    由于现在流行的转贴工具都是基于浏览器的,转换速度比较慢,还得打开浏览器才能使用(同时受到浏览器版本限制)。 &lt;br&gt; 而这个小程序则完全不依赖于浏览器,以BFC采集器的UBB转换模块为基础,转换速度超快,...

    行业文档-设计装置-木器、玻璃用贴花纸生产及转贴方法.zip

    总的来说,这份文档提供了关于木器和玻璃用贴花纸从设计到应用的全面知识,对于从事相关行业的从业者来说,是一份宝贵的参考资料。通过学习其中的理论和实践,可以提升产品工艺水平,优化生产流程,满足市场对高质量...

    Html处理软件、转贴工具(源代码)

    去除Html中的干扰码等(样例中以轻之国度的干扰码为例) 配置文件语法: 方法类型(整数) 最大匹配长度(整数) 字符串1(删除开头) 字符串2(删除结尾) 方法类型: 1:删除单行 2:删除行与行之间的

    jquery的转贴功能实现

    在网页开发中,jQuery是一个非常流行的JavaScript库,它极大地简化了DOM操作、事件处理和Ajax交互等任务。在本主题中,我们将深入探讨如何利用jQuery实现“转贴”功能,这是一种常见的社交媒体分享功能,允许用户将...

    东度极品论坛转贴工具

    东度极品论坛转贴工具东度极品论坛转贴工具

    [转贴]九大BI厂商点将录

    【标题解析】:“九大BI厂商点将录”这个标题揭示了文章的核心内容,它是一个关于商业智能(Business Intelligence,简称BI)领域中的九个主要厂商的综合评价和分析。BI是IT行业的一个重要分支,专注于数据提取、...

    行业分类-设备装置-FPC吸附胶纸转贴组件.zip

    合适的胶纸类型和转贴工艺能够有效防止FPC在使用过程中发生松动、脱落,甚至损坏,从而保证设备的稳定运行和信号传输的可靠性。 FPC吸附胶纸转贴组件在各种设备装置中都有应用,例如智能手机、平板电脑、医疗设备、...

    论坛专用屏蔽干扰码转贴工具

    标题中的“论坛专用屏蔽干扰码转贴工具”指的是一个专为论坛设计的软件,它的主要功能是处理并转换论坛上常见的干扰码,以便用户能够顺利地复制和粘贴信息。在论坛交流中,有时为了防止恶意爬虫或者保护内容不被搜索...

    易语言动网转贴

    综上所述,"易语言动网转贴"源码涵盖了文件操作、窗口交互、数据校验等多个方面,是实现论坛帖子迁移的一个实例,对于理解和学习易语言以及窗口编程有很大的帮助。通过深入研究这段代码,开发者可以了解到如何利用...

    [转贴]Symbian编程VC开发环境设置 (方便个人学习用,转载自 rocklys的专栏,转贴请搜索原作者) - waferham的专栏 - CSDNBlog.mht

    [转贴]Symbian编程VC开发环境设置 (方便个人学习用,转载自 rocklys的专栏,转贴请搜索原作者) - waferham的专栏

    ZZ: 时间管理方法(转贴)

    标题中的“ZZ: 时间管理方法(转贴)”表明这是一篇关于时间管理的文章,可能是从其他地方转载而来。从描述中的“博文链接:https://lkfnn.iteye.com/blog/33600”我们可以推测,这是一篇在ITeye技术社区发表的博客...

Global site tag (gtag.js) - Google Analytics