V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  walkinrain  ›  全部回复第 1 页 / 共 1 页
回复总数  5
2019-04-08 01:14:54 +08:00
回复了 tamlok 创建的主题 Markdown VNote:一个更懂程序员和 Markdown 的笔记
@tamlok
win 下的一些使用问题请教:
请问一下,vnote 有没有命令行参数?我看了一下 code,由于对 qt 和 c++不熟,只发现了个-d 还有没有其他命令行方式?
用命令行方式,直接提供一个 md 文件可以打开。直接提供一个目录,貌似没有什么效果。

一个不算严重的小问题:
表格编辑中,有光标乱跳现象,8.02 秒,删除秒,光标跳到.后,添加一个汉字,光标跳到 2 后。
| A 定分 | U 定分 | 速度 | 参数 | 输入 | 输出 | 时间 [^1] |
| :---: | :---: | :--: | :-----: | :--: | :-: | :-------: |
| ❌ | ✅ | □□ | 长度列表 | str | str | 8.02 秒 |

其实表格实时变化的需求并不太大吧?改到表格完成,光标移开后再变化也行吧?



==========================下面是些幻想和建议===========================

最近用了一段时间 vnote,挺不错,由于是功能性建议,我就在这里乱说说,你看有没有什么能用的上的。

1. vnote 笔记本概念就是每个目录下增加了一个_vnote.json 文件,目录浏览器面板感觉意义真的不大,索性直接统一到笔记中,可以一键将笔记本转换为文件夹,一键将文件夹转换为笔记本。只需要维护一个主目录列表即可。

2. 小推车是个有意思的概念,但是我没想明白你对这个概念的想法是什么。我试验过,小推车内容在 vnote 重启后就消失了。可否将小推车设计为一个非易失的文件路径列表,这就类似于一个 md 文件收藏夹了。

3. 目录浏览器面板,除了拖进文件夹至主界面,几乎无所用,收藏功能其实和笔记本功能有所重叠。

4. 既然主推笔记,笔记本,搜索等笔记概念,快速的笔记,笔记本转换,收藏就该是主导方向,现在文件夹转笔记本,md 文件收藏到笔记本内,功能性都很弱。

--------------------------------------------------------------------------------------------------------------------
以上的 1-4 的建议其实是一体的,包含我对 vnote 笔记本,文件夹,等概念综合性整合的建议。

具体实现建议:
a. 不再强制区分笔记本与文件夹,笔记本面板增加一个文件夹树形控件,显示所有笔记本列表(非易失),所有打开的目录(易失),所有收藏的目录(非易失),分别用笔记本,空文件夹,实文件夹图标区分,该文件夹控件中右键菜单可转换笔记本为文件夹,文件夹转换为笔记本(弹窗是否保留图片至本地目录)。

b. 笔记本面板的笔记文件列表中的 md 文件的右键菜单添加收藏至 xx 笔记本,或者直接拖拽至新增加的文件夹树形控件,完成收藏 **复制** 的过程

c. 小推车改为非易失性文件列表,增加收藏至 xx 笔记本功能。

d. 软件默认笔记本(便携版:本目录下 UserData,安装版:文档目录下:vNote )

e. 由于有默认笔记本,便携版在移至其他电脑就不会发生错误。另外,由于笔记本列表,小推车列表均问路径列表,在加载的时候可以添加目录存在性检测。
----------------------------------------------------------------------------------------------------------------------

5. 工具栏:原工具栏分为笔记本,MD 格式,其他三个部分。建议改为:
系统:vNote 登录,新建笔记本,保存更改并阅读,放弃更改并阅读(建议合二为一,切换状态时候提示保存即可),扩展编辑区,笔记本模式,阅读模式,编辑模式。
笔记本:新建目录,新建笔记,删除笔记,笔记信息,放入小推车,收藏至..,
文件:新建文件,保存文件,打开文件,保存,全部保存,全部关闭,查找(打开搜索面板,当前笔记中查找)。
编辑:剪贴,复制,粘贴,撤销,重做,放大,缩小 [其实意义不大,但是这个一般通用编辑器的标配]
MD 格式: 原内容
其他:原内容

6. 菜单:
文件菜单,新增项 [新建 md 文件,打开 md 文件,保存,全部保存,关闭,全部关闭]
新增:视图菜单,新增项 [笔记本模式,阅读模式,编辑模式] ,部分编辑菜单内容移至视图菜单。 [或者将 3 模式项目加入查看菜单]

