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

2017-02-04 23:36:24 +08:00
 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

31015 次点击
所在节点    分享创造
651 条回复
SwingCoder
2017-02-27 17:55:10 +08:00
WDTP 自发布后,陆续收到一些用户的反馈(包括我本人与部分用户的私下交流)。其中比较多的一个讨论是:感觉 WDTP 就是一个扩充了功能的 XX 型软件,比如:是文本编辑器、文艺作品和技术图书创作工具、桌面排版工具、笔记、前端开发、静页生成器等等中的其一。

集中答复一下吧。

不对。 WDTP 不是以上任何一种类型,虽然它的简介与宣传不可避免地与上述类型的软件纠结在一起(主要是便于不了解 WDTP 的新用户能够直观地理解)。

我们不妨这样想一下:人类借助计算机进行所有类型的生产、创作、写作,起源是什么?过程是什么?目的又是什么?……无论如何,都绝不应该是写了就写了。至少有以下三点必须要考虑和去做:

1. 写出来东西很简单,但是要写出来好东西,很难。没有长期的、深入的、足够的积累、实践与突如其来的灵感或被动诱发的激因,基本不可能。积累的最好办法同样是记下来(另外就是定期复习和经常深入思考)。这一点,我希望无缝融合进写作软件本身。以 WDTP 为例,多开一个笔记或个人知识管理类型的项目即可。

2. 写出来好东西也不难,但要把好东西完美地、贴合地呈现出来,很难。这是艺术必须借助技术来体现的最直接例子。不管任何人,完全依托于任何格式与样式封闭而强制的写作工具,都几乎不可能,充其量只是笼子里跳舞,更多只是令人昏昏欲睡的千篇一律,同质重复。但是,太自由与另类的控制模式、结果呈现也很难在短时间内被所有人认可与接受。因此,借助于简洁有力、应用广泛、技术成熟的 html 、 css 、 Markdown 、 JavaScript 等等,是个非常值得选用的解决方案。 WDTP 在这方面的体现就是样式与模板完全交由用户负责,您甚至完全可以给任何一篇单独的文档应用任何一个独特的模板和样式表(文档属性面板中,最多点两下鼠标)。只要具备这些方面最基础的技术常识,配合足够的想象力、动手能力和艺术化的审美取向,完全可以实现极端丰富、惊人的结果。请记住:一篇好的文档,不仅是内容本身优秀,它的“镜头语言(视觉呈现)”更应该优秀,二者至少应该是相得益彰的。这也必将是下一步所有类型的文档创作与发布的趋势与理念之一。

3. 写出来好东西不难,好东西也完美地呈现出来了,总不能就此了断,孤芳自赏或沉入海底。您得去管理,去组织,去传播,去和整个世界分享您的思想力、原创力、洞察力和创造力,而后不断完善、再次积累、思考和沉淀。这本身就是一个永不停歇的循环与迭代,用计算机行业的术语来形容,就是不停压栈的递归。传播和分享等方面,传统的出版、发表或手手相传当然可行(我上学时甚至抄过 N 本书!),只是效率太低,中间环节太多。建站或打包上传后供全世界浏览,是相对来说更方便的办法,更是时代的潮流。 WDTP 在这个方面,不得不变身为所谓的“静态生成器”……其实,要完成所谓的动态,也是很简单的一件事。即便挂数据库,也不难:)

上述方面,本来就应该是无缝一体的,根本不存在人为割裂与另行分类。

可能还有其他方面需要更多解释和澄清,但似乎又根本无需解释太多:)还是您自己慢慢体验吧,相信会有更多惊喜……
SwingCoder
2017-02-28 00:03:27 +08:00
- 完善:文本编辑器中输入的 js 代码不做多余解析与转换。
TheKiteRunner
2017-02-28 00:25:42 +08:00
关于重建关键词,有机会的话愿闻其详。学术期刊的检索引擎常以关键词作为重要检索依据,一些笔记软件包括博客的标签云也有类似功效。在我看来,关键词和标签,其实就是一回事。
SwingCoder
2017-02-28 07:41:25 +08:00
@TheKiteRunner 先生,重建(提取并统计)项目中的关键词,这个是底层设计之一,或者说一个接口。方便后期与此相关的应用层面的功能扩展,也方便以后接手此项目的人,或者贡献 PR 的程序员朋友在此基础上实现他们想要的有关功能。
SwingCoder
2017-02-28 07:41:53 +08:00
增补:重建项目关键词后,统计每个关键词的频次,所有重要关键词按频次排序
Spoter
2017-02-28 10:02:16 +08:00
小白用户表示没有中文
hezhile
2017-02-28 11:33:46 +08:00
在预览模式下(眼睛图标点亮),用鼠标选取一段内容后,使用系统( win10 )的快捷键 ctrl+c ,无法复制选中的内容,要用右键菜单“复制”才可以。
对于平常习惯用快捷键的用户,可能会有点措手不及的感觉。我第一次就是粘贴出来一大堆别的东西,吓了一跳。。。
TheKiteRunner
2017-02-28 13:18:28 +08:00
左右侧边栏内容也经常不能正常 Ctrl c
SwingCoder
2017-02-28 15:41:25 +08:00
SwingCoder
2017-02-28 16:04:23 +08:00
@hezhile 朋友: WDTP 的预览,目前的设计与实现是调用并借助操作系统的浏览器内核来完成。这个模块(界面)的快捷键, WDTP 没有做定义,也很难定义(因为它本身会吃掉并消化软件自身的事件,不向上转发)。也就是说,浏览界面如果使用快捷键,默认就只能使用它本身所支持的“原生态”快捷键。如果它本身也没有定义,那么有些约定成俗的快捷键就不起作用。以 Windows 平台下的 IE 10 和 IE 11 为例,它所定义的“原生态”快捷键及对应的模式非常“微软化”,弹出环境菜单后,按某个键。比如:选中文本,弹出环境菜单,按单个“ C ”键就是复制。等等。

