From db154ee46162dc0a5ae4cf95b0955febdcedc28e Mon Sep 17 00:00:00 2001 From: SouthFox Date: Mon, 14 Oct 2024 23:55:46 +0800 Subject: [PATCH] [feat] use id anchors replace NODE tag --- content/daily/2024-10-08.md | 13 +++++++-- .../references/20240604001302-中国文化课.md | 4 +-- .../20240623215707-程序员的底层思维.md | 4 +-- content/references/SICP 第一课.md | 4 +-- content/references/[De]ShenKe.ALunSi7.md | 24 ++++++++-------- soup.py | 28 +++++++++++-------- 6 files changed, 45 insertions(+), 32 deletions(-) diff --git a/content/daily/2024-10-08.md b/content/daily/2024-10-08.md index 95b3450..4934175 100644 --- a/content/daily/2024-10-08.md +++ b/content/daily/2024-10-08.md @@ -2,7 +2,7 @@ title = 2024-10-08 author = ["SouthFox"] date = 2024-10-08T23:30:00+08:00 -lastmod = 2024-10-09T01:03:18+08:00 +lastmod = 2024-10-14T23:27:31+08:00 tags = ["publish"] draft = false +++ @@ -12,7 +12,7 @@ draft = false [ReactFlux](https://github.com/electh/ReactFlux) 是一款 [Miniflux]({{< relref "../articles/Miniflux - 一款简约的在线 RSS 阅读器.md" >}}) 的三方阅读器,需要 Miniflux 的 API token (也支持账密)即可登录,支持条目滑过屏幕后标为已读功能,有效解决未读过载问题。因为之前策略是打开主页来看一看有感兴趣的才点进去,而其它的条目就不管了,而只有手动点进去的条目才会标为已读,这就导致未读会越积越多,如果两三天没打开的话也会出现没有翻到上次查看的位置导致漏掉。 -## AI 降温包 NODE {#ai-降温包} +## AI 降温包 {#8fa9cca6-8851-496d-bd3b-ae0721579c2c} 好好鼓捣了番 [RSS]({{< relref "../main/20240927003911-rss.md" >}}) 的阅读设置所以把积压大半年的几千条未读给解决了。发现这半年出现的最多的就是 [AI]({{< relref "../main/20241008234023-ai.md" >}}) 相关了,发现有趣的一点就是从一开始讲发展讲效用慢慢出现了看衰的观点,那就裁剪下来看个乐吧。 @@ -43,3 +43,12 @@ draft = false - [OpenAI 的“愚蠢”把戏,已经把大型科技企业“彻底毒害”了_OpenAI_Edward Zitron_InfoQ精选文章](https://www.infoq.cn/article/GiyOQvFzRw355bO5kLus) > 我们可能正处于一场 AI 次贷危机之中,成千上万的公司已经支付了过高的费用来集成 AI 技术,而这些技术可能并不稳定,也不一定能够带来预期的收益或回报。 + + +## 总结 {#总结} + +好吧,开始愉快的写起总结了,现在应该没有什么不好了,感觉应该多多的写点,先从摘抄写起,然后一步一步的过渡到读书笔记还有什么更有「希望」的用法之上。 + +今天去到公司然后就是在弄解决方案的事,王勇好像跟远润似乎也聊过,觉得我们俩之间配合不好,似乎也吹起了枕边风的样子,反正放平心态总之这不是我要管的事了。下午在弄集群的事然后鼓捣鼓捣相关脚本,然后晚上回来躺着睡了一小时好像,现在不怎么累,但首先还是有点进展了吧。 + +明天把相关书给看一下,最好做点读书笔记吧。 diff --git a/content/references/20240604001302-中国文化课.md b/content/references/20240604001302-中国文化课.md index 56bc1a3..73b20cb 100644 --- a/content/references/20240604001302-中国文化课.md +++ b/content/references/20240604001302-中国文化课.md @@ -2,7 +2,7 @@ title = "中国文化课" author = ["SouthFox"] date = 2024-06-04T00:13:00+08:00 -lastmod = 2024-06-07T23:47:52+08:00 +lastmod = 2024-10-14T23:27:02+08:00 tags = ["publish"] draft = false +++ @@ -43,7 +43,7 @@ draft = false [孔子]({{< relref "../main/20240604004229-孔子.md" >}})、[老子]({{< relref "../main/20240604004243-老子.md" >}})、[释迦摩尼]({{< relref "../main/20240604004300-释迦摩尼.md" >}})、[墨子]({{< relref "../main/20240604004316-墨子.md" >}})、[孟子]({{< relref "../main/20240604004332-孟子.md" >}})、[苏格拉底]({{< relref "../main/20240604004348-苏格拉底.md" >}}) …… -### 在路上-第 010-012 讲 NODE {#在路上-第-010-012-讲} +### 在路上-第 010-012 讲 {#ff7494ae-c03d-4aa9-991e-8052b3775521} 中国先贤总走在路上: diff --git a/content/references/20240623215707-程序员的底层思维.md b/content/references/20240623215707-程序员的底层思维.md index a39a9b7..8551255 100644 --- a/content/references/20240623215707-程序员的底层思维.md +++ b/content/references/20240623215707-程序员的底层思维.md @@ -2,7 +2,7 @@ title = "程序员的底层思维" author = ["SouthFox"] date = 2024-06-23T21:57:00+08:00 -lastmod = 2024-06-25T00:18:49+08:00 +lastmod = 2024-10-14T23:26:48+08:00 tags = ["publish"] draft = false +++ @@ -71,7 +71,7 @@ draft = false ## 维度思维 {#维度思维} -### 5.3.4 分析矩阵 P99 NODE {#5-dot-3-dot-4-分析矩阵-p99} +### 5.3.4 分析矩阵 P99 {#82e4078d-12b5-46a9-9205-1536d34fa973} [分析矩阵]({{< relref "../main/20240625000430-分析矩阵.md" >}})是一个分析工具,可以用来将复杂的场景变成「填空题」,选出要用什么策略和模式。例如: diff --git a/content/references/SICP 第一课.md b/content/references/SICP 第一课.md index bbde1d9..01d5f71 100644 --- a/content/references/SICP 第一课.md +++ b/content/references/SICP 第一课.md @@ -2,7 +2,7 @@ title = "SICP 第一课" author = ["SouthFox"] date = 2022-09-02T22:17:00+08:00 -lastmod = 2022-09-02T22:42:53+08:00 +lastmod = 2024-10-14T23:52:36+08:00 tags = ["publish"] draft = false +++ @@ -20,7 +20,7 @@ draft = false - 元语言抽象 -## Lisp 基础 NODE {#lisp-基础} +## Lisp 基础 {#73b2ba50-6129-442c-9c4c-908e8e1aef07} ### 括号 {#括号} diff --git a/content/references/[De]ShenKe.ALunSi7.md b/content/references/[De]ShenKe.ALunSi7.md index 6829e38..629290c 100644 --- a/content/references/[De]ShenKe.ALunSi7.md +++ b/content/references/[De]ShenKe.ALunSi7.md @@ -1,7 +1,7 @@ +++ title = "卡片笔记写作法:如何实现从阅读到写作" author = ["SouthFox"] -lastmod = 2024-06-11T00:00:10+08:00 +lastmod = 2024-10-14T23:26:37+08:00 tags = ["publish"] draft = false +++ @@ -14,7 +14,7 @@ draft = false 这是由于[必要难度]({{< relref "../main/必要难度理论.md" >}})的存在,而卡片笔记法人为地增加了[存储强度]({{< relref "../main/存储强度.md" >}})。 -#### 卡片笔记中有哪些索引?(P9) NODE {#卡片笔记中有哪些索引-p9} +#### 卡片笔记中有哪些索引?(P9) {#863e0ce8-6825-44b3-9c6e-4dd806ec1b72} - 主题索引 - 主题概览 @@ -42,7 +42,7 @@ draft = false ### 关于写作,你需要知道的 {#关于写作-你需要知道的} -#### 要如何在心流状态下写作?P39 NODE {#要如何在心流状态下写作-p39} +#### 要如何在心流状态下写作?P39 {#de662c2a-5807-4511-8ddb-cecda0872328} 将一个没有定式的任务分解成一个个小又清晰的任务, 例如写作可以分解成搜集资料、拟定大纲、修改措辞等, @@ -66,7 +66,7 @@ draft = false 必须让洞见引领方向。 -#### 卡片笔记法背后的灵感是什么?P47 NODE {#卡片笔记法背后的灵感是什么-p47} +#### 卡片笔记法背后的灵感是什么?P47 {#e40a5ed2-36a5-4b5a-81a9-cbbf2b24afe6} 一个想法或者笔记只有在它的上下文才有意义,而它的上下文不一定是它在文章中的出处。 所以卡片笔记法是要让笔记与不同上下文聚集起来并起到相应的作用。 @@ -88,13 +88,13 @@ draft = false ### 关于写作,你需要做的 {#关于写作-你需要做的} -#### 如何使用卡片笔记法撰写论文?P61 NODE {#如何使用卡片笔记法撰写论文-p61} +#### 如何使用卡片笔记法撰写论文?P61 {#c4bbcb59-b00d-4971-9c52-eeb3b2cec27d} - 记下[闪念笔记]({{< relref "../main/闪念笔记.md" >}}),记下脑中闪过的一个想法。 - 根据闪念笔记,整理成[文献笔记]({{< relref "../main/文献笔记.md" >}}),文献笔记要尽可能简短,并使用自己话语去转写,不能抄写而不去理解它的含义。 - 浏览前两步产生的笔记(最好每天划分相应时间),仔细研究跟自己的课题、项目、兴趣有何关联。 - 写下[永久笔记]({{< relref "../main/永久笔记.md" >}}),不是为了收集,而是为了衍生想法、论点和讨论。 -- 归档文献笔记和永久笔记,放入到笔记软件中,附上便于以后翻阅的链接和[索引](#卡片笔记中有哪些索引-p9)。 +- 归档文献笔记和永久笔记,放入到笔记软件中,附上便于以后翻阅的链接和[索引](#863e0ce8-6825-44b3-9c6e-4dd806ec1b72)。 - 在系统自下而上的发展主题,头脑风暴,检查笔记链、想法群。 - 积攒一定想法后,就能产生一个写作主题了,将它排列出来,取舍要写出什么。 - 写成初稿、完善、校对。 @@ -106,7 +106,7 @@ draft = false ### 简洁是最重要的 {#简洁是最重要的} -#### 记卡片笔记容易产生的混乱是什么? P87 NODE {#记卡片笔记容易产生的混乱是什么-p87} +#### 记卡片笔记容易产生的混乱是什么? P87 {#985649d2-36af-471a-b83e-0d85df60060e} - 把所有笔记都当成[永久笔记]({{< relref "../main/永久笔记.md" >}}),这样会导致被没那么好的笔记淹没。 - 只记与项目有关的笔记,为何要限制自己? @@ -118,7 +118,7 @@ draft = false ### 让工作推动你前进 {#让工作推动你前进} -#### 为什么要拿着笔阅读? P102 NODE {#为什么要拿着笔阅读-p102} +#### 为什么要拿着笔阅读? P102 {#3838da11-9f02-438a-9d94-1dd85195d458} 阅读中拿着笔写作是检验自己是否理解的最好方法,如果不拿自己的话转写,不理解书中的话就放入卡片盒,那么之后就会遇到阻碍。 @@ -143,13 +143,13 @@ draft = false ### 阅读和理解 {#阅读和理解} -#### 如何避免笔记产生误差? P137 NODE {#如何避免笔记产生误差-p137} +#### 如何避免笔记产生误差? P137 {#ee9b2095-bc67-42eb-9559-4f092dc4cda5} 要意识到[确认偏差]({{< relref "../main/确认偏差.md" >}}),类似达尔文,看到对自己理论最具批判性的论点就会马上记录下来。 - 确认是否将任务分解,并是否理解材料中的文本。 - 确认为阅读的内容做出了准确的笔记。 -- 找到笔记之间的[关联](#卡片笔记法背后的灵感是什么-p47),并建立联系。 +- 找到笔记之间的[关联](#e40a5ed2-36a5-4b5a-81a9-cbbf2b24afe6),并建立联系。 笔记应该收集相关不相关的,而不是反对不反对的。 @@ -237,9 +237,9 @@ draft = false ### 完稿和修订 {#完稿和修订} -#### 两个关键点 P217 NODE {#两个关键点-p217} +#### 两个关键点 P217 {#939e4765-29b2-4b7d-b4ea-c187cd2a59ee} -- 确保笔记的结构盒灵活性,[如使用笔记写一篇文章](#如何使用卡片笔记法撰写论文-p61)中,勤用卡片笔记法写笔记就能有很多材料去写文章,要挑出真正合适的。 +- 确保笔记的结构盒灵活性,[如使用笔记写一篇文章](#c4bbcb59-b00d-4971-9c52-eeb3b2cec27d)中,勤用卡片笔记法写笔记就能有很多材料去写文章,要挑出真正合适的。 - 尝试写多个项目的手稿,如同流水线一样,一个流水线的副产品往往可以被另一条流水线所用(想想沉浸机械!)。 diff --git a/soup.py b/soup.py index 349b0ee..0bd3858 100644 --- a/soup.py +++ b/soup.py @@ -6,6 +6,18 @@ from collections import defaultdict from bs4 import BeautifulSoup +UUID_PATTERN = "^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$" + +def match_uuid(headline_id: str | None) ->bool: + if headline_id is None: + return False + + result = re.match(UUID_PATTERN, headline_id) # Returns Match object + if result is None: + return False + + return True + def get_node_link(node_contend: str): node_soup = BeautifulSoup(node_contend, "lxml") @@ -51,13 +63,14 @@ def soup_link(): i = i.get("href") page_link.add(i) - nodes = soup.find_all(class_ = "NODE") + _nodes = soup.find_all(["h1", "h2", "h3", "h4", "h5", "h6"]) + nodes = [i for i in _nodes if match_uuid(i.get("id"))] nodes_dict = {} file_name = file.split('/')[-2] for node in nodes: node_dict = {} - node_element = node.parent.parent + node_element = node node_dict["name"] = node_element.contents[0] iii = node_element.find_next_sibling() @@ -105,16 +118,7 @@ def build_backlinks_dict(pages_dict): continue post_link = re.findall(r"public(.*)index.html", pages_dict[page]["path"])[0] - - if "#" in link[-1]: - if len(link) > 2: - # ['', 'posts', '卡片笔记写作法', '#要如何在心流状态下写作-p39'] - link_page = link[-2] - link_node = link[-1][1:] - - backlinks_dict[link_page]["nodes"][link_node]["backlinks"].append(post_link) - else: - backlinks_dict[_filter[0]]["backlinks"].append(post_link) + backlinks_dict[_filter[0]]["backlinks"].append(post_link) for node in pages_dict[page]["nodes"]: for node_link in pages_dict[page]["nodes"][node]["links"]: