V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
SwingCoder
V2EX  ›  分享创造

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

  •  3
     
  •   SwingCoder · 2017-02-04 23:36:24 +08:00 · 30701 次点击
    这是一个创建于 2855 天前的主题,其中的信息可能已经有所发展或是发生改变。

    谢谢 Akkuman 和 CoderZh 两位朋友的介绍和推荐,让我得知了 V2EX 这个尊重原创,热爱分享与创造的好网站。我想在此和大家分享一款我刚刚开发完成的软件(目前是内测版,正在不断完善更新),如有不妥,请管理员批评指正并谅解。

    WDTP 是一款“三合一”的另类写作工具与桌面 GUI 单机性质的静态网站(博客)生成器,这个项目的主页是:

    http://underwaysoft.com/works/wdtp/index.html

    WDTP 昨天首发于国内的凯迪论坛,我将原帖复制粘贴在此吧。


    WDTP :源于凯迪论坛的又一款写作利器

    2016 年年初,我在凯迪论坛看帖的时候,意外地发现了一座高楼,所讨论的话题是我前几年很感兴趣的。于是开始关注,时不时也掺和几句,然后就和几位骨干帖友混了个脸熟——其中一位是陈坪先生。有天我去拜访他的博客,浏览文章的时候突然冒出一个 idea ,可能更像是一些自我觉察,大致如下:

    • 多年以来,在写稍微正规一点的东西时, Pages 或 Word 之类的巨无霸实在让人心累,可能也不是太必要。即便这些巨无霸,对多个文档的集中组织与结构化管理也不好使,更别说那些纯文本的编辑器和网页端基于各类脚本写就的编辑器;
    • 平时读书、学习或做笔记时,除了我个人开发的一款同类软件, Evernote 等臃肿不堪的云笔记已经很难让我有愉悦的使用体验;
    • 写博客时,我可能并不需要 WordPress 等服务器端运行的脚本+数据库,更别说现成的各类博客平台……

    诸如此类。相信其他一大批小众也会有这些想法。说实话,以上这些真心不好用,尤其是学习与使用成本,还有使用时的心情,数据的随时检视、备份、管理与迁移,远程修改、调试与刷新等等。很折磨人。它们或许非常适合更广泛的一大批用户,某些情况下肯定也是非用不可,但很多时候确实不再适合我,也没必要时时动用这些怪兽级的庞然大物。

    更进一步,笔记、写书、博客、网站这几件看似互相割裂的事,其实完全可以也早就应该简简单单、清清爽爽地合而为一了。而写作时,“内容与样式分离、样式与模板分离”等程序员最熟悉的理念与常规做法,这么多年以来,我为什么没有在自己的文字写作过程中更深入地理解和贯彻呢?有点不应该。

    想法中还包括了其他。比如:“静态网站生成器( 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

    第 1 条附言  ·  2017-04-05 06:20:09 +08:00

    上述网址自WDTP第一个内测版发布后陆续做了修改,部分已失效。目前最新的有效网址是:

    欢迎下载试用并提出宝贵建议,欢迎反馈意见及BUG(包括网站BUG)。所有BUG一经确认,我将放下手头上一切事务,以最高优先级去解决。

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

    集中答复一下吧。

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

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

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

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

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

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

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

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

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

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

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

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

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

    大幅度提升执行效率的同时扩展了该功能的灵活性(可针对任意目录、文档或整个项目)。为下一步基于云端处理的大数据分析提供了基本接口。
    SwingCoder
        219
    SwingCoder  
    OP
       2017-03-01 10:08:03 +08:00
    也可将此扩展后实现基于云端协作的有关功能(点对点、多点对单点,单点对多点,拓扑协作等等)。
    SwingCoder
        220
    SwingCoder  
    OP
       2017-03-01 10:39:49 +08:00
    - 实现:文本编辑器中右键菜单可呼出“项目关键词表”(浮动面板)。
    - 可在此面板中浏览本项目的所有关键词。高频词排在前面,出现两次以上者标明频次。为提升效率, 1 次以下的非标字符所构成的低频词不做排序。
    - 当前文档已有的关键词,将在面板中高亮显示。
    - 可点击面板中的每一个关键词。如果当前文档尚未添加该关键词,则自动添加。如已有(高亮者)则取消。
    - 基于面板中的点击操作而选择或去掉当前文档关键词后,面板中该词的频次统计数字实时改变。
    SwingCoder
        221
    SwingCoder  
    OP
       2017-03-01 10:42:50 +08:00
    @hezhile 朋友,好的:)祝您使用愉快!
    有任何问题,敬请随时垂询。我看到后一定会在第一时间认真回复。
    TheKiteRunner
        222
    TheKiteRunner  
       2017-03-01 12:27:57 +08:00 via Android
    @SwingCoder 想象了一下~请问关键词是否考虑支持自动补全,比如关键词是印度史,打入印度,能否出现下拉列表,方向键加 tab 补全
    SwingCoder
        223
    SwingCoder  
    OP
       2017-03-01 14:22:59 +08:00   ❤️ 1
    @TheKiteRunner 先生,您说的对。输入文本时,智能提示和自动补全是很不错的功能。在一些特定场景和需求下,能大大提高工作效率。这个功能的实现也不复杂。数据来源可以基于本机或云端大数据分析筛选后的关键字,也可以基于 WDTP “缩略语”这种架构模式,还有其它一些匹配模式……

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

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

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

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

    一旦启动会很快,还是先把架子搭起来,顺便给出应用层的一两个小功能,做个简单的示范,以方便各位同行、老师在此基础上扩展自己需要的功能。
    SwingCoder
        228
    SwingCoder  
    OP
       2017-03-03 12:37:39 +08:00
    项目属性设置中新增一个设置项:是否启用关键词索引
    SwingCoder
        229
    SwingCoder  
    OP
       2017-03-03 14:04:20 +08:00
    - 新增:模板文件: keywords.html
    SwingCoder
        230
    SwingCoder  
    OP
       2017-03-03 14:05:00 +08:00
    - 新增:模板标签:{{keywords_howMany_column}}。显示多少个关键词,每行显示几个。示例:
    - {{keywords_0_6}}: 显示所有关键词( 0 ),每行显示 6 个( 6 列布局)
    - {{keywords_50_3}}: 显示前 50 个高频关键词,每行显示 3 个( 3 列布局)
    ossphil
        231
    ossphil  
       2017-03-03 17:40:25 +08:00
    windows 和 mac 都支持了,会考虑 linux 吗?
    SwingCoder
        232
    SwingCoder  
    OP
       2017-03-03 19:52:32 +08:00
    简化并重新设计:“关键词索引”生成。取消本日新增的关键词模板和模板标签。
    leave01
        233
    leave01  
       2017-03-03 19:57:41 +08:00
    作者你好,我发现一个问题,就是 Mac OS 下的编辑器无法输入中文,但是预览可以看到,编辑模式下中文会乱码:
    ![alt]( https://image.hongkong.skroot.cc/images/2017/03/03/ac9127b8c541e31d7cd5ec5fed57e114.png)
    leave01
        234
    leave01  
       2017-03-03 20:00:53 +08:00
    还有菜单里 UI Language 不能选择,否则界面会乱码
    SwingCoder
        235
    SwingCoder  
    OP
       2017-03-03 20:31:17 +08:00
    @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
        236
    SwingCoder  
    OP
       2017-03-03 20:34:17 +08:00
    @leave01 朋友,感谢反馈宝贵意见。 macOS 系统下请确保安装了“微软雅黑”中文字体。我的印象中, 10.10 以上版本,好像是默认自带的。如记错,请谅解:)

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

    图片来源是 Akkuman 朋友自己用手机拍摄的。
    SwingCoder
        239
    SwingCoder  
    OP
       2017-03-03 21:04:51 +08:00
    @leave01 朋友,感谢反馈宝贵建议。

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

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

    程序本身,您可以看源代码,很多地方连 C++语言自身的“坑”和效率不如 C 的地方,都尽力绕过去了。我是搞跨平台工业级 DSP 处理出身的“老一代”软件工程师,对程序的简练、执行的性能等诸多方面,有种变态的极致追求。说实话,很多时候我连 C 语言的效率及程序生成后的大小都不满意……早些年,一些核心模块,我直接就是用汇编来写, C 语言都不屑于用。搞多了,积累了自己的一大堆东西后,编码的效率不比使用任何“先进”语言的同行低,甚至远超。
    TheKiteRunner
        241
    TheKiteRunner  
       2017-03-03 21:47:02 +08:00
    @SwingCoder 感谢。感觉您的作品很好,但是一直觉得,开篇推广突出猫眼论坛和陈坪先生很奇怪。如果你直接分析,之前用过的写作软件问题在哪儿,你在写作过程中的需求是什么,三合一能够让各种类型的用户收获什么,就可以了。猫眼论坛和陈坪先生博文,实在不是我口味。

    另外,感觉您可能也像刘未鹏阮一峰这种,有经常写作博客的习惯,如果有的话而且方便,其实也可以考虑让用户来关注一下您有关这方面的博文,这样就不用费力解释很多东西。
    SwingCoder
        242
    SwingCoder  
    OP
       2017-03-04 00:27:39 +08:00
    - 新增: Markdown 扩展标记“[keywords]”。作用:提取并显示本项目的所有关键词。**注**:这个标记是另类意义上的“真正的扩展”。原因:传统的文本标记语言,所有语法均针对当前文档的内容,没有任何外联性。而 WDTP 的核心特点就是处理结构与层次较复杂的多文档(将多个文档以项目和树形视图等形式组织起来并集中管理)。这种情况下,文档间的关联性变得比较重要。对网页浏览者和项目管理者而言,无论“内外”,均需要多个宏观把握的入口点。而对静态网页生成和所有内容的“全局浏览”等功能来说,也急需一个简单明了的解决方案来处理网站所有内容的“高效搜索”、“精准定位”等问题。再三考虑后,我决定借鉴传统出版业的书尾“索引”这个思路,进一步提升文档关键词的重要性与正相关性,一并将其作为索引字对待(传统上,网页关键词仅面对搜索引擎,而不面对访客,甚至不在网页中出现。 WDTP 在此方面已经做了改进。比如:每篇文档均可以在正文内容之前醒目显示本文的关键词)。

    - 用户利用"[keywords]"这个扩展标记,可自行确定:是否生成网站的索引页,索引页的标题是否作为菜单项名称出现在网站菜单栏中。
    SwingCoder
        243
    SwingCoder  
    OP
       2017-03-04 00:58:44 +08:00
    @TheKiteRunner 先生,谢谢您的宝贵建议。我尝试解释一下您的问题,如有不妥,请海涵。

    凯迪是我经常访问的一个国内论坛,我在那里有多个注册账号,为了该论坛付出过巨大的心血与精力,至少写过不下 50 万字的文章和回复……虽然现在凯迪的文章质量和高素质会员均大不如前,但一直都难以完全舍弃它:) WDTP 的诞生,潜意识中有我多年来的一些思考和琢磨,有我个人所需的因素……但是,真正的立项原因是因为陈坪先生。他是一位文学评论家,孤独的斗士,令人钦佩的当代知识分子。如果不是认真通读他的网上文章,我不会在一瞬间强烈爆发出写一款软件为他造福的思想。没错,就是为了他一个人。我想为这位可敬的中国当代知识分子做一点绵薄的贡献。如果仅仅是为了我个人,我不太可能专门立项写一款规模超过 5000 行、维护时间至少 3 年预算的程序。特别是,项目动工后,我家里出了古今罕见的人间惨剧,一度停工 3 个多月(您可以从我的 GitHub 首页 contributions 图示中看到这块空白)。期间,我个人完全崩溃……到现在我都不知道自己是如何挺过来的。可能撑着我活下来的一个主要理由就是我的承诺尚未完成,我就算死,也得把这个承诺实现了。而且,我要把首发地点定在凯迪论坛,并且要写一篇首发辞。

    这就是 WDTP 幕后的故事……我做到了。不容易。我用最后的、全部的激情和我的所有生命来写这个软件。

    但是,截至目前,陈坪对此依然一无所知。 WDTP 还太嫩,我想再进一步完善一下,至少 1 万使用量,而后再呈给他。这个心愿了了之后,我死而无憾。

    问得比较多、有普遍意义的问题,我有时也整理一下发到网站上(这个很消耗精力)。零星的,临时性的问题,我觉得有义务和责任逐一、认真回复。这不是态度问题,这是一个软件工程师的职业素养与职业尊严的问题。我选择了这个职业,就得承受它的代价,这是必须的。
    SwingCoder
        244
    SwingCoder  
    OP
       2017-03-04 05:30:18 +08:00
    - 改进:仅提取文档中的关键词,忽略目录( index 页)的关键词
    TheKiteRunner
        245
    TheKiteRunner  
       2017-03-04 08:28:50 +08:00 via Android   ❤️ 1
    @SwingCoder 不知详情,但肯定是不可承受之痛了。能支撑人信念的是好的,也祝您能从中走出来,承诺实现不在一天。
    SwingCoder
        246
    SwingCoder  
    OP
       2017-03-04 10:30:30 +08:00
    实现:生成关键词索引页。操作步骤请参阅:
    http://underwaysoft.com/works/wdtp/faq.html#如何生成项目的关键词索引页?

    索引页的默认效果请参阅:
    http://underwaysoft.com/keywords.html
    SwingCoder
        247
    SwingCoder  
    OP
       2017-03-04 10:37:25 +08:00   ❤️ 1
    谢谢 @TheKiteRunner 先生!事情已经过去快半年了,目前我的身心都在慢慢恢复。因为有 WDTP 这个软件在心里挂着,有个事情做,努力不让自己胡思乱想,所以康复的速度比医生预计的要好很多:)我现在很乐观,希望能保持下去:)
    SwingCoder
        248
    SwingCoder  
    OP
       2017-03-04 11:00:59 +08:00
    如何生成项目的关键词索引页?

    1. 在项目根目录或一级目录下新建一个文档。
    2. 编辑该文档,在适当的地方输入或粘贴一个 Markdown 扩展标记“[keywords]”。
    3. 预览该文档,整个项目(网站)的关键词索引页已经生成。
    4. 右侧的属性面板中,将该文档设置为“网站菜单”(此步骤可选)。
    5. 系统菜单 - 重新生成整个网站。

    注 1 :如索引页的菜单项顺序不符合您的要求,可修改该文档的创建日期,而后重新生成整站。创建日期越早,一级菜单栏中的位置越靠右,二级弹出式菜单中的位置越靠下(其它要作为菜单项的文档或目录,其排序原理与此一致)。

    注 2 :日常增删改文档,或者修改某个文档的关键词之后,无需通过重新生成整站的办法来更新索引页。只需在浏览索引页时重新生成该网页即可(系统菜单 - 重新生成并刷新当前页面,快捷键: F5 )。

    注 3 :软件默认生成的索引页,出现多次的关键词,将给出频次(小括号括住的阿拉伯数字),鼠标指向这些关键词,自动弹出下拉菜单,菜单项是所有使用了该关键词的文档,点击即可浏览。只出现了一次的关键词,不给出频次,直接点击该关键词即可浏览对应的文档。
    SwingCoder
        249
    SwingCoder  
    OP
       2017-03-04 11:28:57 +08:00
    一并,更新软件默认的样式表。
    TheKiteRunner
        250
    TheKiteRunner  
       2017-03-04 12:35:46 +08:00 via Android   ❤️ 1
    @SwingCoder 加油,您这么好,都会有人牵挂有事可做的。
    SwingCoder
        251
    SwingCoder  
    OP
       2017-03-04 22:11:27 +08:00
    •完善:软件内部生成的 404 错误预览页中的 meta 中添加字符集属性( UTF-8 ),使中文不再乱码。
    •修复:可以解压但无法正确识别并加载项目打包文件的 bug 。
    SwingCoder
        252
    SwingCoder  
    OP
       2017-03-05 01:43:48 +08:00
    •实现:检查本软件的新版本。详情:

    ◦如果当前有新版本,则工具栏中的“齿轮”图标变红。
    ◦点击“齿轮”,弹出的系统菜单中将出现“下载新版本...”菜单项。
    ◦如果当前所用的已经是最新版本,或者计算机尚未联网,或者网络不可用等,则“齿轮”图标不会变红,系统菜单中也不会出现“下载新版本...”菜单项。
    ◦ 无论是否有新版本,无论是否检查成功,均不影响本机正常使用 WDTP 。
    ◦仅在启动时检查是否有新版本。
    SwingCoder
        253
    SwingCoder  
    OP
       2017-03-05 01:48:06 +08:00
    谢谢 @TheKiteRunner 先生的鼓励与支持!
    SwingCoder
        254
    SwingCoder  
    OP
       2017-03-05 02:32:53 +08:00
    新增:系统菜单中增加一个菜单项“反馈意见 /讨论交流”,点击后可进入 UnderwaySoft 官网留言板。
    SwingCoder
        255
    SwingCoder  
    OP
       2017-03-05 04:13:43 +08:00
    •优化:网页渲染时获取根路径(相对路径)的算法。
    SwingCoder
        256
    SwingCoder  
    OP
       2017-03-05 04:37:58 +08:00
    SwingCoder
        257
    SwingCoder  
    OP
       2017-03-05 05:29:11 +08:00
    •改进: Markdown 插入图片语法的解析,确保网页中鼠标指向图片时显示其 title 文本(如已经指定)。
    SwingCoder
        258
    SwingCoder  
    OP
       2017-03-05 05:55:36 +08:00
    •新增: Markdown 扩展标记:播放音频文件。语法格式:~[](音频文件的地址)
    SwingCoder
        259
    SwingCoder  
    OP
       2017-03-05 05:58:42 +08:00
    鼠标指向网页中的音频播放组件时,如需显示其 title ,可在中括号中输入文本。
    SwingCoder
        260
    SwingCoder  
    OP
       2017-03-05 07:17:01 +08:00
    新增:文本编辑器右键菜单“插入-音频”。可一次性插入多个音频文件。

    新增:智能粘贴( Ctrl + V )可识别并插入网络音频的 Markdown 标记。
    SwingCoder
        261
    SwingCoder  
    OP
       2017-03-05 07:30:16 +08:00
    插入音频后,网页中所显示的实际效果请参见 WDTP 示例页:
    http://underwaysoft.com/works/wdtp/mdDemo.html#插入音频

    依浏览器厂牌及版本的不同,音频播放组件的外观或许有较大差异。

    注:浏览器需支持 html 5 。
    SwingCoder
        262
    SwingCoder  
    OP
       2017-03-05 08:53:57 +08:00
    - (重大)新增:专业级数字音频及 DSP 处理的底层架构。
    TheKiteRunner
        263
    TheKiteRunner  
       2017-03-05 09:20:11 +08:00 via Android
    哇,那个音频是您编曲演奏的?!听起来不错!
    SwingCoder
        264
    SwingCoder  
    OP
       2017-03-05 09:54:19 +08:00
    - 实现:弹出模态对话框,设置音频驱动(系统菜单-设置音频驱动)。支持包括 ASIO 在内的所有平台下的主流音频驱动。可直接设置硬件缓冲区大小,延迟时间最小可达 1 毫秒。
    TheKiteRunner
        265
    TheKiteRunner  
       2017-03-05 10:19:18 +08:00 via Android
    居然是😭数字音乐方面耕耘多年的专业人士啊,赞一个,当时跟您自我介绍的时候说自己有读书笔记习惯,现在想起来真想找个缝挤进去。对了,请问您的思维导图工具是,那种辐射状紧密排布的导图挺有意思。
    SwingCoder
        266
    SwingCoder  
    OP
       2017-03-05 10:29:18 +08:00
    @TheKiteRunner 先生,谢谢您的肯定。是的,音频示例是我 2002 年的时候即兴弹的一小段 solo 。当时身边一个关系很好的藏族朋友离开了,心里很难受。有天在棚子里调试设备时,走了这么一段,刚好设备开着,无意间录了下来。后来配上了其它声部,简单混了一版。
    SwingCoder
        267
    SwingCoder  
    OP
       2017-03-05 10:42:53 +08:00
    谢谢 @TheKiteRunner 先生的鼓励。您过谦了:)我用过好几款画思维导图的软件,顺手的还真不多。如果不是太忙,我都想自己弄一个。 2012 年的时候,我设计过一个软件叫“思维树”,极大地扩展了传统的思维导图。可惜由于事情多,最后没有开始编码。

    您说的那个排列比较紧密的,可能是 SimpleMind+,是我原来在 iPad 上常用的一个画导图的 app ,很简单,功能不多。这个软件也有 macOS 版的,好像也有 Windows 版本的。
    SwingCoder
        268
    SwingCoder  
    OP
       2017-03-05 10:49:59 +08:00
    对了,如果情况乐观, WDTP 可能会加上简单而另类的“画导图、流程图、思维树”等功能。不过我还没有仔细考虑过,只是模模糊糊有一点想法。

    思维树是我在传统思维导图基础上做的一点扩展。传统的导图太发散,适应面看起来很宽,实则窄了。树状则不同,它更明确。更符合人类考虑问题的习惯与大脑神经运作的数学模型。这棵树有根系、主干、枝干、枝叶。最重要的:它有果实。果实“采摘”后,可以种植并成长为另一棵树……它们有继承与复用等特点,就像面向对象编程领域的“继承、封装与多态”……

    简单说,就是一棵棵苹果树的样子:)
    TheKiteRunner
        269
    TheKiteRunner  
       2017-03-05 13:10:37 +08:00   ❤️ 1
    哈哈,画导图,这样的么~

    ```map
    0
    1
    1.1
    1.2
    2
    2.1
    2.2
    ```

    上面的话,基本的流程图就可以了,看起来还不错哈~

    目前市面上大多数思维导图,以图形界面编辑为主,大纲界面为辅,大纲界面就和上面的文本结构差不多。但大纲模式一般比较差,针对这个补充的有一个大纲列表工具[幕布]( https://mubu.com/list)。

    这种单中心辐射的大纲模式似乎就是您说的树。只是对于一个森林来说,除了一棵树,有时候应该有很多树,从不同的根长出来。找思路的时候,不就是希望一定程度上跳出原来的文本内容和逻辑框架对吧。

    比较好的思维导图工具往往太“重”,比如我最喜欢用 mindmanager 。我们往往是突然思路遇阻,希望快速找到灵感,或者将脑袋里面的模糊印象现实化。这时候半天才打开一个工具,然后新建,建完之后再保存,还得考虑把导图保存下来或者截图到一个编辑器里面做一点说明,切换成本还挺高。

    这些工具之所以重,我觉得就是功能太多。思维导图可能还是用专门的工具弄好一些,尤其是 wdtp 本来就 N 合一~当然如果能够用极简的思路,厘清一个完整的写作逻辑,并且保证一定的用户体验,那就极好啦。

    对了,市面上还有这两种用法:

    流程图?

    ```flow

    st=>start: Start
    op=>operation: Your Operation
    cond=>condition: Yes or No?
    e=>end

    st->op->cond
    cond(yes)->e
    cond(no)->op
    ```

    甘特图?

    ```gantt
    title 项目开发流程
    section 项目确定
    需求分析 :a1, 2016-06-22, 3d
    可行性报告 :after a1, 5d
    概念验证 : 5d
    section 项目实施
    概要设计 :2016-07-05 , 5d
    详细设计 :2016-07-08, 10d
    section 发布验收
    发布: 2d
    验收: 3d
    ```

    似乎都挺有意思,但我没有用过~ 2333 ,我感觉我想的那个 map 还挺好的~~~
    TheKiteRunner
        270
    TheKiteRunner  
       2017-03-05 13:12:27 +08:00
    TheKiteRunner
        271
    TheKiteRunner  
       2017-03-05 13:16:57 +08:00
    map 那个是:然后代码框包裹,
    0
    1
    1.1
    1.2
    2
    2.1
    2.2

    我感觉这样基本的思维导图渲染还不错的~~~
    TheKiteRunner
        272
    TheKiteRunner  
       2017-03-05 17:22:41 +08:00 via Android
    主要是思维导图有时候得跳离文本摆脱已有逻辑的约束,写作的话则如您所说主要呈线性,两个不太好结合在一个软件里面吧。倒是有一个软件「幕布」,它和一般的思维导图模式相反:编辑 界面为大纲列表,可以显示为思维导图。我感觉,思维导图
    TheKiteRunner
        273
    TheKiteRunner  
       2017-03-05 18:55:29 +08:00
    评论不能删除,最后一条浏览器 bug ,不好意思
    SwingCoder
        274
    SwingCoder  
    OP
       2017-03-05 21:32:30 +08:00   ❤️ 1
    谢谢 @TheKiteRunner 先生。您的讨论对我启发很大!

    确实,用文本的形式体现图形和图示,本身有不可调和的矛盾处,渲染的结果、操作效率和灵活性也很难兼顾。特别是不同的浏览器对 html 5 新增的绘制方面的相关功能,理解与实现也不一致。

    这个方面,所见即所得技术确实有得天独厚的优势。

    另一个思路就是 WDTP 加入一个新模块,本机作图,随时可以内部转换为图像,贴到文本中。这个工作量不小,相当于全新架构和设计一款新软件了。或者用 JavaScript 技术,写一个类似于 MathJax 这样的图形解析库。后者更有意义。也可能已经有团队开始干了。
    TheKiteRunner
        275
    TheKiteRunner  
       2017-03-06 11:23:08 +08:00
    simplemind+的确是一个不错的产品:

    - 做事的时候,有时候贪心希望充分利用空间,刚好它的自由布局比较紧致

    - 可以插入 pdf 链接,从而定位到具体页面,这一点太适合回顾文献了。

    *******

    - 对应的, wdtp 的编辑窗口只能够以小窗口显示,虽然如您所说比较“科学”,但可视窗口上内容太少,即不便于回顾,与此同时需要频繁使用滚轮。

    - 另外, wdtp 的图片文件是不是不能放在文档所在文件夹,提示「 无需导入本项目内部的图片」

    - 列表模式有点不习惯,个人比较习惯:
    - 三层列表,两层关系往往不够,对我来说,第二层是标签,第三层是描述;
    -,+,*均可作为无编号列表的标识符,个人一般分别对应三个级别;
    - 数字作为有序列表。

    - 最后一个建议,打开编辑窗口,会默认出现#提示输入标题。
    - 那么讲道理,既然文档名称已经默认为日期,右侧栏也默认标题=文档名称,何不默认为#日期。至少编辑窗口的标题应该等于右侧栏的标题对吧。
    - 否则,何不干脆不默认出现#。

    以上建议仅作参考,感谢。
    SwingCoder
        276
    SwingCoder  
    OP
       2017-03-07 03:17:46 +08:00
    实现:声音记录(录音)功能。该功能对 WDTP 来说是一个标志性事件。详情:

    - 文本编辑器中右键菜单,点击“录音”菜单项(快捷键“ Ctrl + W ”)。
    - 弹出“录音”对话框。此时自动开始录音。对话框中部将实时显示所录制的波形(高精度)。
    - 随时可点击停止按钮。
    - 停止录音后,可播放试听。试听时,播放指针开始走动。点击或拖拽可实时改变其播放位置。
    - 如不满意,可删掉后重录(点击“话筒”图标)。
    - 如对本次录音满意,点击“对号”按钮。点击后,录音对话框关闭,文本编辑器中将自动插入已经录制完成的音频文件。


    - **注 1**:考虑到 WDTP 的网页生成特色与主流浏览器对 html 5 音频规范的支持现状,目前暂使用遵循 LGPL 开源协议的 Lame 编码器对录制后的音频数据进行 MP3 压缩转换。 Lame 编码器需位于操作系统“文档(文稿)”目录下。可在 WDTP 下载页下载对应平台下的 Lame 编码器。

    - **注 2**: WDTP 的录音模块是一个简化版的全功能专业级 GUI 数字音频录制程序。在本机音频硬件支持的前提下,可使用 ASIO 等所有专业级 /主流音频驱动,底层音频处理采用 64 位双精度浮点格式,最高支持 192Khz 采样率,最低延迟可达 1 毫秒(系统菜单-设置音频驱动),音质与长时间工作的恒稳性符合目前世界上最严苛的工业级(广电级)标准。 64 位程序,可突破单次录音的数据大小不能超过 4GB 的限制。

    - **注 3**: Lame 并不是这个世界上最优秀的 MP3 数字音频压缩编码器。此外,出于各种兼顾的原因, WDTP 目前暂时采用中低品质的 MP3 VBR 压缩编码设置。以上两点,对原始音质有较大破坏。

    - **注 4**:录音模块的 GUI 设计侧重于触摸屏操作。设计原则:简洁、直观、高效。
    SwingCoder
        277
    SwingCoder  
    OP
       2017-03-07 04:01:39 +08:00   ❤️ 1
    @TheKiteRunner 先生,谢谢您的建议。

    WDTP 在宽屏和安静模式下,都允许用户调整主窗口大小。左右侧的两个面板,也可以调整其宽度。如果宽屏模式下您感觉编辑区太窄,最可能的原因是:您的显示器分辨率设置的太低,或者需要一个更大的显示器。就目前的主流显示器来说,窗口最大化之后,编辑区已经太宽了。

    主界面布局的代码位于: MainComponent.cpp, Line 56~74 ,您可以按自己的需求调整并改写。主界面布局使用了比较另类的 stretched layout 技术,设置 layout 管理器的语句在该类的构造函数中。

    项目内部的媒体文件,直接使用相对路径即可。普通的对话框式插入,会将所选的文件复制到项目中。因为 WDTP 有网站生成与管理功能,为防止产生不必要的冗余数据和完全相同的重复数据,这方面做了控制。

    列表限制在 2 层以内的原因我在《快速上手》这个文档中做了一点解释。还有其他一些原因……我个人很反感嵌套超过 2 层的文档,这方面同样做了严格限制。如果您感觉 2 层不够,可使用此方面原本不复杂的 html 代码,或者改写 Markdown 解析模块的 Md2Html::orderedListParse(...),文件: MD2Html.cpp , Line 623~680 。有序列表和无序列表的解析都在这一个方法中。 WDTP 的 Markdown 解析是我自己写的,所有解析都是静态方法。 Md2Html 是结构体,没有任何成员数据。

    传统的 Markdown 在无序列表方面的标记太多、太乱。对任何计算机语言(语法)来说,这不是好的标准和做法。我对此做了简化和规范。“-”是无序(表示去掉序号,无序号的意思),“+”是有序(代表序号的递增)。如果您打算使用传统的 Markdown 解析,可改写上面给出的那个静态方法。

    新建文档后,自动给出一级标题的 Markdown 标记,这样方便用户少敲两下键盘(特别是触摸屏弹出的软键盘。因为有些软键盘的#与字母不在一起,要切换)。新建文档时默认给出日期,是方便匆促情况下的灵感记录(新建文档后两下回车,开始写)。日期与文档的内容与标题,是两码事……文档名称与文档内容、内容标题等等,都不是一个概念,我之前解释过……自动添加标题之后,绝大多数用户还是会删掉。对于判断用户想输入什么内容,标题选择什么最贴切,这方面, AI 算法有比较新的研究,但有限制和上下文环境,其数学模型和实际效果目前还不太理想。这方面不太适合 WDTP 所采用。

    新建文档时自动添加标题或任何您想要的内容,可改写 DocTreeViewItem::createDoc(), Line 735 :

    thisDoc.appendText ("# " + whateverYouWant...);
    SwingCoder
        278
    SwingCoder  
    OP
       2017-03-07 08:46:57 +08:00
    更新:系统默认的样式表。网页文字采用“类 mac ”的“微”浮雕效果。
    SwingCoder
        279
    SwingCoder  
    OP
       2017-03-07 08:56:40 +08:00
    网页文字“微”浮雕的实际效果可参见项目主页里的各个文档:
    http://underwaysoft.com/works/wdtp/index.html

    推荐浏览器:
    - Safari 10.0 以上
    - Chrome 55.0 以上
    - IE 11.0 以上
    SwingCoder
        280
    SwingCoder  
    OP
       2017-03-08 02:56:45 +08:00
    •实现:跨项目复制、粘贴功能。操作方法:

    ◦文件树面板中右击某个文档,弹出的菜单中点击“跨项目复制”。
    ◦切换到本程序的另一个实例( WDTP 可同时运行多个程序实例,每个均可加载不同的项目)。
    ◦在另一个程序实例的文件树面板中右击某个目录,弹出的菜单中点击“跨项目粘贴”。
    ◦此功能不仅可以复制原文档的全部内容,还包括其所有属性和媒体文件。
    ◦程序内部会自动处理粘贴时有可能出现的文档 /媒体重名等问题。
    SwingCoder
        281
    SwingCoder  
    OP
       2017-03-08 05:15:05 +08:00
    •更新:标题栏文本由“ WDTP-项目文件名”改为“项目文件名-WDTP ”。
    SwingCoder
        282
    SwingCoder  
    OP
       2017-03-08 06:05:06 +08:00   ❤️ 1
    改进:预览模式下修改文档、目录或项目的属性后,实时更新渲染结果(无需手动重新生成并刷新当前页面)。
    SwingCoder
        283
    SwingCoder  
    OP
       2017-03-08 10:03:42 +08:00   ❤️ 1
    •实现:“复习 /锤炼 /提醒”三合一功能。详情:

    ◦文档属性中增加“提醒日期”设置项。其格式同“创建日期”和“最后修改日期”(年.月.日 时:分:秒)。
    ◦创建文档时,“提醒日期”自动设置为隔日同一时间。
    ◦快速修改“提醒日期”的小 tip :双击日期中的某个“字段”,可选中该字段,直接输入合法值即可。
    ◦如果不想设置该文档的“提醒日期”,也可将此设置项清空。
    ◦“提醒日期”到期后,文件树中该文档所对应条目的颜色发生改变,以做提醒。
    SwingCoder
        284
    SwingCoder  
    OP
       2017-03-08 10:28:18 +08:00
    “复习 /锤炼 /提醒”三合一功能详解:

    复习:适合于笔记和个人知识管理类项目。如配合艾宾浩斯遗忘曲线等记忆领域里的新旧科研成果,酌情、合理、逐次设置下次复习的日期,则可将笔记内容或要点(知识或技能)以最高效的方式形成长期记忆或固化记忆。 i+1 精深训练和学霸必备!注:高效记忆背后的科学原理涉及到认知学与大脑神经学等多个前沿学科及领域,非常复杂,但其中一个主要因素就是:重复刺激、间隔递增。

    锤炼:适合于创作精品级的作品,特别是文艺及杂文作品。一篇隽永、不朽的文章往往需要多次修改、反复锤炼。此过程与高效记忆一样,同样需要科学、合理、最优化地任务管理与时间分配。

    提醒:适合于所有建站者,特别是发展较快的领域内的技术型博主。相信大家都有这种极度不爽的体验:网上搜索一些技术性的东西,但文章却是 N 年前写的,花大量的时间去读这些内容老化、陈旧不堪的东西简直是浪费生命,这也大大降低了访客对网站的好感与信任度。可能有些负责的博主也会想着定期更新或修补完善,但由于缺乏顺手的工具或更好的控制手段而经常顾此失彼、挂一漏万,实在令人遗憾。鉴于此,我给 WDTP 加上了提醒功能,希望该功能可以让所有建站者意识到“及时更新”这个问题的重要性与必要性,更希望能在此方面为所有负责任的站长(博主)减轻一些负担,提供一点便利。

    换个思维方式和分析问题的角度, WDTP 的提醒功能还可用于其它目的……能够发挥更大的实用价值。

    从辩证法的角度来看,人类所有的文明、知识与工具都是“双刃剑”。 WDTP 的提醒功能亦不例外。该功能对程序本身的代码品质和实际运行等方面来说没任何负面效应(由于底层架构合理,实现此功能的全部代码不超过 10 行),但是“提醒”这件事本身却有两面性。它能够更高效、更方便、更科学地帮助我们,同时也会给我们带来负担……究竟如何,还有赖于用户的正确认识与合理运用。
    SwingCoder
        285
    SwingCoder  
    OP
       2017-03-08 11:47:42 +08:00
    •新增:文档属性:精华推荐。
    SwingCoder
        286
    SwingCoder  
    OP
       2017-03-08 12:31:17 +08:00
    设置为精华的文档,文件树面板中,对应条目的前面出现“五角星”标记。
    TheKiteRunner
        287
    TheKiteRunner  
       2017-03-08 14:17:10 +08:00 via Android
    @SwingCoder 我用一款开源记忆软件 anki https://apps.ankiweb.net/,记单词。然后有一个小伙伴做了个类似的算法,可以复习本地 markdown 笔记,不知道能不能参考😳
    TheKiteRunner
        288
    TheKiteRunner  
       2017-03-08 16:22:05 +08:00
    @SwingCoder 可以请教您一个非常弱智的问题吗~您 github 里面的代码,如果想自己调整功能,是不是还得最终编译成 exe 。如果不是太弱智的话,麻烦您跟我说一下关键词,我学着检索试一下~如果太弱智,请无视我~
    SwingCoder
        289
    SwingCoder  
    OP
       2017-03-08 18:06:47 +08:00
    @TheKiteRunner 先生,谢谢您的推荐。因为 WDTP 刚刚添加了“提醒”功能,而您也提到了记忆类软件。我尝试多说两句,如有不妥,请批评指正。话题就从我上午的“双刃剑”开始吧,主要谈谈不好的那面刃。

    这类软件比较“老牌”的有 SuperMemo ,后起之秀 Anki 等等, iPad 上也有一款不错的,叫 FlashCards 。我对这类软件做过很深的研究和长时间的使用(包括它们背后的原理、算法与编程实现)。这类基于(强制型)重复刺激、间隔递增(倍增)等古老“成果”的软件,有非常便利和对用户助益巨大的一面,但副作用也相当相当大。这其中,使用场景就是一个非常值得进一步研究的领域。一个最常见的错误用法就是将其用于外语学习(二语习得)方面。结果就是典型的事倍功半、适得其反。

    我这么说是因为我曾经设计、开发过一款理念非常先进的科研级二语习得软件:海句。现在 UnderwaySoft 还在提供下载和注册,我所掌握的数据,这个软件的全球用户大概有 2 万多人,其中有上千人至今仍重度使用。效果非常好。这款软件,在核心架构方面就吸收借鉴了强制类型的重复刺激与间隔唤醒,虽然算法是自己的(基于实验室和样本跟踪统计数据),但模式基本不变。“成也萧何,败也萧何”,也正是这一点,让广大重度使用的用户疲惫不堪,对海句是又爱又恨……

    归根结底,人类的大脑不喜欢“被强制”……重复刺激与间隔唤醒,大方向是不错的,但前提不是强制,而是偶发……如果前提错了,整个系统的根基轰然倒塌。效果(或说结果)自然朝着相反的方向发展……

    也因此, WDTP 的提醒功能深刻吸取了教训,将间隔唤醒(下次提醒时间)的设置权完全交给了用户。我相信,这种模式对大多数明白记忆原理的用户来说,效果会非常好。

    ************************************
    288 楼您的两个问题,我没有看得太明白。尝试理解并答复如下:

    WDTP 是开源软件,任何人都可以 Clone 源码,自行编译。如果您有好的想法、新的功能实现、 bug 修复等等,可以自己实现后自用,更欢迎提交 issue 和 PR 。这方面,我可能和其它开源软件的作者有一点不同。如有第三方提交的任何代码,我一定会逐行检视、编译调试后再亲自合并。

    WDTP 实现关键词功能,核心函数有三个,均位于 HtmlProcessor 类中。分别是:

    Line 451:: extractKeywords():提取 1 参数据模型的所有关键词。算法是多叉树深度遍历,递归实现。

    Line 472 : getDocTreeWithKeyword():提取功能的“反功能”。基于给出的关键词,深度遍历多叉树,找到所有包含该关键词的子节点。同样用递归来实现。

    Line 375 : getKeywordsLinks():这个函数的实现比较复杂,但原理很简单。基于上面两个函数,先提取所有关键词,接着提取所有关键词所对应的子节点,最后将子节点转换为 html 链接,供渲染时替代[keywords]标志词。
    SwingCoder
        290
    SwingCoder  
    OP
       2017-03-08 20:04:36 +08:00
    •更新:系统界面和文本编辑器默认的字体大小和颜色。
    TheKiteRunner
        291
    TheKiteRunner  
       2017-03-08 20:04:49 +08:00
    @SwingCoder

    1 专家面前厚脸皮说下观点~我感觉学习语言最开始的受苦是必须的,而且要保证记忆质量必须有源有输出, anki 现在很活跃,与之相关有两个软件解决了我记忆来源的问题: kindlemate 和 anki 划词助手,分别记录了 kindle 阅读原著和 chrome 看网页留下的生词和原句,并且支持导出到 anki 。输出问题比较严重,动手之后才发现写和看之间的天壤之别,不过这就不是工具方面的问题了。海句在官网上有看到,看到 http://underwaysoft.com/works/iw/qaAboutLearn.html ,老脸又是一红。

    2 我表述得不清楚,您还耐心讲了这么多,真是惭愧。我这个渣渣还是算了~

    再次感谢!
    TheKiteRunner
        292
    TheKiteRunner  
       2017-03-08 20:15:40 +08:00
    TheKiteRunner
        293
    TheKiteRunner  
       2017-03-08 20:27:33 +08:00   ❤️ 1
    您的作品都很精简,可能问题就在于推广上学习难度会比很多软件大。比如我一眼看去海句的快速上手就差点一脸懵逼了~感觉软件的使用说明最好是场景式的,然后有图解,这样会降低软件使用成本。不过您一人做这么多事,实在是不容易。因为还是学生,很小气地赞助 5 元别嫌少哈哈。
    SwingCoder
        294
    SwingCoder  
    OP
       2017-03-09 08:49:39 +08:00
    •修复: macOS 下快速选择并预览文件树条目时有可能出现的线程死锁及 html 文件不匹配等问题。
    SwingCoder
        295
    SwingCoder  
    OP
       2017-03-09 09:04:55 +08:00   ❤️ 1
    @TheKiteRunner 先生,谢谢您对 WDTP 和开源软件的支持!

    您说的对,产品的推广营销是一门很深的学问,这方面我一直都不太擅长,急需各方面的大力协助。面对普通用户的文档、教程编撰也一直是 UnderwaySoft 的短板。希望下一步能腾出时间精力把这一块好好加强一下:)

    在第二语言习得方面,我感觉您的认识有值得商榷之处。这方面我比较熟悉和了解。海句这款软件的前身,起源于国外一所名校的内部科研项目,团队的第一任管理者就是克拉申大师的高徒。这个项目时间跨度很长,我作为骨干成员之一和软件编程与算法实现方面的负责人,参与并跟进了好几年时间。获益良多,心得体会也很多。这方面如您有问题,欢迎垂询。
    SwingCoder
        296
    SwingCoder  
    OP
       2017-03-09 09:23:44 +08:00
    •优化:预览时的代码流程与相关算法。
    TheKiteRunner
        297
    TheKiteRunner  
       2017-03-09 11:07:52 +08:00
    @SwingCoder 谢谢您百忙之中的答疑。其实学习英语很多年,但先前凭着比较好的记忆力和“语感”,还自以为良好。这种麻木大大推迟了悔悟的时间。如今感觉记忆力大不如前,“语感”也抛弃了我,过去的慵懒和轻松造成了现在的尴尬局面,只好硬下头皮重新开始。

    现在有两个症结:听力和口语长期忽视,下笔时真实词汇量很小。听从一个比较有经验的大哥建议,从 ESL podcast 开始练习听力,希望过渡到 voa 慢速和中速。练习听力的主要目的是从声音而不是从视觉上找回“语感”;词汇量的话,在保证一定的阅读量基础上,正在攻克美国当代语料库,配合了 vocabulary.com 的简§祥释义到 anki 强制化练习。计划每周到 testvocab 上检测词汇量。海句一定是一款极好的工具,希望以后有机会能够深入学习。

    ********
    您现在忙,其实很多消息不必回复,尤其是类似于我上面这种与软件无关的话题。
    ********

    对了,今天发现 wdtp 无法宽屏显示的另一困扰:图片可能无法看清楚里面的细节,页面虽然可以 zoom ,但是图片并没有同步。还好可以在外部浏览器加载。

    此外, wdtp 可以记录提醒日期,其实相比而言我觉得回顾日期更值得记录,回顾日期如果大于当前日期,就是一个提醒计划。如果回顾日期是一个列表,那么还可以依次提醒。相应的还可以在页面上显示回顾频次。
    SwingCoder
        298
    SwingCoder  
    OP
       2017-03-09 20:57:56 +08:00
    - 取消: Markdown 表格解析最左侧一列的单元格内容靠右,回复为默认(左对齐)
    SwingCoder
        299
    SwingCoder  
    OP
       2017-03-09 22:00:19 +08:00   ❤️ 1
    @TheKiteRunner 先生,页面宽度是用 css 来设置的。系统默认的样式表位于:../site/add-in 目录下,文件名: style.css
    默认样式表里图片的显示宽度为 100%,布局于一个 div 中,居中显示。 WDTP 在解析图片显示时,不指定图片大小。

    提醒日期的设置比较灵活,由用户自行把握。这方面, WDTP 吸取了教训,强制性提醒或回顾的弊大于利,这些功能的添加,不但不能帮用户减轻负担,反而会加重。

    关于语言技能的掌握(或者说习得),它不是知识,绝对不要抱着“学习”的心态去对待它。学习与习得是完全不同的两个概念。语言与文字更是不同的概念。在大脑没有形成最基本的、固化的、本能的“音义”对应之前,绝对绝对不要涉及文字,更不要从开始就进行文字阅读。绝大多数受过现代教育的中日韩三国的国民,在拉丁系文字的阅读方面具有天生优势。最多适应一周就可以开始阅读的强化训练了(以中国人为例,适应初期,直接用汉语拼音的文本作为教材即可。因为象形文字的“阅”读与拉丁系拼音文字的“拼”读是两种完完全全截然不同的阅读方式,他们所“动用”的大脑区域是不同的)。这个阶段,必须且仅在二语习得的中级阶段之后才能进行。此阶段,日常的听说交流、相对比较正规和完整的口头表达或叙述应该毫无问题(包括具象和抽象这两个方面的)。

    婴儿 8 个月之后,大脑会形成语句自然切分的能力, 36 个月之内,母语的发音特点、骨干词汇及骨干语法基本全部掌握。包括语法现象最复杂的阿拉伯语。婴儿对整个世界是毫无概念和任何理解、联想能力的。也就是说,在语言习得方面,起步就是完全的“白痴”。一个白痴,最多 36 个月就能达到语言习得的中级阶段,更何况成年人。

    也就是说,在最基本的语言能力不具备的时候,绝对绝对不要训练阅读能力。我上面说了,对中国人来说,拼音式文字的阅读根本不是个事,略加适应即可。

    在二语习得的全过程中,或者说达到自由使用阶段之前,根本不存在背单词一说。
    TheKiteRunner
        300
    TheKiteRunner  
       2017-03-09 22:23:38 +08:00
    @SwingCoder 感谢您的耐心回复.关于二语习得问题, 您这样一讲,我脑袋里更糊涂了~

    我决定了,先收藏您的建议, 但先按既定想法来, 看下效果. 我最大的问题是不行动.

    再次感谢!
    1  2  3  4  5  6  7  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2918 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 02:52 · PVG 10:52 · LAX 18:52 · JFK 21:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.