我个人不建议在预览状态下做文档编辑方面的工作,预览的时候,也不建议用户凭经验、本能或强制,动用大脑的“快捷键”记忆与行为触发。这本身不符合大脑在阅读、浏览时的天生“模式”,会影响阅读或浏览的效果。这个模块的操作,我建议用户主要用鼠标、触摸或手势等更加“不费脑子”的本能行为来完成。

也就是说, WDTP 的读和写这两大主要场景,其操作的核心理念与行为习惯不应相同。

所有类型的计算机 GUI 软件的发展趋势之一就是“去快捷键”。目前,一个 GUI 软件,如果主要依赖快捷键来加速操作效率,甚至和软件的使用完全捆在一起,那么它本身在架构与设计方面一定是有重大问题的。快捷键操作,起源于命令行时代和上世纪 80 年代的早期 GUI 程序。这种不科学的权宜之计已经为害几十年了……我个人对此深恶痛绝。

下一步, WDTP 会逐渐取消所有快捷键。但是,在更方便、直观、人性化的模式没考虑好之前;在广大用户没有升级并适应新的软硬件及对应的操作模式之前,某些传统上已成约定的快捷键也可能会做一段时期的妥协。具体看情况吧。
SwingCoder
2017-02-28 16:11:10 +08:00
@TheKiteRunner 先生, WDTP 主界面左侧的文件树面板,没有做“编辑性或变更性功能”的快捷键定义(但是,支持 home 、 end ,上下光标键等,用来切换文档或切换文档的同时触发滚屏)。除此之外,所有软件自身的文本框,比如右侧属性面板中的设置项,默认均支持传统的快捷键操作。我刚才的回复里说到了,这个是目前不得已的妥协之一。

如果 WDTP 自身的文本框内无法快捷键操作,两个我能想到的原因:一是键盘焦点;二是操作系统(或其它程序)做了错误的干扰或拦截,比如某些词典软件、界面取词翻译软件等等。
hezhile
2017-02-28 17:19:19 +08:00
@SwingCoder
你好,在预览模式,如果是“调用并借助操作系统的浏览器内核”,那应该 ctrl+c 的快捷键还可以使用啊,我的 windows 安装的是 ie11 浏览器。平时习惯了在几乎所有可以用鼠标拉选文字的地方,都可以用 ctrl+c 来复制文字,所以有疑问是不是 wdtp 做了特殊处理。
SwingCoder
2017-02-28 20:37:29 +08:00
- 新增:一个重要的 GUI 组件(浮动面板)“项目关键词表”。
SwingCoder
2017-02-28 20:40:50 +08:00
@hezhile 朋友。浏览器内核与浏览器软件是两个不同的概念。一个内核,可以开发出无数个各种各样的浏览器。每个浏览器都可以自定义任意快捷键。

很显然, IE 开发团队,没有将 Ctrl +c 定义到内核中(这么做是对的)。
SwingCoder
2017-03-01 03:01:24 +08:00
- 新增一个定义(也是 WDTP 自定义的第一个术语):特征词。
- 数据统计面板中,为避免混淆,“关键词”文本标识改为“特征词”。
SwingCoder
2017-03-01 05:37:45 +08:00
- 取消:系统菜单项-重建关键词表。
- 封装此功能,仅供内部模块调用,不再直接暴露给用户。
- 系统会在必要时智能重建并完成一系列与当前模块有关的处理。
hezhile
2017-03-01 09:41:06 +08:00
@SwingCoder
你好,明白了,谢谢!
SwingCoder
2017-03-01 10:04:15 +08:00
- 改进:重建(提取)关键词的算法与实现。

大幅度提升执行效率的同时扩展了该功能的灵活性(可针对任意目录、文档或整个项目)。为下一步基于云端处理的大数据分析提供了基本接口。
SwingCoder
2017-03-01 10:08:03 +08:00
也可将此扩展后实现基于云端协作的有关功能(点对点、多点对单点,单点对多点,拓扑协作等等)。
SwingCoder
2017-03-01 10:39:49 +08:00
- 实现:文本编辑器中右键菜单可呼出“项目关键词表”(浮动面板)。
- 可在此面板中浏览本项目的所有关键词。高频词排在前面,出现两次以上者标明频次。为提升效率, 1 次以下的非标字符所构成的低频词不做排序。
- 当前文档已有的关键词,将在面板中高亮显示。
- 可点击面板中的每一个关键词。如果当前文档尚未添加该关键词,则自动添加。如已有(高亮者)则取消。
- 基于面板中的点击操作而选择或去掉当前文档关键词后,面板中该词的频次统计数字实时改变。

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

https://tanronggui.xyz/t/338138

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

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

© 2021 V2EX