WDTP:一款“三合一”的写作工具和桌面版静态网站生成器

2017 年 2 月 4 日
 SwingCoder

谢谢 Akkuman 和 CoderZh 两位朋友的介绍和推荐,让我得知了 V2EX 这个尊重原创,热爱分享与创造的好网站。我想在此和大家分享一款我刚刚开发完成的软件(目前是内测版,正在不断完善更新),如有不妥,请管理员批评指正并谅解。

WDTP 是一款“三合一”的另类写作工具与桌面 GUI 单机性质的静态网站(博客)生成器,这个项目的主页是:

http://underwaysoft.com/works/wdtp/index.html

WDTP 昨天首发于国内的凯迪论坛,我将原帖复制粘贴在此吧。


WDTP :源于凯迪论坛的又一款写作利器

2016 年年初,我在凯迪论坛看帖的时候,意外地发现了一座高楼,所讨论的话题是我前几年很感兴趣的。于是开始关注,时不时也掺和几句,然后就和几位骨干帖友混了个脸熟——其中一位是陈坪先生。有天我去拜访他的博客,浏览文章的时候突然冒出一个 idea ,可能更像是一些自我觉察,大致如下:

诸如此类。相信其他一大批小众也会有这些想法。说实话,以上这些真心不好用,尤其是学习与使用成本,还有使用时的心情,数据的随时检视、备份、管理与迁移,远程修改、调试与刷新等等。很折磨人。它们或许非常适合更广泛的一大批用户,某些情况下肯定也是非用不可,但很多时候确实不再适合我,也没必要时时动用这些怪兽级的庞然大物。

更进一步,笔记、写书、博客、网站这几件看似互相割裂的事,其实完全可以也早就应该简简单单、清清爽爽地合而为一了。而写作时,“内容与样式分离、样式与模板分离”等程序员最熟悉的理念与常规做法,这么多年以来,我为什么没有在自己的文字写作过程中更深入地理解和贯彻呢?有点不应该。

想法中还包括了其他。比如:“静态网站生成器( Static Site Generator )”,这东西近两年在喜欢尝鲜的技术类博主中很受推崇。有媒体放言:“下一批互联网大事件中,新型的静态网页及其生成将位列其中”……据我所知,这类程序目前至少上百,采用了各种各样的编程语言,它们中比较知名的有: Jeklly 、 Hugo 、 Hexo 、 Octopress 、 Pelican 、 Hyde 等等。尤其是 Jekyll ,背靠 Github 这棵大树,几乎一夜之间风靡全球。我对此做了一些肤浅的调查,一个匪夷所思的事实是:就我所接触到的“对口者”,竟无一例外——清一色的命令行程序!没有 GUI ,没有文本编辑器与可视化的 TreeView ,有的居然还要安装整个语言环境或依赖库。动辄百兆以上,太让人愤慨了。大不说,还麻烦。无论获取、安装,还是设置、使用,都不直观,也不方便,对一般人来说门槛有点高。这就势必将更广泛的用户群(比如普通的写作者)排斥在外,使他们很难享受到文本标记语法、内容 /样式分离、高自由度和灵活随意的静态博客等另类而好玩的写作 /分享模式。

既然尚无,那迟早就会有人下手,不妨等等,于是我就把这个事搁置了。此期间,我曾加入一个推广某静态生成器的国内群,也在 Stack Overflow 上转了转,四下打探一番,无果。有人曾抱怨过,但最终也是不了了之。

浏览陈坪先生的文章时,以上想法突然变得强烈起来。我琢磨了一下,这个事技术含量虽不高,但并不轻巧。脏活总是让同行包揽始终让人过意不去,干脆我自己趟一次浑水,再造个轮子吧:写一款跨平台且简洁清爽的桌面版静态网页生成器,顺便糅合上面提到的那几个功能,尽量将它们捏到一起,争取做的轻巧点、优雅点,先把基础和架子搭起来,后续事务和细化处理慢慢再捯饬。

琢磨的七七八八后,就立项动工了。关于编程语言的选择,脚本不考虑,平台相关的谢绝,数据库滚蛋。这么一来,似乎只有 Java 或 C++了。 Java 一贯不是我篮子里的菜,就 C++吧。

