obsidian

使用 Obsidian 的 CSS 代码片段优化你的 Obsidian 体验

我最在研究使用 Obsidian,期间更换了不少的主题,但都不尽如人意,主要的原因便是行高度。大部分主题的行高都是面向英文设计,对于中文场景下的方块字,会使得整个页面的拥挤度极大, 非常容易让你感受到挤压感。

因此,我决定使用 Obsidian 自带的 CSS 代码片段功能来优化我的体验。CSS 代码片段可以在你自己的存储库内存储一些 CSS 样式,并生效在你的 Obsidian 当中,从而为你带来优化界面的可能。

打开 Obsidian 设置,进入「外观」—「CSS 代码片段」,可以看到这里的配置。默认情况下,是没有任何配置的。你可以点击右上角的打开目录的 Icon ,进入到 CSS 存储目录,创建对应的 CSS 文件。创建完成后,回到 Obsidian 中启用这个 CSS 就可以达成你的效果了。

d2b5ca33bd970f64a6301fa75ae2eb22 6

实务

以我自己为例,这是我使用的 Obuntu 主题的默认行高,看起来不算特别差,但总感觉行与行之间的距离太近,让人略感压抑。

d2b5ca33bd970f64a6301fa75ae2eb22 5
摘录

于是,我便在刚刚说的 CSS Snippet 文件夹下新建了一个 line-height.css 文件,并在其中添加如下代码,并在设置中生效。

// 以下代码仅用作演示
*{
  line-height: 2 !important;
}
Code language: JavaScript (javascript)

Obsidian 的 UI 中的文字就会变得更易于查看了,这样就达成了我的目标。不过,我上面写的 CSS 非常的粗糙,是对所有的文字都进行了修改(包括那些本来不应该修改的),所以在真实场景下使用,还是需要自行 Debug 来进行修改。

d2b5ca33bd970f64a6301fa75ae2eb22 8

参考

summary

2022 年 10 月月度总结

Objective 1:持续获取现金流,并构建未来收益的现金牛

KR1:投资收益达到 20000 元

10 月份略有波动,但整体来说,收益不达预期。感觉需要搞更多的现金进入到投资当中,才能符合预期。

KR2 :单篇稿费突破 6000 元

无变化

KR3 :达成年度预算,支出不超预算

没啥变化,封控…疫情…大概率超预算,但应该还好。

KR4 :构建软件类现金牛业务,预期产生收益 10000 元人民币

暂无进展

Objective 2:提升生活基础设施,构建未来生活好基础

KR1:前往 6 个城市旅行

天津疫情封控。难。

KR2:进行 20 次文娱活动

没有进行啥文娱活动。不过报名了美国 AHA 协会的培训,考了个 CPR 的证书。以后万一在街上碰到了心脏骤停的人,可以帮忙施救了。

KR3:借助智能化设备,缩减在家务相关事务上耗费的时间

购买了小米音箱,把之前众筹的小米自动窗帘设备配置起来了。可以实现每天自动开关窗帘了!挺好。

Objective 3 :开拓视野,打造多元行业人才

KR1:写 15 篇书评

暂无进展

KR2:输出关于 API 的 Newsletter 12 封

10月写了两封,完整的目录见:竹白

KR3 :完成计划中的三本图书的写作

暂无进展。

9e6a931fa940bc97a9753cbfa3f2a954

树莓派镜像烧录后无法使用 SSH 的问题 Debug

最近开始玩树莓派,使用官方的树莓派镜像烧录器烧录了一个镜像到系统中。

但烧录成功后发现却无法通过 SSH 登录。但我记得自己明明是在配置时设置了「开启 SSH 服务」。

d2b5ca33bd970f64a6301fa75ae2eb22 1

经过网上搜索发现,原来这个配置并没有什么卵用。你配置完成后,需要在 TF 卡的根目录创建一个 ssh 文件夹,来开启 SSH 功能。

d2b5ca33bd970f64a6301fa75ae2eb22 4
people standing on shore during golden hour

“宗族化”与“城市化”

和堂弟相对长期的生活了一段时间后,我对于城市里的孩子和村里出来的孩子又有了新的认识 — 边界感不同。

