Hello World
Spiga

Everpage:将Evernote的笔记展现在页面上

2013-03-07 01:00 by 老赵, 9162 visits

我这人尤其强调阅读体验,无论是作为文章的读者还是作者。假如遇到一篇格式糟糕的文章,我会完全没有耐心读完它。我对于阅读工具的展现格式也是各种挑剔,例如字不能太小,内容不能太宽或太窄,段落间距必须大过行间距等等,例如OS X上著名的RSS阅读器Reeder无法自定义样式,我甚至钻进其App内部修改其CSS文件。Evernote也是一样,无论是其网页版还是客户端,其阅读体验在我看来都比较糟糕,于是我在愤而花了差不多半天的时间打造了Everpage这个小玩意儿。简单来说,就是把一篇Evernote笔记显示在页面上。

就拿Evernote客户端来说,它无法放大字体——我不是说设置文字的大小,我是指“展现时”的默认大小。小而密集的文字容易让人疲惫,换行时也容易丢失视线。而Evernote网页版虽然可以用浏览器放大字体功能,但是现在的浏览器都是以“域名”为单位记录当前缩放尺寸,这导致整个Evernote网站的文字都放大了,而我只需要“正文”放大。更何况,Evernote网页版显示的代码片段和后续文字之间的间距过窄,这更不是调整文字大小能解决的问题了,如图:

Code on Evernote Web

我一直搞不懂为什么Evernote都已经这么久了还有阅读体验上的问题,尽管它有一个Evernote Clearly的浏览器插件,可以像Readability那样可以提取页面正文并进行格式化展现,但它最终只提供了“存入”笔记的功能,并不能“取出”笔记来读。有意思的是,Evernote网页版上的笔记并不能用Clearly来改善阅读体验,因为它会将笔记内容用AJAX加载出来并显示在iframe里,而目前各种正文格式化插件都不支持iframe。

其实网页版上的一些格式化问题可以用StylishGreasemonkey来“定向处理”,但最终我还是选择了创建一个简单的网页版的笔记显示功能,这样便可以用Clearly或Readability做进一步的处理了。

我本来想用Node.js来做这个简单的功能,但发现Evernote的Cloud API没有提供Node.js的SDK。Evernote的Cloud API并非使用简单的Restful接口,而是使用了Thrift框架,因此假如没有一个现成的Node.js代码生成器,我们很难调用其API(就跟调用SOAP一个道理),因此最终我还是选择使用ASP.NET(.NET 4 + ASP.NET MVC 3)开发了Everpage。

后来我又发现,假如Everpage要接入用户认证,则需要实现OAuth,而且还要像Evernote提交申请才能获得生产环境的API Key。我又不是想认真做一个功能完整应用,才不想搞那么多(还要SSL等等),而且这就无法在几个小时内完成了。还好,Evernote允许每个用户申请自身的Developer Token,使用Dev Token则可以访问自己账户下的信息,这对我来说就已经足够了。因此,假如您要使用Everpage,则最好是去申请一个自己的Dev Token,如下:

Developer Token

这个Token有效期为一年,中途也可以随时销毁或重新申请。有了Auth Token之后,就可以提供需要加载的笔记“标示符”了。例如所谓的笔记链接,也就是以“evernote:///”开始的一个字符串,在客户端里我们可以对笔记点击右键,并选择“Copy Note Link”:

Copy Note Link

您也可以从中剥取出笔记的GUID,当然一般来说没有这么做的必要。此外,我发现在Evernote的Web版里似乎较难获得笔记链接,不过我们可以在新窗口里打开笔记,并且复制出新窗口的浏览器地址:

Note in Separate Window

这样Everpage便能将笔记内容显示在页面上了,配合Clearly即可获得很好的阅读体验:

Read with Clearly

假如笔记中的图片显示不出来,则可能是您没有登陆的缘故,打开另一个浏览器窗口(标签)登陆您的Evernote Web版即可。建议勾选“Remember me for a week”,这样一周内均可反复使用Everpage,无需重新登陆。