然后……然后就是今天 WDTP 内测版的首发,地点就在凯迪论坛的猫眼看人版块。可能有点唐突违和,请允许我解释一下:一方面这个程序的诞生确实与凯迪有直接的关系;另一方面此处风云际会、藏龙卧虎,能写、会写、喜欢写的人非常多,给这批笔友提供另一件顺手的写作工具应该是一件有意思的事。此外,似乎还没有哪位同行在这样的大杂烩论坛里做过这种类型的“主播”。这事有挑战性,风险并不小。但我想试试。

产品的首发式上,一般都会真真假假、虚虚实实地谈谈愿景、希望什么的。我这会儿有点忐忑,不敢满口火车。现在最大的希望是:值班编辑此刻心情不错,不删改这个贴,也不打算将它转移到凯迪的其他版块里。

关于程序的授权方式和性质, GPL v3 ,开源免费。不光凯迪的网友,全世界任何个人和组织都可以随意使用、传播、解剖源码或 PR 贡献,也接受来自任何方面的捐助。这些没什么需要多解释的。该有的,《授权协议》里都提到了,不够我再加几条:)

项目开工后,中间曾停工 3 个多月。 2016 年我周围发生了几件悲伤的事,让人心碎,这几乎导致了项目的夭折。费了很大劲我才将自己振作起来,硬挺着把 WDTP 的第一个版本敲了出来。活干得如何,横竖不论,交给诸位评说。目前 Bugs 肯定一堆,代码急需规整,很多细节也亟待完善。我实在不好意思说自己是一个敲了整整 30 年代码的老一代苦逼程序员——面老色衰,人狗远之。大江东去,属于我们的时代过去了……滚出这个行业之前,尽力散发点余温吧。希望热情还在,理想还在,更希望能听到真实而有价值的反馈与意见,以及各位同行的 PR 提交、无私贡献。

可能有人对大部分开源软件的维护更新感到不放心。我在此表个态吧:未来很长一段时间内,我可能每天都要用它,而且是重度使用。无论作为设计人、开发者、项目的第一责任人,还是作为用户之一,我肯定不愿意为了它而过分难堪或郁闷,更不会让它在七歪八扭、一团乱麻的失控状态下无果而终。

关于 WDTP ,还有几个必须要感谢的人——期待未来会更多,以后有机会一定专门提及。

That's it. 谢谢所有看了此贴的人,谢谢即将成为 WDTP 用户的每一个人,谢谢陈坪先生和那个高楼长贴,以及该贴中所有让我感到温馨的人。

今日立春,使用愉快!

SwingCoder 2017.02.03 于凯迪论坛

本文已发布在凯迪论坛的猫眼看人版块: http://club.kdnet.net/dispbbs.asp?id=12102372&boardid=1


欢迎大家下载试用并提出宝贵意见!

谢谢!

SwingCoder

35283 次点击
所在节点    分享创造
651 条回复
everedit
2017 年 4 月 9 日
既然编辑工具是该软件的定位之一的话,那么编辑区的体验还是很重要的。目前的版本的编辑区,还有很长的路要走,可以参考一下 ulysses , 或者我的 Markdownmate ,或者 V2EX 右侧广告的那个石墨 :-)
izgnod
2017 年 4 月 9 日
@SwingCoder WDTP 是否可以支持一些 MAC 上的快捷键功能,例如: Ctrl+E 到段尾, Ctrl+A 到段首部,这样编辑的时候会方便很多。
SwingCoder
2017 年 4 月 9 日
@everedit 嗯?什么路?同质和模仿之路吗?呵……我想我不太可能参考任何现有的同类软件——至少 WDTP 3.0 发布之前:)在这个项目立项之前,我对这一块有一点肤浅的了解,但是除了几个巨无霸,亲自用过的极少,毕竟几十年来几乎每天都面对电脑,有点空闲就巴不得立刻摆脱它,真的没有太多时间和精力了解更多。目前这个阶段,更没有,也更得刻意远离任何同类项目,至少得避嫌,对不对?呵……目前,很多方面,包括计算机、程序等本身,确实是笼子里跳舞,很多模式约定成俗,一下子改变确实困难,包括我自己的思维模式和行为习惯,还有我一直很陌生的国内的开发与用户环境……另外就是开发时的语言与库的选择与整个项目几乎完全的从无到有。 WDTP 发布后,一直在国内折腾,确实给我上了好几堂课……一切,慢慢来吧:)很多事需要一个过程,欲速不达。