在我看来,这种边界感的不同,是来自于各自生长的环境:

  • 城市化:城市里的孩子们往往是散居、各自独立的生活状态。家庭成员只有自己、爸爸和妈妈。周围虽然也有邻居,但往往只会在外面玩,游玩结束后,各回各家,各找各妈。
  • 宗族化:村里的孩子们由于历史的原因,经常会出现一个村子里很多户之间都有一定的宗亲关系。各家孩子可能会一起到一个孩子家里玩,甚至是吃住在这个孩子家中。

这种城市化和宗族化的差异,致使城里的孩子会更加的明确「你」和「我」的边界,「我」会维护好自己的边界,尽量不进入到「你」的边界中。这种边界感,在城市这种陌生人社会当中,如鱼得水。

而村里的孩子在村里的时候,并不会有特别强的这种边界感,初次到城市当中生活时,会更容易碰壁,并因此碰壁之后缩小到一个更小的边界范围。在这个边界范围里,继续自己没有边界感的状态。

城市化不一定是好事,因为其中隐含了「我不完全信任你」的含义;宗族化也不一定是好事,因为在默认社会下,不加选择的信任,会导致我们受到欺骗。

在我看来,一个孩子需要接受城市化的教育,也需要接受宗族化的生活,这样才能在保护好自己的前提下,尽可能多的向外释放善意,开放自己。

red and white temple under blue sky during daytime

为什么国内的大公司普遍在北京设立分部

最近在研究美国的互联网公司的时候,发现一个很有意思的事情,美国的互联网公司并不会像国内的互联网公司这样,扎堆在首府开设分部。举个例子来说,你会发现,白宫所在地并没有什么大型的企业。

如果进一步研究的话,你会发现,欧洲的很多互联网企业/软件公司也是分布在全国各个地方的。

这是一个很有意思的区别:为什么中国的互联网公司,甚至是各行各业的公司都要在北京设立分部?

我自己猜测的一个原因是中国的这种体制决定的。

中国是社会主义国家,在政治和管理方面,政府会有较强的管控的欲望和权力。这导致一个行业的兴衰可能不仅仅是看市场,还要看政府的政策(教培行业就是个例子)。在这种情况下,对于风险更加敏感的大公司自然会在北京安排相应分部,以便于 GR 团队(Government Relationship)和政府相关部门沟通,以便了解政府相关安排和动态,提前规避可能的风险。

而海外虽然政府也有影响,但远达不到中国这种程度,所以企业可以分部的更加的均匀,不需要在首府呆着。

这种模式下带来的,是中国的一线城市和三四线城市的两极分化极为严重。一线城市繁荣无比,三四线城市则萧条无比。

想了想,感觉无解。

woman in black jacket sitting on chair

有耐心,但做事要快

今年的年景不好,堂弟虽然学习了半年的前端,掌握了一些基本的前端开发能力,但依然找不到一个工作。这非常的合理,毕竟他之前没怎么学过研发,如果自学很快就能找到工作,让那些科班的同学们如何自处。

但作为求职的人来说,也必须明白,在当下这个环境下,要做到有耐心,但做事要快

有耐心,是指要明确在当前的这个大的背景下,求职并不容易,甚至可以说是非常难。环境不好的情况下,刚毕业的学生是最不容易找到工作的。毕竟作为企业,都希望招募到熟手来加快企业的节奏。在这样的大的背景下,找工作必定是一个漫长的事情。

做事要快,是指虽然在这个大的环境下,求职不容易,但我们需要明确我们做事的方法和手段,尽可能快的获取到反馈,帮助自己更快的识别问题、纠正问题,从而更早的抵达目的地。

这两者并不冲突,同时,也很难。

toddler looking at believe in yourself graffiti

做让事发生的人

在工作和生活中,我们可以选择成为「让事发生」的人,而不是「等事发生」的人。

举个例子来说,假设你需要建造一个猫窝,在资源充足的情况下,你可能马上就可以自己造一个猫窝(或者是买一个猫窝)。但现实情况下可能并不允许你马上就能造一个猫窝。

这个时候,你有两种选择:

  1. 让事发生:你可以选择先查询一下建造一个猫窝需要什么样的物料,并从现在开始,当手头的资源充足的时候,就先去购买对应的物料。直到你凑齐物料之后,再建造一个完整的猫窝。
  2. 等事发生:你可以选择先什么都不做,等待时机成熟之时,自然便有了资源来购买猫窝。