Everpage的源代码都放在GitHub上了,您可以自由查看,需要的话尽管拿去,反正也没几行代码。首页前端有些耗费精力,别看这么简单,测试笔记标示符的正则表达式花了不少时间的,不过最花时间的还是将笔记内容中的<en-media />标签替换为<img />的部分了,找了点资料才了解到具体是怎么回事。当然整个开发才花了3、4个小时,所以其实也没多少事情。

假如您相信我不会偷您的笔记资料,也可以试着直接使用线上的Everpage页面。网站部署在Linode东京机房的虚拟机上,操作系统为Ubuntu Server,Web服务器是Apache,并基于Mono 2.10和mod_mono模块。可惜周日为了升级Mono而搞坏了一些配置,还顺手更新了一些前端插件,因此文章拖到到现在才发布。当然,每次打开笔记时都要直接去Evernote读取资料,因此速度总有些慢,一般也要花费2、3秒左右的时间才能打开一份稍长的笔记,在本地测试时更是需要20秒左右,将就着用吧。

对了,Everpage目前不支持Evernote China(印象笔记),尽管似乎也就需要替换个URL就行了,但是我不想支持,建议您也别用。

Creative Commons License

本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名赵劼(包含链接),具体操作方式可参考此处。如您有任何疑问或者授权方面的协商,请给我留言

Add your comment