7. 命令行参数
新增命令行参数 -r ,
> 命令格式:`vNote.exe -r [fileName] `
>> 用阅读模式打开 md 文件
新增命令行参数 -e,
> 命令格式:`vNote.exe -e [fileName] `
>> 用编辑模式打开 md 文件

8. 增加三种模式配置功能
阅读模式:菜单栏+主显示面板+大纲
编辑模式:菜单栏+工具栏 [系统,文件,编辑,MD 格式,其他] + 大纲
笔记本模式:现有的全界面
三种模式均可独立配置界面,并保留最后配置。

三种模式的发展方向:
阅读模式:快,极致的快。可考虑有文件名传入的情况下,渲染和界面多线程同时运行。
编辑模式:速度一般,界面清爽,满足聚焦编辑的功能即可。
笔记本模式:更容易的将 md 文件,收藏,保存至笔记本,整理,待整理等 [楼主想在笔记上进一步发展,估计得考虑 Html 反向解析问题了,不需要太精准,至少能保存个大概的格式] 。

---------------------------------------------------------------------------------------------------------------------
上面 5-8 其实也是一体的,为三模式命令行准备的。

个人觉得 vNote 是个很不错的东西,速度快,界面也清爽,无论做阅读器,编辑器,都不比 Typora 差。
然楼主太喜爱笔记功能,而忽视了其他功能的应用,使得看起来有点小众。所以想出这个命令行启动
方式,不知是否能让 vNote 更大众点也更火一点。

=============================================================
看似很多建议,实际总结下来:调整和整合部分功能未知,增加已有功能的菜单,工具栏,新增命令行方式,新增
文件夹,笔记本转换,新增 md 文件添加至笔记本。
整体代码结构和改动量不大 [嗯,怎么那么像某些项目经理的屁话] 。

希望这些东西对你有用吧。

ps:想到一个最小代码量增加双栏显示的方法:
主显示区文件标签栏增加右键菜单-预览克隆,点击后,临时文件夹中生成一个临时文件(名称前加👁)并打开,同时生成一个克隆文件对应表,并在用户使用保存文件功能的时候,根据对应表同步临时文件。一个全局字典,几行生成临时文件的语句,搞定 O(∩_∩)O。 [临时文件修改神马的全不管]
其实,就算不为双栏预览功能,编辑器同文件分栏显示,也是大文件撰写的重要需求吧:)。
2019-01-12 18:57:04 +08:00
回复了 tamlok 创建的主题 Markdown VNote:一个更懂程序员和 Markdown 的笔记
@tamlok
a. 可否提供同一文件分别展示在分割窗口中?这个需求估计程序员会挺喜欢。(说实话,我就是偷偷打着一个文件分割 2 边,一边预览一边写的主意,O(∩_∩)O )
b. 最大化后,无法创建新的 md 文件。打开菜单默认*文件也不太适合。
c. 关于笔记的设想,设立新的文件后缀,包含笔记所需要的信息,类似 ms 的 sln 文件,这样就无需在配置中记录笔记目录(可考虑记录相对路径增加变动的兼容性)。
d. md 文件拖放到 vNote 中,自动阅读模式,不受配置中打开文件为编辑模式控制。
e. 关于实时预览,我的意思是是否可考虑部分内容(占地方比较严重的内容),提供非实时选项。比如图片,公式,当鼠标指向的时候再浮动显示。这样更加保持文本原有结构和形式,也利于插件扩展。
f. 样式变动基本需要重启程序,这点有点问题。可否优化一下。毕竟前期调优的时候,动辄几十个模板,这么切换来切换去很头疼。虽然程序启动还算快。
g. 能否去掉不建立笔记本,每次打开弹出建立笔记本模式窗口。
h. 绿色问题,按照文档所述,在程序位置建立了配置。发现软件根目录下目录较多,可考虑精简或者归类一下。比如配置放在 User 目录下。如果考虑平台兼容性,可考虑首次运行时提示(本地目录或者默认系统目录下均无配置,提示建立配置)。可能是我个人喜好问题,对默默创建一堆东西的程序,都觉得不爽。

