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

31014 次点击
所在节点    分享创造
651 条回复
SwingCoder
2017-02-24 20:47:50 +08:00
- 改进:新建目录和文档时,如果出现重名,自动添加的数字后缀不再使用括号包裹,改成下划线连接。
SwingCoder
2017-02-25 01:37:44 +08:00
- 改进:大幅度减少项目文件的大小。
SwingCoder
2017-02-25 07:21:08 +08:00
- 提升:文档预览时的渲染效率
SwingCoder
2017-02-25 10:02:33 +08:00
- 改进:重新生成整站时,工具栏底部出现天蓝色的进度指示。
Akkuman
2017-02-25 17:02:47 +08:00
有个建议,建议加一个是否公开为博客的选项,我并没有找到这个功能,个人认为的话,既然笔记也是这个软件的功能之一,那我觉得总会有一些笔记是私人的,所以在文章右键上加一个是否公开为博客的选项比较好,这样就更好的体现了博客笔记一体

以上都是个人拙见。希望能考虑一下😁
SwingCoder
2017-02-25 18:31:23 +08:00
@Akkuman 兄,谢谢您的宝贵建议。我在 QQ 上已回复:)
SwingCoder
2017-02-25 20:29:16 +08:00
发布: 0.9.0225 (内测版)。下载页:
http://underwaysoft.com/works/wdtp/download.html

主要更新记录:
http://underwaysoft.com/works/wdtp/updateList.html
SwingCoder
2017-02-25 20:47:36 +08:00
从这个版本开始, WDTP 改进了项目文件保存与读取的算法实现。

改进后,项目文件的尺寸大幅度减少,磁盘空间占用更少。项目文件本身的数据用操作系统中的其它程序打开后,完全不可读。并且提高了内部自动保存数据的稳定性与容错性。

但是,任何功能的实现都有代价。目前已知的:
- 可能与老版本的项目文件不兼容。我们已经尽力做了处理,但不保证所有情况下都转换可靠。
- 如果项目较大,加载时会多消耗一些时间(约 5%左右)。项目管理的文档数超过 5000 ,这个现象会明显感觉出来。
SwingCoder
2017-02-26 10:30:09 +08:00
•改进:新建文档时自动给出文件名(当前日期)。此举有利于在灵感突发而至时,快速新建文档并将其记录下来。 WDTP 新建文档有两种方式:
◦文件树面板中,双击某个目录。或者:
◦文件树面板中,鼠右单击某个目录。弹出的菜单中点击“新建文档...”。
Nott
2017-02-26 10:56:50 +08:00
一直在使用类似软件,但都略显臃肿,不方便坚果同步,真正碰上了小而精的 WDTP ,大爱!!!
SwingCoder
2017-02-26 16:51:14 +08:00
•实现:底层基础功能:数据分析。文件树面板中鼠右单击项目、目录或文档后,弹出菜单,点击“数据统计”。 0.9.0225 版本之前,点击后弹出一个模态消息窗,给出一些基本的统计信息。目前改为:

◦不再弹出模态消息窗,而是浮动式面板(类似目前的“批量替换”面板)。
◦除基本的统计信息外,面板中新增了“关键字”文本框和 [分析] 按钮。
◦给出关键字后点击 [分析] 按钮,将显示该关键字的使用情况。
◦如果当前所选的是文档,则自动切换到编辑状态,高亮该文档内所有匹配的文本。
◦如果当前所选的是项目或目录,则文件树面板中,本项目(本目录)下所有包含该关键字的文档均自动高亮。
◦关键字文本框有一定的智能。启动软件后第一次执行分析,默认是操作系统剪贴板中的文本数据。以后再次执行分析,则默认是上次的关键字。
◦目前已经实现的分析功能还比较初级,但已经很实用了。特别是创作小说、剧本等文艺作品时,可利用此功能分析主角、配角的“戏份”与出场频次(以避免业余写手经常犯的“配角抢戏”等问题),还可分析某个场景或道具的出现次数、所在的剧集(章节)、整个树形结构中所出现(存在)的位置……等等。
◦将 WDTP 作为个人知识管理和笔记类软件,此功能也非常实用。
◦该功能的底层架构基本已经打好,今后可随时进行更丰富的扩展。您也可以下载源码后自行添加个人所需的功能( StatisComp 类)。
SwingCoder
2017-02-26 16:55:30 +08:00
@Nott 朋友,谢谢您的下载试用。欢迎提出宝贵意见和建议:)
Nott
2017-02-26 17:14:54 +08:00
@SwingCoder 用了半天时间,把笔记全部都挪了进来,提点建议吧:
1 ;不是每个人同时需要“三合一”模式,个人理想用法是,首先是本地笔记、写作软件,使用过程中无关生成 HTML 的选项功能,只需要编辑、浏览模式,单纯的作为一个本地软件来用,仍在坚果里随写随存。期待把生成静态网站功能放到一个[生成]的类似菜单里,是导出 pdf 还是静态网站,需要使用的时候才去操作选择那套模版,如果再增加 ftp 和 git 发布就更好了。
2 ;模版机制,在建议 1 的前提下,编辑和预览模式使用一段 CSS 渲染,这段 CSS 并可自定义。使用生成静态网站的时候,才去调用关于模版方面的功能选项,模版的标签也应丰富一些。
3 ;预览模式,文字渲染如同 IE ,在 win10 下发虚的厉害, mactype 也不能渲染软件的预览模式。
4 ;最小化到托盘图标。
5 ;一个美好的中文名。
最后,希望 WDTP 一天比一天好。
SwingCoder
2017-02-26 20:56:26 +08:00
@Nott 朋友,谢谢您的宝贵建议。我尝试交流如下。如有不妥,请批评指正:)

