saberhaoren / haoren

专注于使用不正经的方式进行最基础的赛博扫盲
https://saberhaoren.github.io/haoren/
MIT License
51 stars 27 forks source link

修复某个页面的访问问题 #45

Closed FoolShadowMan closed 1 month ago

FoolShadowMan commented 2 months ago

似乎是演示如何投稿时出现的文件导致某个页面空白了,把它删掉了。

感觉直接把全部文档名的空格改成 - 会更保险一点。

出问题的网址: https://saberhaoren.github.io/haoren/2.永乐大典/如何制作-Linux-Live-环境并启动

第一次PR,尝试一下。

shadow01a commented 2 months ago

用手机版的obsidian试验了一下,发现obsidian在面对 “如何配置-ArchLinux(未完成)”“如何配置 ArchLinux(未完成)” 还是挺分明的,所以它就重新创建了一个空文件,并没有引用原本的“如何配置 ArchLinux(未完成)”文件。

通过回看视频也发现了这个问题。(在打开关系图谱演示的时候)

所以也建议把所有文件的空格替换成-号,防止误提交。

另外尝试了一下修改文件中引用时的文件名,发现obsidian直接把空格后的文件名丢掉了,重新创建了一个“如何配置”文件。不知道网页有没有这种丢文件名的问题

shadow01a commented 2 months ago

从 #43 受到了启发,将文件中的引用改成“/2.永乐大典/如何配置%20ArchLinux(未完成)”,也就是插入一个 %20 也可以解决问题。

FoolShadowMan commented 2 months ago

首先,网站是会将有空格的页面直接加 - 去解决的,也就是说,网站即使识别到两个文件,它在导航栏链接时还是链接到错误的页面。这个是在网站链接上体现的,可以去网站上找几个特定页面去看一下。

其次,用 %20 替代空格这个只能在引用上起效,在导航栏上没用,网站导航栏是自动生成的。而且在文件名内把空格替换为%20后应该不管是网站还是 obsidian 都会把它识别为不同的文件。这个方法只能在引用上起效。

测试了一下,发现直接在文件名上替换空格为 - ,会识别成两个文件,感觉我的提议应该是没用的,最好的方法还是在提交前看一下有没有问题,或者只编写自己的那份文档就好,不要去碰obsidian的其他地方(

再测试了一下发现还是有办法的,不过要改文档内容,维护起来有点麻烦。

其实就是在文档的正文部分前加上

---
title: 原文档名
---

然后把原文档名的空格替换为 - 。

试了一下,obsidian不会影响正常文档内容显示,网站会正常显示。不过对于obsidian还是会识别成不同的文件,不知道会不会有其他副影响。

shadow01a commented 2 months ago

目前看这个问题影响的只有obsidian,只要obsidian编辑的时候不出问题就行,网站应该可以不管。

关于 %20 我的意思是使用它 只替换文章中的引用部分 ,就可以不碰其它地方了。(感觉也好维护?)

你说的方法很有道理,但工程量也确实有,而且obsidian的问题没解决,但也可以作为一种方法。

这个问题之后互相之间的引用多了会更明显,确实要重视一下。

另外发现在诸如 [[1.jpg]] 之类的引用时,空格是没关系的,但是使用 (hello)[hello.md] 这种引用时反而出现了问题,所以简单一点或许也可以成为方法?但是本人没有在网页上测试过,不知行不行(感觉应该可以)

FoolShadowMan commented 1 month ago

建议这个引用如果原来就是 %20 的话就不要改动,在编写文档的时候用 - 链接引用文档就好 ),obsidian 应该会把引用文档的空格改成 - ,不过这个我不太清楚。原来的文档大多数似乎不用改内容的样子。

我自己是已经把相关的文档给改好了(只改了文件名和加上了文档开头,以及有些本来文件名没有空格的我没有更改),不过我想先看一下这个改动会不会出问题再推上去,或者有什么其他要求的话提一下。

顺便如果是网页上的话,出来的效果和 obsidian 上是类似的,感觉应该是没问题的。

感觉可以要求需要在文件名里带空格的就用 - 来连接文字,并且在正文加上这个开头,或者干脆文档名不要有空格,就是不太实际。

还有问一下 “obsidian 的问题” 具体是什么问题,以及使用这个后面的这个引用具体会出现什么问题可以讲一下吗?如果感觉没必要就当我没讲好了。

