目前块引用的预览或点击默认会显示该块的上下文。虽然首先显示的是该块,但若浏览时滑动滚轮,很容易滑到其他内容,还需花时间定位回该块。
因此能否添加一个切换选项,使块引用的预览或点击只显示该块的内容,而不显示该块的上下文。(即自动聚焦)
谢谢!
目前块引用的预览或点击默认会显示该块的上下文。虽然首先显示的是该块,但若浏览时滑动滚轮,很容易滑到其他内容,还需花时间定位回该块。
因此能否添加一个切换选项,使块引用的预览或点击只显示该块的内容,而不显示该块的上下文。(即自动聚焦)
谢谢!
这两天比较忙,今天晚上稍微有点时间,和 D 大认真的探讨一下这个问题吧。
首先,我想说的是,作为一个软件设计和开发者,在遇到不同用户的不同诉求时,确实是一个众口难调的问题,如果满足了这部分用户诉求,就无法兼顾到其他用户的习惯,很多时候很难抉择。一般情况下,人们普遍想到的都是通过配置项的方案来解决这样的困境,但配置项不是万能的,如果我们仔细想想,这种方式其实没有解决问题,而是把这个问题转嫁给了用户,让用户自我选择。那么带来的问题就是,这么一个选项,针对 A 类用户是常开的,针对 B 类用户是常关的,在这两类用户的配置选项中,存在一个从来也不会去调整的选项,岂不是一种冗余和干扰吗?
那么,到底什么样的功能应该放在配置项呢?我个人的理解是,这个功能的打开和关闭不是互斥的行为,而是不同场景下的不同选择。举个简单例子,就像现在搜索配置中的类型过滤,针对我来说,我一般搜索主要看简洁内容,所以我可以只配置段落,但当我有时候需要搜索很细的内容时,我就会按需打开其他类型,让搜索的内容更多一些。这个例子中,配置项解决的是用户不同场景下的不同需求。
这里也多讲一下,并不是说放入配置项不是一个好方案,而是不应该遇到不同用户诉求就想着靠配置项来解决,这不是一个好方法。合理做法应该是要更多思考,不同用户提的不同诉求,是不是真的完全互斥的?他们基于什么场景使用这个功能,这个场景真实存在还是用户臆想的?有没有其他更好的方案也是可以解决两者的诉求的?
说到这里,回到今天想讨论的核心问题:作为一个软件的设计和开发者,决策一个软件的功能依据到底是什么?我个人的拙见,应该是这个软件的核心定位,和要解决的核心场景。一切符合软件核心定位和场景的功能,都值得花大力去完善,努力提高体验;而和核心定位和场景关系不大的,也可以做,但只能是有精力或者要满足某方面诉求的情况下才去做,这些功能只能是锦上添花,而非雪中送炭;最后和核心定位和场景有抵触的功能,是要坚决不做的,不能因为有部分用户有诉求,就听取用户的意见,带来的后果会让这个产品变的越来越四不像,损害的是更广泛的用户体验,最后做了很多功能,但是却没有一个功能是用户核心使用的。
所以,思源的核心定位和场景是什么呢?当确定了这个,很多功能的取舍就变的简单一些了。先谈下我的个人一些看法,我一度理解是本地化 + 内容块,其中内容块是相对很多本地化笔记的一个高阶特性,笔记的内容不是通过文档组合的,而是通过各种文档中的内容块来组合的,将内容的粒度更精细化管理。既然内容块及内容块的组合是核心功能,那么用户在使用组合的时候,关注的要组合的具体内容,还是组合内容的相关内容?我认为是前者,这才是组合块的灵魂,至于要看内容的关联信息,完全可以点入到文档中查看,而非在预览时查看,预览的内容是我当前内容的一个补充,是为我当下内容来服务的,我的焦点应该是我当下正在关注的文档。但我现在感觉我对思源的核心功能理解似乎是有些理解偏差的(或者可能也是最近几个版本迭代思源已经进步了而我还是原来的我)
最后聊一聊用户的意见要不要听?张小龙曾说过“中国有 1 亿用户教我做产品”,如果微信听取用户的意见,那么微信早就臃肿不堪了。那微信是不是不关注用户意见?不是的,微信的团队,每天从不同渠道收集用户的意见,每天要花很多时间逐条阅读用户的反馈。但这里他们不是听用户要微信怎么增加功能,而是琢磨用户提的问题是基于什么场景,针对这些场景,微信应该要做什么调整。有些时候,确实捕捉到了某场景的刚性需求,但是如果解决这个场景会造成更多其他人的操作体验困惑,那也是不能做的。这就是要有所为,也要有所不为。
说了这么多,估计可能有些内容也是错了,但无所谓了,至少通过这个方式,能把我对思源的想法表达出来,也是给 D 大的一个参考。在这个场景下,我也是一个用户,用户的反馈很重要,但是决定权是在开发者手里,我们只是给你多了一个信息参考而已。
前端技术一般分为前端设计和前端开发,前端设计可以理解为网站的视觉设计,前端开发则是网站的前台代码实现,包括 HTML、CSS 以及 JavaScript 等。
Thymeleaf 是一款用于渲染 XML/XHTML/HTML5 内容的模板引擎。类似 Velocity、 FreeMarker 等,它也可以轻易的与 Spring 等 Web 框架进行集成作为 Web 应用的模板引擎。与其它模板引擎相比,Thymeleaf 最大的特点是能够直接在浏览器中打开并正确显示模板页面,而不需要启动整个 Web 应用。
Webswing 是一个能将任何 Swing 应用通过纯 HTML5 运行在浏览器中的 Web 服务器,详细介绍请看 将 Java Swing 应用变成 Web 应用 。
GraphQL 是一个用于 API 的查询语言,是一个使用基于类型系统来执行查询的服务端运行时(类型系统由你的数据定义)。GraphQL 并没有和任何特定数据库或者存储引擎绑定,而是依靠你现有的代码和数据支撑。
CAP 指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可兼得。
webpack 是一个用于前端开发的模块加载器和打包工具,它能把各种资源,例如 JS、CSS(less/sass)、图片等都作为模块来使用和处理。
Spark 是 UC Berkeley AMP lab 所开源的类 Hadoop MapReduce 的通用并行框架。Spark 拥有 Hadoop MapReduce 所具有的优点;但不同于 MapReduce 的是 Job 中间输出结果可以保存在内存中,从而不再需要读写 HDFS,因此 Spark 能更好地适用于数据挖掘与机器学习等需要迭代的 MapReduce 的算法。
Latke 是一款以 JSON 为主的 Java Web 框架。
Vue.js(读音 /vju ː/,类似于 view)是一个构建数据驱动的 Web 界面库。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。
Solidity 是一种智能合约高级语言,运行在 [以太坊] 虚拟机(EVM)之上。它的语法接近于 JavaScript,是一种面向对象的语言。
Log4j 是 Apache 开源的一款使用广泛的 Java 日志组件。
链滴是一个记录生活的地方。
记录生活,连接点滴
Unity 是由 Unity Technologies 开发的一个让开发者可以轻松创建诸如 2D、3D 多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。
Shell 脚本与 Windows/Dos 下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比 Windows 下的批处理更强大,比用其他编程程序编辑的程序效率更高,因为它使用了 Linux/Unix 下的命令。
单点登录(Single Sign On)是目前比较流行的企业业务整合的解决方案之一。SSO 的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
OkHttp 是一款 HTTP & HTTP/2 客户端库,专为 Android 和 Java 应用打造。
DevOps(Development 和 Operations 的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。
Elasticsearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful 接口。Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
Markdown 是一种轻量级标记语言,用户可使用纯文本编辑器来排版文档,最终通过 Markdown 引擎将文档转换为所需格式(比如 HTML、PDF 等)。
Wide 是一款基于 Web 的 Go 语言 IDE。通过浏览器就可以进行 Go 开发,并有代码自动完成、查看表达式、编译反馈、Lint、实时结果输出等功能。
欢迎访问我们运维的实例: https://wide.b3log.org
Node.js 是一个基于 Chrome JavaScript 运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞 I/O 模型而得以轻量和高效。
Notion - The all-in-one workspace for your notes, tasks, wikis, and databases.
GitBook 使您的团队可以轻松编写和维护高质量的文档。 分享知识,提高团队的工作效率,让用户满意。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于