这两种选择最大的区别是「让事发生」的人投入了自己的精力和时间让事情有了发生的可能。而后者则是等待时机的成熟,被动地等待事情发生。但事情往往不能遂人愿,时机可能永远都等不到。

为了让你希望的事情发生,试着变成一个「让事发生」的人吧。

selective focus photography of an arrow

目标指引你成功

每一个人都需要一个目标,来帮助你抵达彼岸。不过可惜的是,我们的教育很少教育大家关于目标、关于理想、关于人生价值的内容。这可能是我们的教育的问题。

不过,如果你看到这篇文章,说明你至少不是一个那么普通的人 —— 这年头看独立博客的人已经不多了。

目标存在的意义并不是和很多人想象中那样的无用。每当我和别人提起,“你是否有理想?”、“你找到你的人生母题是什么了么”,大家常常会说:“我的理想就是不用上班”。

但这只是一阶回答,不上班只是表象。那么你不上班之后要做的事情,才是你的理想 —— 它可能是宅在家里打游戏(只要你能一直打下去)、也可能是周游列国,也可能是做你想做的事情。

它是什么并不重要,重要的是,你必须想清楚你的目标(至少是想清楚当下的目标),有了这个目标,你便可以在做出选择的时候,基于你的目标进行纠偏,从多个选择中,找到那个离你的目标更近的选项。

d2b5ca33bd970f64a6301fa75ae2eb22 3

有没有目标,你都有可能抵达/无法抵达终点。但有了目标,可以让你抵达终点的速度变得更快一些。

MacBook Pro on brown wooden table

bundle audit 命令失效怎么办?

我最近在使用 Github 来做 Rails 的 CI 自动检查时,发现 CI 自动检查时使用的 bundle audit 命令失效了,搜索后发现,是 Bundle 将 audit 拆为了单独的 gem ,而 CI 的模板并未更新,导致在调用的时候出现了错误。

d2b5ca33bd970f64a6301fa75ae2eb22 1

既然明确了问题,解决就变得简单了。只需要在 CI 的脚本当中,加入对应的 gem 安装命令,即可完成修复。

  - name: Install bundle audit
        run: gem install bundler-audit

black flat screen computer monitor

通过 Code Snippet 提升效率

在开发应用的时候,我们常常会借助快速生成工具来帮助我们生成一些模板代码。

相比于 JS,Ruby 干脆让很多需要手动输入的地方可以不用输入,体验会更好。Rails 更是做到了极致,大量的约定。对于一些模板化的行为,你甚至可以不用写代码,框架帮你来解析。

常见的编辑器比如 VSCode、Sublime Text 都提供了大量基于插件的 Code Snippets,方便你可以快速生成一段模板代码。

不过在实际开发过程中,他们提供的模板代码可能并不太符合我们的需求,我们往往可能会有一些定制化的需求需要满足,这个时候,就比较依赖自定义模板了。

好在各种编辑器不止可以通过插件来定义 Code Snippet,你还可以自定义自己需要的 Code Snippet。

以 VSCode 为例,你可以参考其官方文档来定义自己需要的 Code Snippet,只需要简单的配置,就可以定义出你自己所需要的 Code Snippet。它可以是你自己写代码时的 Code Snippet,也可以是你在写博客时的 Code Snippet(比如写博客时自动生成前置的描述信息)。

不过,Code Snippet 的语法很多时候比较麻烦,需要一行一个字符串,对于较为复杂的 Code Snippet,构建这个 Code Snippet 本身就比较麻烦。好在有一些第三方工具,可以帮助简化这个过程。比如 Snippet Generator 就可以非常方便的帮助生成 VSCode 的语法,你只需要将需要生成模板的代码粘贴在左侧,并填写一些基本信息,就可以生成包括 VSCode、Sublime、Atom 的 Code snippet 代码,再将其粘贴到你的 VSCode 的配置中即可。

d2b5ca33bd970f64a6301fa75ae2eb22
Snippet Generator

你还可以将其中的一部分内容替换为对应编辑器所提供的占位符,就可以帮助你更加高效的利用这个 Snippet 来完成内容的快速撰写。

其他