guodalu
关注
74169 号成员,2021-11-29 16:29:31 加入
198
个人主页 浏览
8h37m
在线时长
  • 思源数据库什么时候能有横向滚动条

    2025-03-17 01:31

    牛啊佬,原生方案是最好的方案了,看来还是我的检索能力和对系统日常能力的见识不足。

  • STtools 插件:笔记白板转化初步预览(模仿 affine)

    2025-03-16 15:53

    Affine 的白板我是真的爱,整体的功能和 UI 都很不错,只是目前 Affine 也不算完成体,关键 Affine 还开源。未来是思源的强大竞争者。

  • 思源会被谁取代?

    2025-03-04 10:44

    你这个思路才是对的,第二大脑不是简单的仓库,随意堆着就行。是需要人本身高度参与的,在脑子里面构建好结构和索引。说到底,大模型可以取代人做一些模式化的工作,但就是没法取代自己的脑子。把自己的脑子交给 AI 也就没有用笔记的必要了。

  • 思源会被谁取代?

    2025-03-04 10:40

    Trae 和 SiYuan 都不是一个类型的产品。如果个人需求可以被 Trae 解决,那么 cursor, vscode + AI 插件照样解决。

    那就说明你的需求很简单,或者大道至简,所有的笔记需求使用文字就可以了。

  • Mac 思源笔记 大量读取磁盘

    2025-02-19 01:25

    我在 Mac 上编辑内容也是 CPU 占用贼高,远高于其他 app。
    请问你找到原因了吗。

  • DeepSeek 锐评各大笔记软件:Obsidian、Notion、flomo、思源笔记、语雀、OneNote

    2025-02-04 14:21

    这 ai 写的,已经可以薄纱不少二手的缝合怪自媒体了。

    所以,未来有自己的风格坚持做原创,原创到 ai 想不到的那些人会更加吃香。

    AI 像一个饕餮吃掉一切吐出一切组合一切,薄纱人类。但是人还有创造力可以硬刚一下。

    AI 这种力大飞砖会更显得人本身的可贵。

  • 求改个 sql or js,只筛选笔记本下某个层级以上的文档

    2025-01-27 17:14

    佬,顺便请教一个问题,就你之前写的那个计算某个文档是否“已加入”某个数据库,如果加入的话列出它所加入的库。

    我在实际应用中发现,部分文档,在汇总的表中,可以看到罗列出来的已加入的数据库名称了,但是“是否加入数据库”这个列里面还是没有“已加入”三个字,这个现象只在部分文档中出现。不知道是不是底层值更新有延迟还是啥。

  • 求改个 sql or js,只筛选笔记本下某个层级以上的文档

    2025-01-27 17:08

    还得是原作者 👍 ❤️

  • 求改个 sql or js,只筛选笔记本下某个层级以上的文档

    2025-01-27 14:59

    积分儿几个月来提了不少问题,花完了。只能放这儿了。

  • 小记插件,未来要当卡片库吗?

    2025-01-08 10:01

    小记的数据好像是和思源独立的,不知道能不能把数据自动归档到某个文档里面,比如说 daily note

  • 查询当前笔记本下的所有文档,并列出该文档已被加入的数据库,如果没有加入,则为空

    2025-01-06 10:17

    强啊佬,问下还能不能详细列出加入了哪些数据库

  • 啊?!思源终于也可以嵌套笔记本(子文件夹)了?

    2025-01-06 01:40

    这个功能的用处是啥。

  • 有文档实时查看 markmap 样式的插件吗

    2025-01-04 15:05

    没有滴,我都是在 vscode 里面写和看 markmap。

    顺便请教老哥一个事儿,markmap 你有没有试过增粗连接线啊。这个是不是不可调的。

  • 感觉两百多个 issue 一半都是数据库的功能

    2025-01-03 12:50

    数据库和 query 是互补的。query 基于编程来整理,收集,呈现。数据库引入了一定的"互动"。

    另外,数据库导出为 csv,可以视为一种比较通用的格式。notion 和一些类 notion 基本上都支持 csv 的导入。

    python 处理 csv 文档更是得心应手。

  • 如何解决发送到数据库主键中的换行问题

    2024-12-31 09:24

    在这里放一个“权宜之计“,用模版列拿块的内容,把主键仅仅当成一个锚,等后续数据库功能更新了,可以把模版列再删除或者隐藏。

    image.png

    .action{$id := .id}.action{$blocks := queryBlocks "select * from blocks where id='?'" $id}.action{ $b := first $blocks}<a href="siyuan://blocks/.action{$b.ID}" onclick="event.stopPropagation()">.action{$b.Content}</a>
  • 论思源笔记插件市场内的第三方插件的稳定性和可靠性

    2024-12-29 13:40

    这个作者写过什么普世的插件吗

  • 极简懒人版 - 文章划线评论 && 汇总整理

    2024-12-29 00:45

    OK,论坛用的少,感谢佬

  • 极简懒人版 - 文章划线评论 && 汇总整理

    2024-12-29 00:33

    也可以,不过在后期的统计操作上可能没有数据库便捷。

  • 极简懒人版 - 文章划线评论 && 汇总整理

    2024-12-29 00:33

    直接在思源发布的,没注意到还有图的问题 😄

  • 通过数据库创建对应文档的时候能否默认使用某个模板

    2024-12-28 13:57

    这个用法像是从 notion 那来的习惯。

    看看明年给不给你上。

  • QueryView 插件

    2024-12-15 01:51

    那么,如何安装呢,插件市场没有看到啊

  • 更新 3.1.15 还是老样子没办法搜索数据库

    2024-12-12 13:49

    搜狗输入法医生版可用。微信输入法不行。昨天刚排查出来。

  • 在数据表中,求一个模板,根据添加到数据库的主键的那个文档,返回它的父文档链接

    2024-12-11 01:07

    这边放下去掉空余空格后的代码,运行良好很完美。供需要的朋友直接取用。顺便说下这个应用场景:

    以父文档及标题作为项目,然后以子文档标题作为项目下的各种子任务。把子任务文档发送到一个任务管理的数据库表中,任务执行的上下文数据存储在子任务文档中。随着任务的杂多,适当的在数据库表中自动展示父文档即“任务所属项目”有一定的必要性。

    .action{ if index . "custom-avs" }.action{$id := .id}.action{$blocks := queryBlocks "select * from blocks where id='?'" $id}.action{ $b := first $blocks}.action{$list := splitList $b.ID $b.Path }.action{$f := first $list }.action{$len := len $f }.action{$len := sub $len 1 }.action{$len := int $len }.action{ if ne 0 $len }.action{$f := substr 1 $len $f}.action{$list := splitList "/" $f }.action{$ParentID := last $list }.action{$ParentID := trim $ParentID }.action{$blocks := queryBlocks "select * from blocks where id='?'" $ParentID}.action{$b := first $blocks}<span data-type="block-ref" data-id=".action{$b.ID}" data-subtype="s" class="av__celltext av__celltext--ref" style="">.action{$b.Content}</span>.action{ end }.action{ end }
  • 在数据表中,求一个模板,根据添加到数据库的主键的那个文档,返回它的父文档链接

    2024-12-10 23:54

    佬,捉个小瑕疵,这个模板在如下条件组合下,会跳出黑框:

    条件一:设置链接只有在“ctrl + 鼠标”触碰下才预览。

    条件二:模板的那个列没有开启换行(开启换行会有个问题,就是会有非常大的空白段在表格列中。),在没有开启换行的情况下,文档的标题链接超出了单元格的宽度。

    在上面两个条件下,把鼠标触碰模板列中的链接,会跳出如下黑框。但是,Ctrl + 鼠标触碰则是正常的预览。

    当把单元格拉长能够完全显示模板列中的标题时,鼠标再进行触碰则是符合预期的什么也没有。(因为设置的就是需要 ctrl)。

    一个小 bug.png

  • 数据库时间差模板请教

    2024-11-26 14:00

    感谢佬,进一步请教下,这个时间还可以计算的细致一些吗,计算成 xxx 天 xxx 小时 xxx 分钟这种形式

  • 数据库时间差模板请教

    2024-11-26 00:27

    好像不行啊大佬,我这两个列用的就是数据库本身自带的“创建时间”和“更新时间”类型。

  • 分享一个极简任务追踪和回顾的 Query

    2024-11-25 11:00
    -- 查询72h更新的文档 SELECT '[' || b.hpath || '](siyuan://blocks/' || b.id || ')' AS __1____pre__文档路径, CASE WHEN b.updated != '' THEN b.updated ELSE b.created END AS __2____datetime__最后更新时间, b.created AS __3____datetime__创建时间, printf('%d天%d小时%d分钟%d秒', ABS( (CAST(SUBSTR(b.updated, 1, 4) AS INTEGER) - CAST(SUBSTR(b.created, 1, 4) AS INTEGER)) * 365 * 24 * 60 * 60 + (CAST(SUBSTR(b.updated, 5, 2) AS INTEGER) - CAST(SUBSTR(b.created, 5, 2) AS INTEGER)) * 30 * 24 * 60 * 60 + (CAST(SUBSTR(b.updated, 7, 2) AS INTEGER) - CAST(SUBSTR(b.created, 7, 2) AS INTEGER)) * 24 * 60 * 60 + (CAST(SUBSTR(b.updated,9, 2) AS INTEGER) - CAST(SUBSTR(b.created, 9, 2) AS INTEGER)) * 60 * 60 + (CAST(SUBSTR(b.updated, 11, 2) AS INTEGER) - CAST(SUBSTR(b.created, 11, 2) AS INTEGER)) * 60 + (CAST(SUBSTR(b.updated, 13, 2) AS INTEGER) - CAST(SUBSTR(b.created, 13, 2) AS INTEGER)) ) / 86400, -- 天 ABS( (CAST(SUBSTR(b.updated, 1, 4) AS INTEGER) - CAST(SUBSTR(b.created, 1, 4) AS INTEGER)) * 365 * 24 * 60 * 60 + (CAST(SUBSTR(b.updated, 5, 2) AS INTEGER) - CAST(SUBSTR(b.created, 5, 2) AS INTEGER)) * 30 * 24 * 60 * 60 + (CAST(SUBSTR(b.updated, 7, 2) AS INTEGER) - CAST(SUBSTR(b.created, 7, 2) AS INTEGER)) * 24 * 60 * 60 + (CAST(SUBSTR(b.updated, 9, 2) AS INTEGER) - CAST(SUBSTR(b.created, 9, 2) AS INTEGER)) * 60 * 60 + (CAST(SUBSTR(b.updated, 11, 2) AS INTEGER) - CAST(SUBSTR(b.created, 11, 2) AS INTEGER)) * 60 + (CAST(SUBSTR(b.updated, 13, 2) AS INTEGER) - CAST(SUBSTR(b.created, 13, 2) AS INTEGER)) ) % 86400 / 3600, -- 小时 ABS( (CAST(SUBSTR(b.updated, 1, 4) AS INTEGER) - CAST(SUBSTR(b.created, 1, 4) AS INTEGER)) * 365 * 24 * 60 * 60 + (CAST(SUBSTR(b.updated, 5, 2) AS INTEGER) - CAST(SUBSTR(b.created, 5, 2) AS INTEGER)) * 30 * 24 * 60 * 60 + (CAST(SUBSTR(b.updated, 7, 2) AS INTEGER) - CAST(SUBSTR(b.created, 7, 2) AS INTEGER)) * 24 * 60 * 60 + (CAST(SUBSTR(b.updated, 9, 2) AS INTEGER) - CAST(SUBSTR(b.created, 9, 2) AS INTEGER)) * 60 * 60 + (CAST(SUBSTR(b.updated, 11, 2) AS INTEGER) - CAST(SUBSTR(b.created, 11, 2) AS INTEGER)) * 60 + (CAST(SUBSTR(b.updated, 13, 2) AS INTEGER) - CAST(SUBSTR(b.created, 13, 2) AS INTEGER)) ) % 3600 / 60, -- 分钟 ABS( (CAST(SUBSTR(b.updated, 1, 4) AS INTEGER) - CAST(SUBSTR(b.created, 1, 4) AS INTEGER)) * 365 * 24 * 60 * 60 + (CAST(SUBSTR(b.updated, 5, 2) AS INTEGER) - CAST(SUBSTR(b.created, 5, 2) AS INTEGER)) * 30 * 24 * 60 * 60 + (CAST(SUBSTR(b.updated, 7, 2) AS INTEGER) - CAST(SUBSTR(b.created, 7, 2) AS INTEGER)) * 24 * 60 * 60 + (CAST(SUBSTR(b.updated, 9, 2) AS INTEGER) - CAST(SUBSTR(b.created, 9, 2) AS INTEGER)) * 60 * 60 + (CAST(SUBSTR(b.updated, 11, 2) AS INTEGER) - CAST(SUBSTR(b.created, 11, 2) AS INTEGER)) * 60 + (CAST(SUBSTR(b.updated, 13, 2) AS INTEGER) - CAST(SUBSTR(b.created, 13, 2) AS INTEGER)) ) % 60 -- 秒 ) AS __4____pre__间隔时间 FROM blocks AS b WHERE b.type = 'd' AND b.root_id != '.block{.root_id}' AND ( b.updated > strftime( '%Y%m%d%H%M%S', 'now', 'localtime', '-3 day' ) OR b.created > strftime( '%Y%m%d%H%M%S', 'now', 'localtime', '-3 day' ) ) ORDER BY __2____datetime__最后更新时间 DESC LIMIT -1;