笔记功能有点意思,比较适合代码知识库建立。不过目前我的需求度不够,等日后有机会研究了再出馊主意。
2019-01-11 23:17:00 +08:00
回复了 tamlok 创建的主题 Markdown VNote:一个更懂程序员和 Markdown 的笔记
@tamlok 个人提点小的看法,如果觉得有道理,可以考虑考虑。觉得不符合理念,当我乱说好了。

首先,优点,软件整体感觉不错,貌似主题修改刷新存在一些瑕疵,但是一旦配置完全后问题不大。
个人是把 vnote 作为 markdown 编辑器使用的,作为笔记,纯 md 还是局限了点,当然也有不少优点。
看法:
1 预览:其实,程序员也是很懒的,有预览并不一定会反感,特别前期语法不熟练的时候。可以考虑简便方案,不一定非要实时预览,也不一定非要 html 预览。建议搞个 html 预览,一个 png 预览,用保存时刷新即可。至于大小,版面什么,建议 html 预览采用一个标准的 html 文件,png 预览,则采用小的多的侧边栏形式。 既然编辑器本身已经有了分割功能,直接将标准 html 放到分割页,应该不算大改动。而 png 预览,可考虑放在工具栏目中。

2 笔记概念: 笔记本身概念不错,但是和 onenote 以及印象一类的比还是有缺陷的,不妨将其作为辅助概念。既然是使用文件夹作为笔记结构基础,不妨直接指定软件本身某个子目录为默认笔记,不要不配置每次开启都弹出要建立笔记。

3 如果作为一个 markdown 编辑器,文件菜单缺乏新建 md 文件选项。文件菜单最好添加一些编辑器类的菜单,如新建,保存,打开文件夹(比如打开了某个文件夹,就默认为笔记形式,这一个是一种笔记推广形式)

4 笔记侧边栏:建议可以隐藏,如果需要使用笔记功能,可以菜单打开。

5 绿色绿色绿色:不建议配置写在系统目录下,建议直接在本地目录下建立 User 配置。

个人使用 md 主要目的,是写点东西,比如学习笔记,readme 等等,用 md 很方便,显示出来又不难看。本身又是基于文本的形式。

作为个人项目,不建议在所见即所得上花费太多时间,简单的如标题,加粗等不破坏文本结构的增加所见即所得。图片类可考虑快速预览形式,如鼠标指向显示。其他的通过页面预览来实现。一方面保持文本本身的清洁,另一方面在语法不熟的前提下,也能快速修正语法。
个人希望能在 code,样式等方面更易扩展点。毕竟写 md 的很多人,还是对美观又追求的,这种追求也不是无限的,容易找到或者定制自己喜欢的排版即可,不然直接 txt 好了。
尽量用 md 标准语法,其他的靠插件扩展。更容易接入插件,更方便定制样式,再加上本身的笔记辅助功能,我觉得这种定位可能更好一点。

标准语法,速度快,流畅,界面简洁高配置度,插件易扩展,样式易定制,绿色,轻便,启动快。

以上个人拙见,仅供参考。
异步学习阶段,基本上用的都是标准库。
python 3.7
用的是标准库 asyncore
WhoisClient 继承于 asyncore.dispatcher.

class WhoisClient(asyncore.dispatcher):
def __init__(self, q_in, q_out):

q_in 为需要查询的 ip 队列。
q_out 为查询到的结果队列。

通过 conn_count 设置最大连接数(同时连接查询网站的连接数)
主代码就在一楼,也很简单,打开一个文件,每行一条数据读出,压入 q_in 队列。创建 WhoisClient 实例。WhoisClient 异步执行,结果压入 q_out 队列。

代码本意,超过 conn_count 个链接,等待运行完毕 1 个 WhoisClient,继续创建新的 WhoisClient。

本意以为 loop 会循环至 1 个 whoisclient 完成,实际 count=1 并未阻塞。
将 1 楼的 if 换成 while 代码达到预期。

===================================
主要是想大神帮我分析分析 asyncore 中 asyncore.loop 函数具体实现原理与规则。我看了 asyncore.py ,中间 loop 代码段,感觉应该阻塞住到 1 个 whoisclient 完成的啊。
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5327 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 13ms · UTC 01:20 · PVG 09:20 · LAX 17:20 · JFK 20:20
Developed with CodeLauncher
♥ Do have faith in what you're doing.