1. 1 WDTP 目前的纯文本编辑与带有格式和样式的预览,是捆在一起的。文本的格式用 Markdown 和扩展后一些标记来控制(这个由我来负责),用自定义的 style.css 和模板文件来承担渲染“画布”和呈现的样式(这个由用户根据自己的所需及要求来负责。修改系统默认的或自定义全新的都可以)。如果没有模板, html 的解析结果无处展现。实际上,如果不是发布并传播, WDTP 不存在专门的“生成”这道工序。正常编辑和预览就可以满足很多应用场景。

1.2 关于 WDTP 的网络数据传输功能,我印象中在这里回复过网友的咨询。也可能是另一个网站上,我实在记不太清了:)最开始的时候, WDTP 有 FTP 这个模块,不仅可以上传下载,还可以直接对远程 FTP 上的文件 /目录增删改移。这个模块的底层使用的是 cURL 开源库。第一个内测版发布前,我再三考虑后,去掉了这个模块。也就是:暂不打算给 WDTP 增加网络方面的功能。

这一块,一是已有很多更先进、强力的工具可用, WDTP 不可能超越它们,也不太想去模仿任何现有程序的已有模式。但是, WDTP 是开源的,如果有同行老师、朋友添加这个模块,我个人也不反对:)仅仅只是加上去并跑起来的话,工作量并不大。

二是一旦有了网络功能,未知因素几何级增加,这一块非常缠手,将给程序的后期维护和用户技术支持等方面带来巨大的负担(虽然它是开源的,但这里是中国……)。我现在是一个人拖着病躯靠一口气撑着这个项目,人手太缺,精力不够。

三是我想让 WDTP 更纯粹、更安全一些:)我现在经常想起没有互联网的时候,静静地鼓捣计算机、敲点东西那种安静的体验……用户如果需要发布、传播自己的作品,可以在自我负责的基础上自行选择其他工具。比如,我目前维护 UnderwaySoft 网站,就直接使用该 FTP 提供的网页端上传和 zip 在线解压,就这两个功能,已经完全满足我的需要了。项目的数据备份,我放在了 Github 上,用它的桌面版 GitHub 来完成此事,非常方便。

2.1 可以在文档编辑时直接敲 css 、 html 、 js 等代码。 WDTP 本身就是一个简易版的前端开发与预览工具。这一块,下一步可能会拓展功能,具体的侧重点和需要突出的特色我现在还没想好。

文本编辑时的代码,位于 html 的 body 区。还可以在文档属性面板的 js 区输入或粘贴已有的脚本代码(这里的代码将位于 html 的 head 区)。

Windows 平台下, WDTP 最初仅仅是 Windows 10 64 位的,这个系统默认 IE 11 内核,对 js 的支持更好。但是,有很多朋友目前还是 Win 7 系统,甚至 32 位的 xp ……这方面我不得不妥协了一下,使用 IE 10 。这样一来,有些 js 在预览时会弹窗报错……希望绝大多数人都尽快升级系统吧:)

2.2 模板标签,这个可以有无数种,可以实现无穷的惊人功能——只要想象力足够:)目前 WDTP 只是给出的了最基本的一些,但是底层架子基本搭起来了,随时可以添加新的。您具体需要什么,或者明确的目的与用途是什么,欢迎随时告诉我。只要可行并且想法不错,我一定会及时加进去。请放心。

