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 条回复
SwingCoder
2017 年 4 月 20 日
新增:布局菜单下添加菜单项“隐藏 /最小化(本程序)”,快捷键: Ctrl + H 。
SwingCoder
2017 年 4 月 21 日
实现:自动合计或平均表格内某列的所有数字。详情:

◦此功能仅限于统计表格中某列的所有数字。
◦编辑器右键菜单-插入-自动合计与平均-合计本列的所有数字 /求本列数字的平均值。点击后自动在当前单元格插入计算结果。
◦本列非数字内容不参与计算。
◦如计算结果为整数,则自动给出该整数(不含小数位)。如计算结果包含小数,自动给出四舍五入后的前两位小数。
◦此功能配合“自动合计或平均本行的所有数字”,可使 WDTP 实现最重要和最基本的表格自动计算功能,从而某种程度上可替代 Excel , Numbers 等办公表格软件。
SwingCoder
2017 年 4 月 21 日
周末愉快!
WDTP (山湖录) 0.9.0421 公测版发布了:)

更新记录: http://underwaysoft.com/works/wdtp/updateList.html
介绍及下载: http://underwaysoft.com/works/wdtp/download.html
Akkuman
2017 年 4 月 21 日
@everedit #481 关于编辑区提到的体验,其实对于我自己来说,因为一直是写 markdown ,我以前用过各种 markdown 编辑器,但是用多了之后真的是不想每次打开都需要等个小会儿, markdown 对我而言就是快速编辑排版的,后来选择了 sublime 之类的代码编辑器写 md ,但是用了一段时间还是感觉打开让我暴躁,我后来直接选择 notepad++写了,因为它打开够快,直接上手开始写,说实话,我现在已经不关心即时渲染可见, md 写多了自己心里都可以渲染了,,,,,,(感觉说的有点夸张了),其实说这么多只是想表达,即时渲染其实并不是一个很必要的功能, wdtp 现在能满足快速打开的功能,打开速度我没测试过,但是感觉上和 notepad++没差,就用这个我觉得不错
SwingCoder
2017 年 4 月 21 日
改进:代码块中的部分字符(语言关键字)可能会当成文本标记进行解析,之前需要加反斜杠进行转义,目前不需要了。由于计算机编程语言实在太多,很难全部兼顾,因此,如您在使用中发现还有类似现象,请及时提供该语言的源码,以便进一步改进。
SwingCoder
2017 年 4 月 21 日
改进:正文中的斜体标记(*星号)的解析。此前,正文中的星号全部解析,如未遇到第二个匹配的星号,则其后所有内容都变成斜体。此时必须加第二个匹配的星号(如某些内容的格式需斜体),或使用反斜杠进行转义(如需显示出来)。改进后,以段落为单位处理单个星号,如果某个段落只有一个星号,则不予解析(无需转义即可直接显示出来);如果某个段落有多个星号,且星号的个数为奇数,则最后一个星号不予解析。