其实主要是大家使用的md编辑器大多数都不是用 obsidian 导致的吧,随便拿一个 md 编辑器都能编写,感觉应该规范一下链接、图片和文档之间的引用会比较好。

shadow01a commented 1 month ago

本人就是从vscode转的。其实原先写也不是不行,但是没有obsidian这么直观的看到结果。所以如果要规范,写一份投稿前须知就行,但是目前网站的文章来源还是挺广泛的,不仅有github投稿,还有邮件什么的,想规范得花些精力。

文档原来没问题那确实没必要动,但是一些防范性工作是需要的。(尽管这种错误的推送审核时也一眼能看出来)

有时候文章的标题为了美观需要一些空格,没有空格是不太好。

obsidian的问题我又看了一下,可能只是手机版的问题,应该可以不用管它。

总之这件事涉及到了一些潜在的问题,应该等saberhaoren来看看最终怎么办。

saberhaoren commented 1 month ago

hi,@FoolShadowMan and @shadow01a

你们好,

我没太了解这个提交可能引发的问题,似乎不是很严重?我没有在你们的讨论中获取到足够多的信息和内容说我有必要把这个空白的文件删除掉。也许你们可以替我总结一下。

感谢你们的讨论,祝你们生活愉快, saberhaoren

FoolShadowMan commented 1 month ago

看一下我给出的那个对应的那个网页,原本应该是会显示出文章的,但是现在不显示了。

主要是在obsidian关系图的误操作中导致出现了一个文件名中以 - 替代空格的空白文件,然后网页错误的关联了这个空白的页面。

导航栏会有两个名字相似的条目,但是这两个条目都指向了这个错误的位置。

删除这个页面,预期的行为是会删掉错误的页面,使得正确的页面可以重新显示。

但是我不知道会不会出现其他问题。

FoolShadowMan commented 1 month ago

顺便问一下#43 中提交的文件里多出了一个好像没用的文件夹,这个没问题吗?

FoolShadowMan commented 1 month ago

后续的话打算将所有文件名带空格的都改成带 - 的,并且在文档开头加上我说的那个内容以将原来以空格分隔的标题正常显示出来。主要是避免可能发生的误操作。

不过我想先看看这个改动会有什么效果。

以及如果有什么其他的问题也可以提出来。感觉是不是说的不太清楚(

shadow01a commented 1 month ago

@saberhaoren 以下是概括(应该可以,大致都讲到了)

问题

由于 #35 的提交,导致一个空文件如何制作-Linux-Live-环境并启动.md 被提交,并使得如何安装 ArchLinux中的 链接出错 和原文件 “如何制作 Linux Live 环境并启动” 无法访问。(尽管它出现在了目录中)

这个Pr删除了错误的文件,使原本正确的文件可以被访问和链接。

调查

我们进行了一些调查,发现这个问题是因为 obsidian 和 网站 对链接的不同处理方式导致的。

首先,这个文件的原本链接指向的是“如何制作-Linux-Live-环境并启动”,在没有完全相同名字的文件时,网站会将其中的“-”符号认为是 空格 ,来匹配文件。

但是obsidian在此情况下,不会将该符号认为是空格,并且在点击链接时创建一个空文件。

obsidian在面对文件链接中的空格时,会直接将空格之后的文件名丢弃,链接也是错误的。

在您的 演示视频 40:10 处,这个文件就这样产生了。并且在提交后,网站发现这个链接对应的 完全相同名字的文件 出现了,就链接到了这个空文件上,并且 网站的网页链接 也因此变化,原本的文件失去了网页链接,无法访问。

建议

在此问题发生后,我们也探讨了一下如何在之后的提交中避免这一问题。

  1. 最直接的方法:防止这类文件的提交。

以下的方法针对投稿和文件的修改。

  1. 将文件名中的 空格 改成“-”符号,并在文档的开头添加 属性 ,详细可见上面的讨论。 这个方案由 @FoolShadowMan 提出,并称在网页上会正常显示。

  2. 将链接中的空格改为 %20 ,不改动原文件名。 这个方案由我提出,在obsidian上正常,在网站上 %20 被认为是一个“-”。 该方法可以使obsidian不会再创建空文件,并且正常链接。

其它

在调查和寻找避免方法时,我还发现了有关链接的一件事。

obsidian只有在类似 [1] (1.md) 的链接情况下,空格后的文件名才会被忽视,如果使用 [[1.md]] 的链接方式,就没有这一问题。