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 年 4 月 5 日
本次刷屏结束,以下继续“实况播报”:)尽力争取第一时间发上来,如有延误请谅解。

也可随时关注网站的《 WDTP 主要更新与发布记录》,地址:
http://underwaysoft.com/works/wdtp/updateList.html

再次感谢诸位的支持、鼓励与顶贴。
SwingCoder
2017 年 4 月 5 日
实现:图像与音频数据的外部编辑功能。详情:

•文本编辑模式下,选中当前所插入的图像或音频文件的文件名(包括其扩展名,不包括其上级目录)。该文件需位于当前文档的 media 目录下。
•鼠右弹出菜单,可找到一个菜单项为“外部编辑媒体文件”。其下有两个子菜单:“用外部编辑器打开”,“指定默认的编辑器”。
•如所选文件无法识别,这两个菜单项暗显不可用。
•如当前尚未指定所选媒体文件的外部编辑器,“用外部编辑器打开”菜单项暗显不可用。此时可“指定默认的编辑器”。
•指定适合所选媒体类型的编辑器(本机已安装的某个程序的可执行文件),该信息将被 WDTP 记录并保存。如无意外,以后无需再次指定(当然,也可以随时更换另一个更合适的程序,再次指定即可)。
•图像编辑与音频编辑需分别指定。除非安装了某个程序既可以编辑图像,又可以编辑音频。
•指定默认的外部编辑器后,上述第一个菜单项可用。点击此菜单项后,操作系统将启动所指定的外部程序并自动加载当前所选的媒体文件(媒体类型由所选文件的扩展名决定,其对应的外部编辑器由 WDTP 自动决定)。
•外部编辑器中进行必要的处理。处理结束,保存退出,返回 WDTP 主界面。 Ctrl + S 预览,如对结果不满意,可再次处理。
SwingCoder
2017 年 4 月 5 日
完善:使用快捷键 Ctrl + V 进行智能粘贴时,如当前所粘贴的内容为代码并且包含 TAB 缩进标志,则将其替换为四个空格。此举可解决粘贴某些代码后,编辑模式下未正确显示缩进的问题(预览模式下缩进正常)。 注:如需粘贴原始内容(不替换 TAB ,也不进行插入网址、媒体文件等智能识别与处理),则点击右键菜单中的“粘贴”菜单项(某些时候,可能需要粘贴原始内容)。
SwingCoder
2017 年 4 月 5 日
完善:重新生成整站之前清除冗余数据时一并清除所有项目文档 media 目录下的子目录(这些子目录有可能是运行外部编辑器后遗留下的)。
SwingCoder
2017 年 4 月 5 日
更新:关于对话框标题栏显示本程序的位数( 32 或 64 ),而不是操作系统的。
hzwei
2017 年 4 月 5 日
首次在这里看见楼主自己回复这么多的帖子,楼主确实好尽心尽力啊, star 一下。
SwingCoder
2017 年 4 月 5 日
WDTP 更名为“ Walden Trip ”,中文名称:“山·湖·路”(如果你喜欢,也可以称之为“山葫芦”: D )。 WDTP 的简称不变。
SwingCoder
2017 年 4 月 5 日
@hzwei 谢谢:)
imcocc
2017 年 4 月 5 日
开发者的效率好高。虽然不使用您的软件,可被您尽责尽心的精神震撼了,有此精神,什么事都能做成功,做的完美。
虽然我不是您软件的受益者,可我是您所表现出来的精神的受益者。很多时间后,我可能记不住您的软件名,可我能记住 有一位前辈,尽心的信守承诺。
SwingCoder
2017 年 4 月 6 日
完善:新用户上手提示功能。创建项目后,弹出标注框,箭头指向刚刚创建的项目根目录并显示提示信息。
SwingCoder
2017 年 4 月 6 日
@imcocc 朋友,谢谢您的支持与鼓励!
FEDT
2017 年 4 月 6 日
关注一下
SwingCoder
2017 年 4 月 6 日
上面有位朋友说的对,我对 TheKiteRunner 先生的言辞过于尖刻寡情了。事情虽然已过去,但这些天我总是感到内心不安。 WDTP 刚发布的时候,他给出过非常多的宝贵意见,缩略语这个重要功能和我由此而产生的很多全新思路都是因他的建议而来。他也是第一个捐助 WDTP 的热心用户。可以说,他有大恩于 WDTP 。不管后来发生了什么,你们看到的,还有没看到的……无论如何,我不该如此翻脸无情并将某些一贯难忍的事迁怒于他,这显得忘恩负义,心胸狭隘。

这是一个深刻的教训,我定当继续认真反思。如果 TheKiteRunner 先生能看到我的这些话,我愿意加他的 QQ 并和他长谈一次,当面致歉。

我的其它一些观点和想法,他公开了一部分,技术、网站和 WDTP 的发展大方向等方面,我依然保持原有立场。这和我与任何人的私交及关系好坏都基本无关。

再次感谢大家对 WDTP 和我个人的支持与鼓励。虽然这个软件不是高大上、高精尖甚至人命关天的专业级、工业级重大项目,也没有多少新意和玩法,但是我既然下手了,在病情和时间允许的前提下,就一定会尽力把它做好,做得更加不同质,更好玩一些。我的时间可能不多了,在还能敲得动键盘之前,争取多做一点,把架子搭得更扎实一些。以后如有其他朋友接手,可能会省一点时间和心力。

欢迎各类宝贵意见和建议,特别是各种疯狂而不可思议的点子:)
SwingCoder
2017 年 4 月 6 日
@FEDT 谢谢关注:)
SwingCoder
2017 年 4 月 6 日
改进:设置提醒日期的文本框仅接受数字字符,并且最大为 4 位数字。
SwingCoder
2017 年 4 月 6 日
更新: Markdown 二级标题文本标记解析后自动在标题下添加一条分割线。
SwingCoder
2017 年 4 月 6 日
实现:文章归档功能。详情:

•文档属性面板中新增一个设置项:文章归档。勾选即可将当前文档设置为“归档”。
•归档后,无法编辑修改该文档(编辑模式下,文本颜色与背景色均与常规文档不同,不显示插字符)。
•无法替换归档文档中的任何内容,也无法删除或重命名已归档的文档。
•其它方面,归档文档同普通文档。
•随时可将任意文档归档,或取消归档。
izgnod
2017 年 4 月 6 日
@SwingCoder 感谢作者带来这么好的软件,今天仔细的用了一番。发现一些小问题。 1. catagory 的顺序无法改变,只能创建的时候排好顺序。 2. 重新生成网站的时候 site 目录中不能删除修改过的目录或者是文件。例如:根目录下有一个 temp 目录,把 temp 修改成 temp2 之后,重新生成网站 temp 和 temp2 都有。 3.浏览模式下,修改文件名或者改变文件名字等不能够跟随改变。

有几点疑惑:1.能够修改 logo 的图片么?^_^
2. 如何加入评论?
izgnod
2017 年 4 月 6 日
还有就是我本地没有 build 的环境,作者是否有地方可以下载到每日的更新好的可执行文件
SwingCoder
2017 年 4 月 6 日
归档文档的文件树图标为一个实心三角形:▲

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

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

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

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

© 2021 V2EX