20 条回复

  1. hooyes
    211.157.227.*
    链接

    hooyes 2013-03-07 10:12:47

    还木有用过 Evernote 呢。

  2. 链接

    老羊肖恩 2013-03-07 10:34:07

    老赵各种折腾啊

  3. Inchyea
    116.231.163.*
    链接

    Inchyea 2013-03-07 10:35:48

    老赵你好像有几处都把"登录"弄成"登陆"了;

  4. 老赵
    admin
    链接

    老赵 2013-03-07 11:34:54

    @老羊肖恩

    折腾乃生命之源……

    @Inchyea

    我略文盲,包涵……

  5. 御宅暴君
    218.0.129.*
    链接

    御宅暴君 2013-03-07 12:50:20

    老赵没遇到过Evernote同步障碍问题吗?如是则有什么可靠的解决方案?

    就是Evernote越来越糟糕的同步逼我换用印象笔记的。

    换说Evernote数据库被黑客成功入侵过,它的百年公司梦想就一下破灭了。

  6. 老赵
    admin
    链接

    老赵 2013-03-07 13:31:56

    @御宅暴君

    Evernote和印象笔记同步上的区别不就是连接到不同网络嘛,我没遇到过问题。

    还有被黑客入侵过又不影响它成为百年老店,真要说起来印象笔记还是故意暴露给某些客看的呢。

  7. 御宅暴君
    218.0.129.*
    链接

    御宅暴君 2013-03-07 21:50:58

    @老赵

    对于那些真正把Evernote当作“第二大脑”的高级用户就不一样了,Evernote还没走到十年头就爆出这样的安全事故,于是大多高级用户就不会再完全相信Evernote的安全,另一方面也说明了Evernote公司本身的安全意识不力,终究还是没有做到百年公司的觉悟的。

    话说怎么理解“真要说起来印象笔记还是故意暴露给某些客看的呢。”?我希望能看到实质的理据。

  8. 老赵
    admin
    链接

    老赵 2013-03-07 22:29:18

    @御宅暴君

    没事,我没打算说服你。我从来不会完全相信Evernote安全,但也不觉得这会对我使用构成什么问题,无论是事故前还是事故后。觉得Evernote安不安全是你自己的事情,你真觉得印象笔记比Evernote更安全我也无所谓,换呗。不过你也别代表大多高级用户,我自认也不低级。当然我也没你这么懂怎么做百年公司,毕竟百年公司十八摸又不是我建的。

    至于印象笔记有没有“故意暴露给某些客看的”,实质理据没有,同样信不信由你。我凭的是接触互联网那么多年后的直觉,当然你可以有你自己的直觉。

  9. 御宅暴君
    125.127.154.*
    链接

    御宅暴君 2013-03-08 19:15:41

    @老赵

    你似乎还没充分认识到“第二大脑”的重要意义,这个概念完全就是字面上的意思,也是Evernote不同于其他笔记软件的核心特色,用户越是提高使用Evernote的幅度,意味着它越来越成为ta的第二大脑,且高同步地拷贝了ta的记忆。于是如果Evernote数据库被攻陷,对于那些已经把Evernote上升到第二大脑的高级用户来说,如同脑袋里不利公开的记忆被曝光得干干净净,且具备了被上传就永久不可被删除的属性(除非发生全球级规模的EMP现象这样类似的灾难事故);如果Evernote数据库发生丢失数据问题,就又好比高级用户的第二脑袋活生生地被摘掉一样。再说,我在“高级用户”前面很明确地用到了“真正把Evernote当作’第二大脑‘”这样的修辞,无论从理性还是感性上来说这样却不担心安全事故的高级用户是不存在的,否则只能被当即使自己的脑袋被摘走也无所谓的怪人。

    关于百年公司,我是这么认为的,既然肯定了Evernote想达到充当用户的第二大脑的目标,就必须提供可以让用户放心的极高安全机制,好保护用户不担心ta的第二大脑发生任何意外事故。并且,一旦却发生了很严重的安全事故,那么Evernote就会发生极大且不可逆转的信用损失,因为从博弈学来说就是这样,好比一个国家对全世界各地投掷出了N个核弹的话,世界上其它国家就永久性地不会再信任这个国家,直到这个国家被歼灭掉,同样地,Evernote做不成百年公司了,只能倒闭。

    关于直觉,智者相信科学的预言,愚者相信亲历的经验。一句话,你关于印象笔记的评论没有提供可被证伪的机制,对预言自然也没有高明的帮助。

  10. 老赵
    admin
    链接

    老赵 2013-03-08 19:18:23

    @御宅暴君

    真的,您不用解释那么多,核弹都出来了。真喜欢印象笔记就去用呗,没人拦着您。

  11. cruoshui
    115.170.119.*
    链接

    cruoshui 2013-03-09 16:17:30

    @老赵

    你的这篇博客在google reader中显示为“未知标题”,没有链接没有正文。

  12. 老赵
    admin
    链接

    老赵 2013-03-09 16:55:17

    @cruoshui

    不是吧,我也用Google Reader,也订阅了自己的博客,没发现这个问题。

    你用客户端了吗?用什么客户端?我用Reeder和Newsify。

  13. cruoshui
    115.170.71.*
    链接

    cruoshui 2013-03-10 10:12:37

    @老赵

    没用客户端,就是网页版的阅读器,浏览器是Chrome。 仔细看了下,在“所有条目”分类中显示是“未知错误”,在单独的“老赵点滴”分类中显示正常

  14. 老赵
    admin
    链接

    老赵 2013-03-10 16:20:23

    @cruoshui

    这样啊,那么估计是Google Reader的Bug了。

  15. RR
    111.193.127.*
    链接

    RR 2013-03-10 22:43:53

    有在ubuntu和apache下配置mono的教程吗?网上找了几个都太老,配置持续失败中……

  16. 老赵
    admin
    链接

    老赵 2013-03-11 00:24:22

    @RR

    就是官方文档,一点不老,好几年没变化了。

  17. oklai
    121.14.96.*
    链接

    oklai 2013-03-11 15:08:08

    很棒的想法,Evernote web阅读体验确实很差,搞不懂他为何不弄“Clearly”一些。 现在everpage还是是简单了些,如果能像第三方Google Reader阅读器一样就好,直接读取到笔记,分类、搜索功能,再配合Clearly皮肤,那就完美了。

  18. 链接

    nullne co 2014-03-21 21:01:37

    略吊
    。。。哥们多写点吧 jandan.net 上面则是 你的太短。。。

已自动隐藏某些不合适的评论内容(主题无关,争吵谩骂,装疯卖傻等等),如需阅读,请准备好眼药水并点此登陆后查看(如登陆后仍无法浏览请留言告知)。

发表回复

登录 / 登录并记住我 ,登陆后便可删除或修改已发表的评论 (请注意保留评论内容)

昵称:(必填)

邮箱:(必填,仅用于Gavatar

主页:(可选)

评论内容(大于5个字符):

  1. Your Name yyyy-MM-dd HH:mm:ss

使用Live Messenger联系我