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

31007 次点击
所在节点    分享创造
651 条回复
miao
2017-02-17 13:28:44 +08:00
搜索好像并不能用
miao
2017-02-17 13:33:35 +08:00
对不起, 首页模板没选对, 所有打不开. 现在可以了.
SwingCoder
2017-02-17 14:22:31 +08:00
@miao 朋友,谢谢您的下载试用。

杀毒软件是误报,不要理会它的警告:) WDTP 的所有源代码都在这里:
https://github.com/LegendRhine/WDTP/tree/master/Source
您也可以 clone 后自行编译和分析,如有问题,敬请询问。欢迎提交 PR 。

搜索功能是可以使用的。 WDTP 和常规的软件不太一样,它有三种搜索模式。
SwingCoder
2017-02-17 15:04:21 +08:00
改进:网站二级菜单按时间倒序排列
miao
2017-02-17 16:26:09 +08:00
谢谢. 很不错的软件. 对于自己创建的新模板, html+css+js, 如何导入到软件. 我还没找到导入的办法
miao
2017-02-17 16:30:48 +08:00
@miao 只能手工修改 /site/add-in/ , 然后重新生成全站,又没了, 或者请问怎么修改 wptl 文件,然后导入

另外, 有个小 bug,
放置于 ``` 代码区里的 html 语言, 会被解析, 然而我不希望他被解析成 html
miao
2017-02-17 16:35:51 +08:00
还有,可否增加一个功能, 把剪贴板里的图片, 使用 ctrl+v 自动复制并保存到 \site\media, 然后在光标处,自动生成图片链接.

或许加一个 ftp 功能, 直接把项目下的 site 文件自动上传到 ftp 里. 岂不妙哉!

搜索功能, 并不是很会用.

wdtp 是一个感觉很不错的软件, 可以记笔记, 可以做网站. 希望越做越好.
miao
2017-02-17 16:57:01 +08:00
原谅我搜索, 知道怎么用了.

还有, 能否增加一个新功能, 全局复制粘贴功能, 这样方便记笔记, 比如说, 设置快捷键 ctrl+Q, 选中 某个网页的文本和图片,甚至视频, 使用该快捷键后, 自动保存到 WDTP 里的某一个项目的某一个文件夹下. 这样非常方便.
miao
2017-02-17 19:19:21 +08:00
模板知道怎么改了, wptl 文件后缀名改成 zip, 解压后修改,然后再压缩过来就行了.
SwingCoder
2017-02-18 10:26:11 +08:00
@miao 朋友,谢谢您的使用。我尝试回答一下您的问题,如有不妥,请指正。

1. 制作模板时修改“项目 /site/add-in ”样式表后,刷新网页就可以见到效果了。无需重新生成任何网页。即便重新生成,您的修改也会保留,不会有任何重新生成的文件覆盖到 add-in 这个目录。

如制作了新的 themes 或已修改现有的模板文件,则需要重新生成。同样不会覆盖 add-in 目录下的任何文件。

模板制作完成后,可点击系统菜单中的“导出当前模板集”,将您的成果备份下来,或者共享给更多朋友使用。

如使用已经导出的模板集,点击系统菜单的“导入外部的模板集”即可。无需手工打开这个文件。

2. 代码块中的部分 html 标记被解析,确认有这个问题,稍后我就解决。

3. 针对各类数据的智能粘贴,目前还比较简单。有时间我会酌情添加一些功能。您也可以从 GitHub 上 clone 或拉回整个 WDTP 项目,找到这部分源码,自己添加所需的功能。

4. FTP 等网络数据传输功能,我之前在此回复过网友,请参阅:)

谢谢。
SwingCoder
2017-02-18 18:41:51 +08:00
• 完善:代码块对 html 标记进行转义,防止其被浏览器解析而无法显示
SwingCoder
2017-02-18 19:29:29 +08:00
改进:所生成的每一个页面的 title ,均附带项目标题(网站名称)后缀
SwingCoder
2017-02-19 12:31:06 +08:00
•新增: Markdown 文字型链接,网址最后添加空格和一个小写减号,可在新窗口(标签页)中加载该链接。示例:
◦[点此访问]( http://underwaySoft.com) 该链接在当前页加载。
◦[点此访问]( http://underwaySoft.com -) 新窗口(新标签页)加载。
SwingCoder
2017-02-19 17:47:50 +08:00
•改进:获取项目内部某个文档或目录的链接地址后( Get Path 功能),不再弹窗提醒。
SwingCoder
2017-02-20 00:19:03 +08:00
•完善:替换后给出提示(替换了几处、几个文件,或者没找到要替换的内容)。
SwingCoder
2017-02-20 11:48:51 +08:00
•改进:文档内搜索选区与工具栏搜索关键字,高亮颜色显示区别。
◦工具栏的两处搜索,找到的关键字不自动选择,仅高亮显示
SwingCoder
2017-02-20 12:52:19 +08:00
- 修复: Markdown 文字链接解析时的一个小 bug 。
miao
2017-02-20 19:28:20 +08:00
好样的, 缩略语请问怎么用, 官方文档看来半天没看到语法, 比如 正文里 放入 _我是缩略语_
那么缩略语那右下角的 小方块里, 需要填上什么?
举例, 是不是这样写, 就可以在正文替换了?
_我是缩略语_:我是缩略语代表这是一句很长很长很长很长很长很长很长很长的话
SwingCoder
2017-02-20 21:58:48 +08:00
@miao 朋友,谢谢您的使用和咨询。缩略语的介绍请参阅:
http://underwaysoft.com/works/wdtp/gettingStarted.html#缩略语功能详解

该功能最核心的代码( Line 455~493 ):
https://github.com/LegendRhine/WDTP/blob/master/Source/HtmlProcessor.cpp

您给出的例子中,把冒号换成空格就可以了:)您把替换后的这个例子复制粘贴到某个文档属性面板中的“缩略语”文本框中,而后在文本编辑器中输入或粘贴“_我是缩略语_”。 Ctrl + S 预览一下……相信您会有真相大白、原来如此的感觉:)

某个文档可设置任意多个缩略语。一段一个,可使用空行隔开以示区分。

对使用 C 、 C++等编译型计算机语言的程序员来说,这个功能更便于理解的解释是:宏定义。

缩略语是我写 WDTP 这个软件的过程中比较满意的一个设计和实现。它目前的功能还很单纯、简朴。以后我肯定会在这个方面做做文章,届时可能会实现不少惊人的功能:)

该功能起源于 TheKiteRunner 先生的需求和建议,就在这个帖子里:)您可以翻看找到。在此,请允许我再次向他表示衷心的谢意!
SwingCoder
2017-02-21 02:17:06 +08:00
有用户询问如何在 WDTP 中实现复杂的数学公式。其实非常简单,我在示例页面中添加了这方面的演示和说明。请参阅:
http://underwaysoft.com/works/wdtp/mdDemo.html#数学公式

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

https://tanronggui.xyz/t/338138

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

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

© 2021 V2EX