Skip to content

echoface/XReader

Repository files navigation

XReader 一次失败的实践 && 感悟

首先👀一下它长什么样, 虽然说我之前在我的gitbook中的技术博客中写过它,不过一是我并没有公开在这些博客站点发布,而来那里面几本上是简单的介绍+一大堆代码, 估计能坚持看三分钟的人都是耐力惊人的吧;

##Xreader Github

这个项目开始于我自己的一点点情怀,在我的同龄人中,可能我算是很早就接触RSS订阅的人了,早在google还没有“迁出”大陆之前, 我就是个google用户;是自然是一个google Reader用户, 对我而言,rss实在是太好用了, 我可以不用每天都将自己关注的网站一个一个打开, 像追剧一般去查看每一个页面,同时在没有chrome+adbock的日子去忍受某些残忍的广告;

这里就有一个“立场”问题了,“对用户有利” 就是这样的一个立场; 对用户有利不一定在开设网站、提供服务的”盈利机器“公司有利; 所以在它们的立场上, Rss并不是一个好的选择; 我记得在某个博客上看到大致这样一段话: “rss 订阅的宿命的根结在于--当今的互联网盈利是建立在用户数量”流量“和广告展示收入之上的;而rss无法追踪用户订阅的数量;活跃程度,也不那么容易展示广告;纵然它对用户有利”;在google Reader宣布关闭的时候, 像The Verge(一美国科技网站)撰稿人迪特-伯恩那样公开号召为rss而战的人也不再少数,但这对阻止rss的没落来说依旧是苍白的;

但是rss不会死,这是必然的;它依旧会成为很多科技工作者,媒体人的重要工具之一,不然也不会在google Reader关闭的之后;feedly Digg Inoreader等等替代的服务大量涌现, 像reeder这样mac平台上的付费阅读器卖的好像也是不错;还比如说我, 依旧在使用RSS订阅;

所以自己开发这么一款工具也就理所”当然“了; 当我通过简简单单的几行代码就取到了我预设的一个rss源(feed)的内容时, 一步步的开始做就变的理所当然了;开发平台因为我先前学习和工作的原因; 我选择了Qt/QML;因为这是我的视野范围内能见到且力所能及的最快构建出用户界面而不需要关系其它什么因素的一个平台了;加上自己又有知己熟悉的C/C++作为一个背景;

开始之前, 我就遇见了自己的时间有限;也和前同事S说过;有可能半路折腰的可能性;但是这些对于我个人来说都是可预见的范围之内的事情了。 而整个软件的结构和设计完全出于自己十分钟内拿着纸和笔在电脑桌上勾勒的草图;画完之后还让妹纸👀了一眼;妹纸翻了翻白眼就过去了; 之后一个周末之后你就看到了上面这个ui丑化后的样子;几乎和所有这类软件长的一样;就是页面看上去有点点像html+css写出来的一样;的确是这样;qml这种或者其它基于”ecmascript“脚本语言就是有这样的魔力和便捷性;所以整体做起来没有什么难度;但是它[QML]借助Qt的Meta Object却极其方便的整合C++和javascript。这不得不说是一次很好的尝试,虽然最后的结局不一定那么美好;但是至少对使用它的人来说,看上去还不错~~~;

之后就是展示;为了缩短开工的时间; 我用了内置的基于chromium的webengine来渲染页面内容;因为日常工作中开发的产品就是基于chromium的;qt又将它整合进了framework, 所以使用起来完全没有任何感到不适的地方; 这样好想就能工作了, 对!能工作了, 仅仅能工作了而已! 因为它直接通过rss返回的信息load页面;对于页面的质量,内容我们无法控制;这对于我来说是个不好的兆头,因为我讨厌很对原本页面带有的东西;

所以我开始google “正文提取” 相关的东西;看了一些理论上的论文/博客,也流浪了不少实现的库/模块,但是对于我来说整合它们和维护它们或者说自己也去造个轮子时间和精力都太大了, 而我目前还没有那样的时间和精力去完成;我不想因为这个将我开发XReader这个“玩具”的热情消耗完;所以我在尝试了js extractor && Html2Article && 哈工大的《基于行块分布函数的通用网页正文抽取》 && readbility; 最终, 因为时间和维护代码的关系, 我使用了readbility, 因为这样只要注册提供一个token,就可以使用了, 最后我也这么做的, 在上面画面中右上角的第二个图标就是所定义的阅读模式;

readability 阅读模式效果 从上面应该看出了什么来了;对!慢. 这样直接的结果就是体验不适很好;但是从国外的反馈👀的话;好想并没有国内这么糟糕;只能无力的吐槽一下国内的网络环境了;

但是优化它么? 并没有;因为按照之前的想法,因为我还想将inoreader整合进来;想着只靠着自己那几行简单的url请求和xml的简单parse就能长期使用可能非常难, 而通过inoreader的api,可以通过oauth认证和inoreader的api我可以坐享便利;技术上讲它没有难点;也行之有效,然而事实上,最后我却没有继续做下去了;

其中的原因有很多, 一方面自己的注意力在转移, 另外一方面我又在学习新的东西,nodjs/swift还有很多其它乱七八糟的东西,但是也发现了许多有趣和好的东西,比如说electron框架{ps: 用它来做rss阅读器可能能有更好的结果}还有些其它好玩的东西;这些渐渐的分散了注意力和精力;加上工作中涉及的chromium自己也许好好好的锻炼;所以投入到Xreader的精力就小了, 后面为Xreader做了两个小的扩展,则完全是为了打发几个小时的无聊而开发的;一个抽取bing搜索的壁纸;一个二维码编解码的工具,一个味youtubedl封装的GUI扩展小工具;

做下面这个bing这个完全是闹着玩的,仅仅是觉得bing搜索一般般,但是对于国内的网络情况,用用bing也没什么坏事,毕竟图片还不错是吧...

还有一个QR的编解码小工具,ZXing库和qr.js的组合品;对于我来说够用了{因为根本不用它,有手机对吧};所以做着做着,原来的XReader就变成了贪玩的游乐场了;最后就变成了今天这样的这个样子;我想很多个人作品都是以这样的方式结束它们的生命周期的吧;总的👀来,可能其中最大的一部分是自己出于对rss的喜欢吧, 过程中没有什么波澜,唯一让我多看了看的恐怕是关于正文提取算法和那几个库实现的效果;对于算法和数学,看上去有点像魔法,绚丽惊奇! 而自己又站在了观众席,而不是表演者;