uglynotes 丑丑笔记(虽然丑,但有三大特色功能) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
SuperMild
5.49D
V2EX    分享创造

uglynotes 丑丑笔记(虽然丑,但有三大特色功能)

  •  4
     
  •   SuperMild
    ahui2016 2021-01-17 11:35:55 +08:00 4086 次点击
    这是一个创建于 1767 天前的主题,其中的信息可能已经有所发展或是发生改变。

    uglynotes 丑丑笔记

    一个虽然长得丑,但在功能上有一些特色的笔记软件。

    特色一:历史版本完全保留

    • 用户只管写,不用点击保存;放心大胆修改文章,修改过程会以 “历史版本” 的形式被记录,随时可以找回。
    • 默认每隔 1 分钟产生一个历史版本,该间隔时间可以自由设置。
    • 默认每篇笔记最多拥有 100 个历史版本,该数值也可自由设置。
    • 当产生的历史版本数量超过上限时,最早(最旧)的那个历史版本将被覆盖,依此类推,因此不用担心历史版本太多导致数据库空间浪费。
    • 对于重要的历史版本,用户可点击 “保护” 按钮,受保护的历史版本不会被覆盖。

    特色二:Markdown 内嵌图片

    • 特色一历史版本功能是我在逛 V2EX 的时候看大家讨论笔记软件时获得的灵感,这个特色二也同样是看到有人说起,我才想到做这个功能。
    • 目前我做了一个独立的页面 http://note.ai42.xyz/convert 用来将图片转码,转码后可粘贴到任何 markdown 文件中(不局限于本站,任何支持 markdown 的地方都可以使用),即可让图片直接内嵌在 markdown 文件里。
    • 不需要图床,因此也不用怕图床失效,图片数据就在 markdown 文件里,因此图片永远有效。

    特色三:对标签管理的重新思考

    • 用标签来管理文件,比使用文件夹更科学、更方便好用。但为了照顾用户习惯,很多支持标签的软件都会同时支持文件夹。
    • 但习惯的力量是可怕的,一旦支持文件夹,用户就不会认真对待标签,结果有的文件设了标签,同时有很多文件只是归类到文件夹里,完全没有标签。
    • 对于标签管理系统来说,“有的文件有标签,有的文件没有标签” 是灾难性的,这导致整个标签系统名存实亡,彻底沦有一个可有可无的辅助角色,发挥不出应有的效果。
    • 因此,在本软件中尝试不使用文件夹,只使用标签,并且要求每篇笔记至少要有两个标签。同时提出了一个 “标签组” 的概念,最大限度发挥标签的效果。

    Tag Group (标签组)

    • 每个标签组要求至少包含 2 个标签。
    • 在标签组列表页面,可通过标签组来搜索笔记,也可通过标签组来创建新笔记。
    • 原则上只能通过标签组来创建新笔记,这是为了改变用户习惯,确保每篇笔记都有标签。
    • 下面通过一些例子来说明这样做的好处。

    标签组示例

    我们写笔记,最大的目的是为了日后能轻松找出笔记。在有了 “标签组” 这个高效率管理工具之后,只需要遵从一个简单的原则,即可轻松创建出非常有利于检索的标签组:

    原则:一两个共性标签 + 一两个唯一性标签

    比如:

    • #editor #emacs #快捷键
    • #editor #emacs #org-mode
    • #editor #vim #快捷键
    • #editor #vim #vimrc
    • #操作系统 #Windows #快捷键

    当我们用上述标签组来创建一些笔记后,

    • vim(共性标签) 能找出与 vim 有关的快捷键、vimrc 等笔记
    • org-modevimrc(唯一性标签) 即可直接找出最精确的结果
    • editor(更大范围的共性标签) 又能扩大搜索范围
    • 还可以搜 editor + 快捷键 来找全部编辑器的快捷键而不被 操作系统 的快捷键污染搜索结果

    可见,标签管理很科学,也很易用,我们以前不这样用,是因为在有文件夹的系统里有大量文件没有标签,导致我们每当想通过标签来搜索文件时都心里没底,总觉得有漏网之鱼。

    在规定必须使用标签的系统里,我们可以体验标签管理的真正实力。

    demo 演示版

    • http://note.ai42.xyz (密码 abc)
    • demo 的笔记字数限制、数据库总容量、产生历史版本的间隔时间、自动提交次数上限等,都设置了比较低的数值,实际使用正式版时这些数值都可以自由设置。
    • demo 服务器在美国,一个非常低配的 VPS, 因此访问速度比较慢,这是网络问题不是程序问题。

    关于丑

    • 我对前端界面美化实在不擅长,折腾起来太花时间,就索性不折腾了。没有用任何前端框架,CSS 也尽可能少用,因此是很原始的风格。
    • 主要考虑桌面屏幕,没有做手机屏幕适配,但我试了一下手机使用也……勉强能用。
    • 大体上是前后端分离的,后端只向前端返回 json, 从不返回渲染过的网页,因此有前端能力的朋友们可以轻松改写前端页面。

    开源仓库

    https://github.com/ahui2016/uglynotes

    第 1 条附言    2021-01-18 11:12:58 +08:00
    我手残,正文中图片转码网址我打错了!正确的是这个 http://note.ai42.xyz/converter
    22 条回复    2021-01-20 14:13:49 +08:00
    molezznet
        1
    molezznet  
       2021-01-17 12:15:31 +08:00 via Android
    挺符合个人需求。手机勉强能用,期待全文搜索
    wbO7FDM4oxBO
        2
    wbO7FDM4oxBO  
       2021-01-17 12:18:52 +08:00 via iPhone
    其实挺不错
    SuperMild
        3
    SuperMild  
    OP
       2021-01-17 14:24:42 +08:00
    @molezz765 全文搜索太耗资源了,所以我没有做,同时我也更希望大家重视标签,用好了标签所有笔记都会井井有条。
    Kilerd
        4
    Kilerd  
       2021-01-17 14:34:56 +08:00
    默认每隔 1 分钟产生一个历史版本,该间隔时间可以自由设置。

    上个 ot 、easysync 、CRDT 协议吧,每次修改都是一次版本。
    zjgsamuel
        5
    zjgsamuel  
       2021-01-17 14:47:57 +08:00
    加油~
    MemoryCorner
        6
    MemoryCorner  
       2021-01-17 15:15:26 +08:00
    哈哈,确实很丑
    SuperMild
        7
    SuperMild  
    OP
       2021-01-17 18:46:56 +08:00
    @Kilerd 感谢建议!这个建议很不错,我研究一下看怎么弄……
    lifetimeporn
        8
    lifetimeporn  
       2021-01-17 18:49:57 +08:00
    这不是丑不丑的问题,这是压根没界面纯文字,只有 Tag 有那么点可怜的样式
    Acoffice
        9
    Acoffice  
       2021-01-17 19:01:36 +08:00 via Android
    建议配置,可以通过 web 页面配置。
    如果不可以,那建议可以动态读取外部配置,指定配置文件路径,方便 docker 来打包。
    ---
    每次修改配置,都要重新编译这也太槽点了
    SuperMild
        10
    SuperMild  
    OP
       2021-01-17 22:53:51 +08:00
    @lifetimeporn 我也想加样式,但加了之后还是丑啊…… 然后肯定要改样式,改来改去都不满意,因此我才放弃了自我……
    SuperMild
        11
    SuperMild  
    OP
       2021-01-17 22:58:21 +08:00
    @Acoffice 谢谢建议!已经改成读取外部配置了,不需要重新编译,但还是需要重启程序。其实那些设置基本上都是一次性的,不用经常改,能偷懒就偷懒了。
    renmu123
        12
    renmu123  
       2021-01-17 23:18:05 +08:00 via Android
    这叫极简,怎么能叫丑 2333 。
    前几天我在思考 md 笔记的时候也考虑到了图片无法直接内嵌进去导致非常依赖图床,大部分的图床又稳定性堪忧。就是一大串字放在 md 末位没那么优雅了,希望之后 md 能拓展一下语法。
    楼主这个点子可以让我们直接在 v 站上发图而不比依赖图床了,我觉得这个一个非常大的进步。
    Acoffice
        13
    Acoffice  
       2021-01-18 08:06:08 +08:00 via Android
    转码网站挂了???可以说说转成什么码了吗? base64 ?
    PayneSeediqBale
        14
    PayneSeediqBale  
       2021-01-18 09:39:52 +08:00
    Markdown 的图片转码还是非常赞的
    woostundy
        15
    woostundy  
       2021-01-18 10:26:29 +08:00
    搞个居中就行了
    SuperMild
        16
    SuperMild  
    OP
       2021-01-18 11:11:33 +08:00
    @Acoffice 多谢反馈!我打错网址了! http://note.ai42.xyz/converter
    SuperMild
        17
    SuperMild  
    OP
       2021-01-18 11:29:21 +08:00
    @Acoffice 关于转码的细节请看源码,我这个是完全在前端用 js 做的转码,不需要后端。
    molezznet
        18
    molezznet  
       2021-01-18 12:16:51 +08:00
    放在 nas 上用了,长期用试试。
    等待有人能适配手机端
    SuperMild
        19
    SuperMild  
    OP
       2021-01-18 12:36:17 +08:00
    @molezz765 感谢支持,先别重度使用,上面有人提到历史版本的改进方法,后续我可能会做稍大点的改动。遇到任何问题可以在这里或者在 github 问我。

    目前的最新版支持 -config 指定配置文件,因此建议你把 settings.json 复制到别的文件夹,后续我发布新版后,想升级可以用以下命令:

    ```
    $ cd uglynotes
    $ git stash
    $ git pull
    $ go build
    $ killall uglynotes
    $ ./uglynotes -config /path/to/settings.json &
    ```
    molezznet
        20
    molezznet  
       2021-01-18 12:55:31 +08:00
    molezznet
        21
    molezznet  
       2021-01-18 15:47:25 +08:00
    用上 -config 了,db 和 setting 都放在另外文件夹了
    SuperMild
        22
    SuperMild  
    OP
       2021-01-20 14:13:49 +08:00
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5502 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 06:50 PVG 14:50 LAX 22:50 JFK 01:50
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86