◦注 1 :此改进仅针对非连续的单个星号。粗体(双星)和粗斜(三星)暂保持原有的解析算法。
◦注 2 :针对部分内容设置斜体(单星包裹)、粗体(双星包裹)、粗斜(三星包裹)时, WDTP 推荐的做法是:先输入内容,而后高亮选择要进行格式设置的内容,直接输入星号,程序会自动完成所选内容的星号包裹(其它需要匹配的文本标记和中英文标点符号均推荐使用这种办法,既方便,又可确保星号匹配)。
SwingCoder
2017 年 4 月 21 日
改进:小幅度提升整站生成的执行效率,不再询问用户生成整站之前是否清理冗余数据。
SwingCoder
2017 年 4 月 22 日
完善:智库菜单弹出时持续输入字符、按退格键或 Del 键删除字符等操作的内部实现。
SwingCoder
2017 年 4 月 22 日
完善:编辑状态下,如果当前文档为“归档”模式,更多功能禁用,以防修改之。
SwingCoder
2017 年 4 月 23 日
改进:正文中行内代码标记(小撇号`)的解析。详情参见上面星号(*)解析的改进说明。
SwingCoder
2017 年 4 月 23 日
完善:计算表格某列的合计值或平均值的内部算法。
SwingCoder
2017 年 4 月 23 日
完善:插入时间轴功能,确保最后一个时间点不超出设定的总时长。
SwingCoder
2017 年 4 月 23 日
重构:编辑状态下将所选内容提取 /添加为当前文档的标题、关键词和摘要。
SwingCoder
2017 年 4 月 23 日
新增: 16 组快捷键(编辑状态下)。
◦F2 :自动合计本行的所有数字
◦F4 :自动平均本行的所有数字
◦Ctrl + F2 :自动合计本列的所有数字(限表格内)
◦Ctrl + F4 :自动平均本列的所有数字(限表格内)
◦F7 :插入时间轴
◦F8 :插入目录
◦F9 :插入尾注
◦F10 :插入当前日期和时间
◦Ctrl + 2 :弹出项目关键词表供浏览、提取或删减
◦Ctrl + 3 :插入图文混排
◦Ctrl + 4 :插入批注
◦Ctrl + 5 :插入返回顶部的文本标记
◦Ctrl + 6 :将当前所选内容提取为本文的标题
◦Ctrl + 7 :将当前所选内容提取为本文的摘要
◦Ctrl + 8 :将当前所选内容添加到本文的关键字列表中(如果尚无)
◦Ctrl + 9 :将编辑器外观(字体大小、颜色、背景色)重置为系统默认值。
◦注 1 : Windows 平台下的 Ctrl 键对应 macOS 下的 cmd 花键。
◦注 2 :截至目前, WDTP 已有快捷键 48 组(不计部分标点符号、文本标记的自动匹配与智能提示等方面的键输入)。
◦注 3 :添加如此多的快捷键实属无奈——几乎每次发布新版本后都有人提出要增加快捷键,似乎太多人已经深深着迷于这种并不人性化、比较耗费脑力、在完成一个工程或项目的全过程中,总体效率未必能提高多少的计算机操作方式。大量使用快捷键来完成常规操作,有其利的一面,但弊端也非常突出:一是“反人性”,特别是与人类操作工具来完成特定任务的本能行为模式与思维模式有冲突;二是势必给普通用户(特别是新用户)带来巨大的学习成本、心理压力和无谓的记忆力消耗。这一点在进行高强度和高密度的艺术创作与构思规划时非常要命;三是给今后 WDTP 向移动设备和触摸屏设备下的版本移植带来了麻烦,同时也增加了冗余代码;四是在 GUI 程序设计开发越来越深入人心的“去键盘化”等原则和大趋势下,此举坐实了 WDTP 这款主打简洁、高效与“新一代”的桌面 GUI 软件在人机交互、操作模式与功能架构等方面的落后、冥顽、媚俗与不堪,这真让我欲哭无泪……
SwingCoder
2017 年 4 月 23 日
改进:文本编辑器右键菜单的部分菜单项添加所对应的标记文本。
SwingCoder
2017 年 4 月 23 日
更新: Windows 平台下禁用标题栏右侧的最大化 /还原按钮。
SwingCoder
2017 年 4 月 24 日
新增:两个文本标记,,用于增大行间距(加大段落之间的留白)。

◦(|):双倍行间距。
◦(||):三倍行间距。
◦可连续并列使用或混用这两个标记,以进一步增大行间距。
◦编辑器右键菜单一并添加插入这两个标记的菜单项。
SwingCoder
2017 年 4 月 24 日
改进:重新生成当前页面后,如果主题编辑器正在编辑该页面的 html 源码,则询问用户是否重新加载之。
SwingCoder
2017 年 4 月 24 日
有用户询问 WDTP 如何使用语音输入文字。

: macOS 下,按两下 fn 即进入语音输入状态。为提高效率,可在“偏好设置-键盘-听写”中开启“使用优化听写”。更具体的说明请参见 Apple 官方文档: https://support.apple.com/zh-cn/HT202584

Windows 下,由于该操作系统目前尚无内置的编辑状态语音输入功能( Win 10 的小娜不算),因此 WDTP 暂不支持该平台下的语音输入。
mingyun
2017 年 4 月 24 日
楼主太勤快了

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

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

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

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

© 2021 V2EX