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

35276 次点击
所在节点    分享创造
651 条回复
SwingCoder
2017 年 3 月 1 日
@hezhile 朋友,好的:)祝您使用愉快!
有任何问题,敬请随时垂询。我看到后一定会在第一时间认真回复。
TheKiteRunner
2017 年 3 月 1 日
@SwingCoder 想象了一下~请问关键词是否考虑支持自动补全,比如关键词是印度史,打入印度,能否出现下拉列表,方向键加 tab 补全
SwingCoder
2017 年 3 月 1 日
@TheKiteRunner 先生,您说的对。输入文本时,智能提示和自动补全是很不错的功能。在一些特定场景和需求下,能大大提高工作效率。这个功能的实现也不复杂。数据来源可以基于本机或云端大数据分析筛选后的关键字,也可以基于 WDTP “缩略语”这种架构模式,还有其它一些匹配模式……

但是,内容型的、基于人类自然语言的文字创作 /写作,智能提示和自动补全等功能最好慎用,它会严重干扰并破坏大脑在处理并递进写作任务时的“天然流程”,也就是说,这个功能是典型的“双刃剑”,不太利于 WDTP 所突出的这种自然语言型的文字创作,它不是必需品。这个功能最适合的就是输入过程中大量存在“小范式”、自然语言流畅度差、要求精确匹配、多处需要“零星重复”等等。比如编程、错别字校对、一些难记难拼的人名、地名等固定名词的输入等等。但是,这些都是很传统、很成熟、很常见的模式,几乎人人都能想到或实现,用户也是见多不惊,我感觉有点提不起劲去捣鼓这个:)即便下大力去搞,与此相关的几乎所有方面也不太可能超越这方面做得很厉害的团队。

现在我还没想好如何把这个功能更先进的“变异模式”运用到 WDTP 中。传统的这种模式不太想采用。我的 memo-list 中有一项是关于文艺作品创作时的“提示与补全”,非常另类,又一个绝无仅有……目前还没仔细琢磨,稍后搞到这一块时我再仔细想想。如果大家有更好的模式或点子,欢迎不吝赐教。
TheKiteRunner
2017 年 3 月 1 日
@SwingCoder 是的。使用体验增强既可以让写作变得更有趣,也可能容易陷入奇技淫巧,不好平衡。不过有时候想,写作有时候是思考的反映,单纯脑力思考有容易触到想像力和智力的边界,所以诉诸于文字、语言和画面。同样的道理,文字的核心是思想和内容,笔和纸只是工具,更好的笔纸让写作更有仪式感,有时候甚至使用不同的笔来写作。希望您能创造出一种新的文字和工具耦合方式。
SwingCoder
2017 年 3 月 1 日
- 实现:文件树面板,项目和目录的右键菜单可呼出“该目录的关键词表”。
- 可在此面板中浏览任意目录下的所有文档与所有子目录的关键词。高频词在前,标明频次。
- 点击某个关键词,所选目录下包含该关键词的文档与子目录高亮显示。
- 也就是说,不但可利用此功能查看分类关键词,还可快速精准地搜索与定位。
- 与“数据统计”中的特征词搜索有所不同的是:特征词不一定是关键词,搜索范围为文档内容,不搜索文档属性中的关键词部分,也不搜索目录;而关键词搜索,则包含文档与目录,搜索范围仅限文档属性和目录属性中的关键词,不搜索文档内容。二者有本质的区别。
- 至此,仅就搜索而言, WDTP 已有五种模式,分别针对五种不同的需求与场景。其实根本不必在意多少种 XX 模式,当前处理环境下,本能操作即可。
SwingCoder
2017 年 3 月 1 日
@TheKiteRunner 先生,马上我会放出 WDTP 的另一个新功能。关于写作、创作,它背后的东西,直指最前沿的脑神经科学。特别是前几年奥巴马启动人脑计划后,这方面的成果层出不穷。这是美国继全球基因计划后,以国家名义启动的第二个无比庞大的、影响整个人类社会极其深远的计划。

这个计划,在阅读、写作与文字创作的实质(至少之一)方面迈了很大一步。所谓大道至简,真的诚哉斯言……这个东西也可以说是一切文字类作品创作的起源、过程、媒介与结果。当然不仅仅限于此,还包括对众多领域,比如语言学、二语习得等,带来的震动与启发。

究竟是什么,我如何将它“庸俗地变相”体现在 WDTP 这个软件里,很快揭晓。先卖个关子:)
SwingCoder
2017 年 3 月 1 日
哦,可能要等等:)关键词这一块的架子刚搭起来,我想再实现一个应用层的小功能。作为 WDTP 的第六种“检索模式”:) 而后将整个项目大概滤一遍,简单清理一下。然后再启动刚才说的那个新功能……

一旦启动会很快,还是先把架子搭起来,顺便给出应用层的一两个小功能,做个简单的示范,以方便各位同行、老师在此基础上扩展自己需要的功能。
SwingCoder
2017 年 3 月 3 日
项目属性设置中新增一个设置项:是否启用关键词索引
SwingCoder
2017 年 3 月 3 日
- 新增:模板文件: keywords.html
SwingCoder
2017 年 3 月 3 日
- 新增:模板标签:{{keywords_howMany_column}}。显示多少个关键词,每行显示几个。示例:
- {{keywords_0_6}}: 显示所有关键词( 0 ),每行显示 6 个( 6 列布局)
- {{keywords_50_3}}: 显示前 50 个高频关键词,每行显示 3 个( 3 列布局)
ossphil
2017 年 3 月 3 日
windows 和 mac 都支持了,会考虑 linux 吗?
SwingCoder
2017 年 3 月 3 日
简化并重新设计:“关键词索引”生成。取消本日新增的关键词模板和模板标签。
leave01
2017 年 3 月 3 日
作者你好,我发现一个问题,就是 Mac OS 下的编辑器无法输入中文,但是预览可以看到,编辑模式下中文会乱码:
![alt]( https://image.hongkong.skroot.cc/images/2017/03/03/ac9127b8c541e31d7cd5ec5fed57e114.png)
leave01
2017 年 3 月 3 日
还有菜单里 UI Language 不能选择,否则界面会乱码
SwingCoder
2017 年 3 月 3 日
@ossphil 朋友,感谢咨询。最近有多位朋友询问, WDTP 是否考虑发布 Linux 、 Android 、 iOS 等版本。集中回复一下吧:)

会的。 WDTP 在整个设计、编码、调试、维护等过程中,均考虑到了五大主流平台下的跨平台运行。也就是说,它是典型的一套代码、不做任何改动,分别编译即可实现跨平台运行的程序。不仅如此,所有平台下的界面外观、操作模式等均保持百分百的绝对一致(除非系统本身的差异性,比如标题栏按钮靠左还是靠右,界面字体渲染的效果、系统字体、浏览器内核等等。注意,不是 WDTP 自身文本编辑器的文本渲染。这一块的渲染,为了最大程度优化用户在创作和编辑时的体验, WDTP 用的是自己的独特算法,为进一步提升渲染效率,过一段时间我打算借助并使用 OpenGL 等开源技术来加速。我不敢说目前这个渲染算法、效果与性能比 macOS 和 Linux 的更好,但绝对远超微软 Windows 的 ClearType ,至少比它先进了整整一代)。

由于时间和精力有限、人手不足,加上 Linux 桌面发行版本实在太多太杂,用户太少,因此目前暂主推 macOS 和 Windows 这两个更“主流”的平台下的版本。以后,待时机成熟时,我会根据情况适时推出 WDTP 的 Android 平板版本、 iOS 大屏版本和 Linux 桌面版。

实际上,已经有多位程序员朋友 Clone 并自行编译了 WDTP 的 Linux 和 iOS 版本。下面的链接(图片)所显示的就是 Akkuman 朋友自己编译的 Linux 版:

http://qc-cache.kdnet.net/upload/2017/03/03/1488543779992183.jpg?imageMogr2/thumbnail/600x
SwingCoder
2017 年 3 月 3 日
@leave01 朋友,感谢反馈宝贵意见。 macOS 系统下请确保安装了“微软雅黑”中文字体。我的印象中, 10.10 以上版本,好像是默认自带的。如记错,请谅解:)

已经有朋友反馈,雅黑在 macOS 下不好看,我正在考虑是否将 macOS 下的中文字体换成系统默认的……
leave01
2017 年 3 月 3 日
@SwingCoder 刚刚使用了一下,感觉 Mac 版还不够 Cool ,而且界面和生成后的样式有点「古老」,何不尝试用 node 和先进的前端技术完成呢?界面是用户体验的核心。
SwingCoder
2017 年 3 月 3 日
更清晰的原始大图:
http://qc-cache.kdnet.net/upload/2017/03/03/1488543779992183.jpg

图片来源是 Akkuman 朋友自己用手机拍摄的。
SwingCoder
2017 年 3 月 3 日
@leave01 朋友,感谢反馈宝贵建议。

软件自身的操作界面,也就是 GUI 设计,这个是众口难调的事。目前 WDTP 只是一个框架和轮廓,很多细节有待今后不断迭代和完善。软件 GUI 设计方面,底层架构已经打好,设计师拿来样图后,最多两个工作日即可全部实现。但是,要请到这颗星球上最顶级的 GUI 设计师,花费巨大。 WDTP 是开源项目,没有一分钱预算和投资。这一块我只能借助于有爱心和兴趣的职业 UI 设计人员,希望他们能协助我。

预览或网页的渲染效果,格式与样式,这一块 WDTP 是完全开放的,是用户的责任。这个更是无法统一,也不可能统一,我个人更反对统一。 WDTP 本身提供了方便简单的模板机制。软件自带的模板,仅仅是个示范。
SwingCoder
2017 年 3 月 3 日
前端这一块,只要服务器支持,可以使用任何计算机语言(脚本语言)来实现您的思想和预想。挂数据库也没有任何问题。需要底层接口或软件提供更方便的 API ,请告诉我。我考虑后感觉可行,一定及时加进去。

程序本身,您可以看源代码,很多地方连 C++语言自身的“坑”和效率不如 C 的地方,都尽力绕过去了。我是搞跨平台工业级 DSP 处理出身的“老一代”软件工程师,对程序的简练、执行的性能等诸多方面,有种变态的极致追求。说实话,很多时候我连 C 语言的效率及程序生成后的大小都不满意……早些年,一些核心模块,我直接就是用汇编来写, C 语言都不屑于用。搞多了,积累了自己的一大堆东西后,编码的效率不比使用任何“先进”语言的同行低,甚至远超。

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

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

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

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

© 2021 V2EX