3. Windows 平台下的预览使用的是操作系统的 IE 10 内核。 Windows 的字体渲染技术比较落伍,它使用了 hint 和 ClearType 等自家的技术,(仅)在特定缩放比例下,文字看起来纤细、锐利,小字体的可读性更好。如果您感到字体发虚,可能是系统在这些方面的设置有问题。或者您抓一个 WDTP 的预览截图发到我信箱里,我看后再具体回复您。 UnderwaySoft@126.com

4. 托盘图标,这个是 Windows 的典型特色。它可能适合于一些长时间后台运行、偶尔打开看一下,或者程序时不时冒个泡、给点消息这样的程序。我觉得不适合 WDTP 。而且,系统托盘在 macOS 和 Linux 下都没有一致的对应模式。 WDTP 有一个与众不同的原则是:跨平台, 5 大平台都可以跑起来,所有平台下一套代码,除底层和应用层少部分必要的桥接与平台宏包裹,所有代码无任何差别,无需任何额外的调整,程序运行后的操作模式、外观界面等等,完全一致。如有不可调和的差异,宁肯牺牲功能或不发布,也不妥协。因为 UnderwaySoft 在业界立足的根本就是真正的跨平台开发,这一点我一直以来非常重视。所以,这个功能我个人不太想加进去。请谅解。

5. 是的。 WDTP 目前还没有一个正式的中文名字,确实很遗憾。欢迎大家集思广益:)

再次感谢您的宝贵建议,祝您使用愉快!
SwingCoder
2017-02-26 23:47:21 +08:00
- 改进:进入 /退出安静模式时,加大默认的主界面宽高。
TheKiteRunner
2017-02-27 09:52:46 +08:00
@SwingCoder 用到现在,几乎没有 bug 。您为什么要这么赶进度呢?软件在功能上已经很不错了,很多进一步的工作都是打磨细节吧,慢慢来不就行了。

本来简书这个名字挺好,可惜已经用了。插一句,简书的社交属性导致不那么纯粹和简洁。 wdtp , word typing place ,加上您这软件灰色调,叫冷笔怎么样。还有一个说法是冷笔与热笔相对,反映深思熟虑之后的写作。

QQ 删除了好友,因为我聊天比较少,请不要见怪。
SwingCoder
2017-02-27 11:39:25 +08:00
•文档属性新增 showing keywords or not (预览页面中是否显示关键词)。该属性为下一步的一系列功能埋一个伏笔。
SwingCoder
2017-02-27 11:48:23 +08:00
@TheKiteRunner 先生,由于刚刚发布,这段时间确实很玩命:)下一步会逐渐正常起来,按开发计划一点点向前推进。

目前 WDTP 只是个大概的框架和轮廓,只是为下一步的扩充打一个基础(也考虑到用户的习惯,给他们一些适应过程)。很多特色,以及长期以来我在计算机文字书写、创作、发布、分享等领域的一些思考结果、看法与打算,会慢慢融进去,希望大家支持、接受:)更希望能突破、颠覆、改变一些东西……
SwingCoder
2017-02-27 12:44:43 +08:00
•实现:预览页面(网页)中可显示关键词(位于标题之下, html 引用样式,默认字体楷体)。解释如下:

◦按世界出版业通行的规范和中国国家标准( gb/t 3179-1992 和 gb/t 3860-1995 ),正规文章及论文,摘要后面需给出本文关键词。
◦关键词由叙词和自由词两部分构成(叙词为主),其标引需遵循《文献叙词标引规则》,可参照正规词表和工具书。
◦未被词表收录的重要叙词、版权人自行发明或定义的术语、对文章索引有不可替代作用的非标叙词以及人名、地名、物品名等也可作为关键词标出。这种情况,按自由词处理。
◦目前网络上的绝大部分文章(内容型网页、技术型博客等),其作者均未严格遵循关键词的使用标准,非常混乱与随心所欲。长期以来,我本人对这一点深恶痛绝。我希望能借 WDTP 这款软件对关键词的使用与规范化做一点绵薄的贡献。
◦默认, WDTP 的预览页面(网页)中不显示关键词。可在文档属性设置面板中开启之。
SwingCoder
2017-02-27 16:25:23 +08:00
- 实现:重建本项目的所有关键词(系统菜单-重建关键词表)。

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

https://tanronggui.xyz/t/338138

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

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

© 2021 V2EX