谢谢建议(虽然看起来似乎更适于私下 Email 性质的交流),和顺风广告, It's free :)
SwingCoder
2017 年 4 月 9 日
@izgnod 朋友,谢谢您的建议。关于快捷键,我似乎在这个帖子里与网友有过不太深入的讨论(印象中就是 TheKiteRunner 先生)。简单说一下吧。我的很多观念与看法可能与常人不太一致,欢迎批评指正。

快捷键属于上世纪 80 年代遗留下来的软件工程界路子走偏之后的“副产品”之一,其弊端远远大于益处。它的历史使命基本已经完成。下一步,桌面软件的发展趋势是(也应该是)去键盘化、去快捷键化。但是,目前,很多时候不得不妥协,特别是 WDTP 这种内容生产为主的软件。陆陆续续, WDTP 已经添加了一大批快捷键(可在开发文档中找到具体的分配和定义),这些,我看起来都觉得恐惧……

不管如何,您的建议我会认真考虑……但是, Ctrl + A 这个不能作为跳到段尾。我们必须得兼顾几个平台下的键盘布局。 Apple 键盘有 Ctrl 和 cmd ,可扩展一倍的快捷键。但是 Windows 和 Linux 等系统就只有一个 Ctrl ,默认, Ctrl + A 是全选……
SwingCoder
2017 年 4 月 9 日
修改并澄清 mac 平台下的一处快捷键分配(编辑器右键菜单, ctrl + H 插入超链接的快捷键描述)
SwingCoder
2017 年 4 月 10 日
实现:主题编辑器(代码编辑器)的搜索功能。详情:

◦主题编辑器右键菜单中添加一个菜单项“搜索内容”,快捷键: Ctrl + F 。点击后其左侧出现一个标注式搜索悬浮窗。
◦搜索窗口中的关键词输入文本框,其内容为当前所选择的编辑器内容。如果执行搜索之前未选择任何内容,则为系统剪贴板中的文本数据。
◦点击“查找上一个”或“查找下一个”进行搜索。找到后,编辑器自动高亮并选择该内容。没找到则给出文字和声音提示。
◦点击或触摸搜索窗口之外的任意屏幕区域可关闭该窗口。
SwingCoder
2017 年 4 月 10 日
统一 mac 和 Windows 两个平台下插入文本超链接的快捷键( Ctrl/cmd + E )。
SwingCoder
2017 年 4 月 10 日
Windows 下新增一组快捷键: Ctrl + H (隐藏 /最小化本程序),使之与 macOS 平台下的系统级隐藏本程序的快捷键保持一致。
SwingCoder
2017 年 4 月 10 日
实现:主题(代码)编辑器以拖拽式调整调色板的 GUI 方式实时设置颜色值。详情:

◦修改 css 样式表等主题文件时,可鼠标双击以高亮选择某个颜色值。
◦选择后,点击主题编辑器右键菜单中的“设置颜色”。编辑器左侧将出现调色板悬浮窗。
◦调色板的顶部显示当前颜色,鼠标在颜色区、右侧的色柱区、下方的 RGB 推子区等位置拖拽可调整颜色。
◦所调整的颜色显示在调色板的顶部并实时写入当前主题文件中(覆盖先前高亮选择的颜色值)。
◦颜色设置完毕,点击或触摸调色板悬浮窗之外的任意屏幕区域可关闭之。
SwingCoder
2017 年 4 月 10 日
完善:进入主题(代码)编辑模式时,主界面自动布局(隐藏文件树面板,代码编辑器扩展宽度)。退出代码编辑模式时,布局恢复。
SwingCoder
2017 年 4 月 10 日
代码编辑器中选择颜色值之后,右键菜单弹出调色板实时设置颜色时,程序会自动将当前高亮选择的颜色值置入操作系统剪贴板中。此举可实现:修改颜色后如不满意,可直接将原来的值粘贴回去。
SwingCoder
2017 年 4 月 10 日
实现:主题编辑器中可直接插入模板标签。详情:

◦主题编辑器右键菜单中新增“插入模板标签”,该菜单项仅在当前编辑模板文件时才可用。
◦“插入模板标签”下的子菜单项即 WDTP 所提供的所有区模板标签。
◦子菜单项并不直接显示标签文本,而是标签的文本描述,一看便知其作用与意义,使用户设计模板插入标签时更加方便直观。
SwingCoder
2017 年 4 月 10 日
V2EX 把尖括号连同其中的 body 给吃了:)

上面回复中第二个列表项的原文是:“插入模板标签”下的子菜单项即 WDTP 所提供的所有 body 区模板标签。
TheKiteRunner
2017 年 4 月 10 日
您好,原本已经说了在这个楼里消失,今天在 V2EX 首页上看到这个帖子活了。我的确有做得不对的地方,最后您能理解,我真的很开心和感激。

不再使用 wdtp ,还是非常感激您的辛勤创作让我看到另一种生活方式,还有对我在不少方面的点拨。

好聚好散也挺好,希望您能够继续发挥自己的创造力,也希望我能够向您一样努力地实现价值。
SwingCoder
2017 年 4 月 10 日
完善:如当前模板文件中已使用了要插入的标签,则给出提示。
SwingCoder
2017 年 4 月 10 日
关于如何修改、制作、备份、发布、加载主题,可参见:
http://underwaysoft.com/works/wdtp/faq.html
hing
2017 年 4 月 10 日
@SwingCoder 很钦佩你的创作和精神!

我觉得现在的安静模式并不能让人在安静的状态下码字,
可以增加一个只有编辑区域并且全屏化的沉浸模式吗?

WDTP 几乎满足了我对信息的三个基本需求:保存、消化、传播,
这三个需求也刚好有点对应它的中文名:山、湖、路。

另外如果能是 Web 端就好了,
好处是一样能全平台通用而且还可以随处随用!
不过这样就不符合 WDTP 的定位和理念了。

感谢!
SwingCoder
2017 年 4 月 11 日
@hing 朋友,谢谢您的关注与理解。

全屏编辑模式,对大多数横屏摆放的桌面机来说,太宽,并不利于有一定篇幅的文档撰写与编辑。时间稍长,眼睛和大脑的负担相当重,会很疲劳。 WDTP 立项后,我做了一些调查了解,查阅过一些比较新的相关论文,这个问题曾被业内高度重视和争论过。我在这个帖子里,就此问题也和网友有过讨论。

一个比较好的解决思路: Windows 10 和下一步将会推出的 Linux 版本,在这两个平台下新建一个全新桌面,这个桌面只放置 WDTP 这一个程序,切换为安静模式。 macOS 平台下,可先进入全屏(独立桌面霸占),而后切换为 WDTP 的安静模式,此时,背景是全黑的,感觉很不错。

大屏移动设备上,这个问题基本不存在。我在 iOS 平台下试跑 WDTP ,竖屏安静模式下的效果非常完美。

基于浏览器的版本,我在立项时也考虑过,最后否了。主要是执行效率、前端开发语言本身的局限性、程序的稳定性、服务器维护管理、客户端数据读写和浏览器对各类规范的支持、统一程度与发展趋势等等,未知因素和不好把握的因素太多。特别是执行效率(目前用 C++其实也是妥协,我个人很多时候对 C++的效率和简洁性都不满意)。

下一步如果时间和精力充足,用户数量较多、较稳定,我会陆续给 WDTP 添加更多绝无仅有、先进而新鲜的功能,实现我个人在此方面的一些比较另类和前卫的想法。这些都严重依赖于执行效率,对开发语言、算法实现、数据吞吐量等方面的要求相当高。也相当于扬长避短,最大限度体现单机 GUI 程序的优势,颠覆一些习惯性的认知与整个业内普遍存在的错误做法。目前其实也可以上,但是我想先给更多普通用户一个适应过程。慢慢来。否则,可能大家接受不了,反而对 WDTP 的下一步发展起到负面影响。
SwingCoder
2017 年 4 月 11 日
完善:编辑模式下,弹出智能提示并自动补全后自动删除刚刚输入的智库关键词。
SwingCoder
2017 年 4 月 11 日
完善:编辑模式下,弹出智能提示菜单后自动高亮第一个条目,以方便直接回车完成自动补全。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://study.congcong.us/t/338138

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX