From ef479f5b188c64f6edf98805a8271f2c820172c9 Mon Sep 17 00:00:00 2001
From: i-shm 2023 年《Circulation Research》的动物-人联合研究显示,胆红素缺乏小鼠的动脉粥样硬化斑块更不稳定(纤维帽变薄、斑块内出血),人冠脉斑块中血红素代谢上调——机制层面的保护证据仍在积累[25]。 而胆结石是唯一在基因型与结局层面完全一致的因果证据:61,212 人前瞻队列 + MR,胆红素最高十分位症状性胆结石 HR = 1.57,TT 纯合基因型 HR = 1.22,存在剂量-反应[26]。 生理性轻度高胆红素血症(吉尔伯特综合征)是心血管风险的独立反向生物标志物,具有真实而复杂的抗氧化、抗炎与代谢活性;但"胆红素因果性地保护心脏"在欧洲人群最强设计中未获支持,不能作为临床干预的依据。 对个体而言,体检发现孤立性间接胆红素轻度升高(排除溶血与肝病后)应视为良性状态——既不必因此放松标准的心血管风险管理(血压、血脂、吸烟、运动),也不应被当作"心脏有保护"的免死金牌。对用药而言,吉尔伯特综合征患者使用 UGT1A1 底物药物(如伊立替康)需关注暴露增加。 一个常被误读的细节值得记住:2006 年弗雷明汉那篇著名的 HR = 0.36 是基因型-结局关联研究,不是孟德尔随机化;真正的 MR 检验直到 2013 年才由哥本哈根团队完成,而它给出的是否定答案。这个领域的发展轨迹——从乐观叙事到大型否定、再到人群异质性的复杂图景——本身就是流行病学方法学进步的一个标本。 一个常被误读的地方:2006 年弗雷明汉那篇著名的 HR = 0.36 是基因型-结局关联研究,不是孟德尔随机化;真正的 MR 检验直到 2013 年才由哥本哈根团队完成,而它给出的是否定答案。这个领域的发展轨迹——从乐观叙事到大型否定、再到人群异质性的复杂图景——本身就是流行病学方法学进步的一个标本。 ¶几个反直觉的细节
+¶几个容易被忽视的细节
¶参考文献

一般来说,Ubiquitous Language 有以下特点:
+基于此,它可以用在这些地方:
+假设正在开发一个电子商务系统,业务专家使用“订单”来描述用户购买的商品集合。团队可以在代码中使用“Order”来命名相关的类和方法:
+type Order = { |
在这个示例中使用了“Order”、“OrderItem”、“Customer”和“Product”等术语,这些术语都是 Ubiquitous Language 的一部分,可以提高代码与业务需求的一致性。
+]]>一般来说,Ubiquitous Language 有以下特点:
-基于此,它可以用在这些地方:
-假设正在开发一个电子商务系统,业务专家使用“订单”来描述用户购买的商品集合。团队可以在代码中使用“Order”来命名相关的类和方法:
-type Order = { |
在这个示例中使用了“Order”、“OrderItem”、“Customer”和“Product”等术语,这些术语都是 Ubiquitous Language 的一部分,可以提高代码与业务需求的一致性。
-]]>It’s hard to miss things when you don’t know different things exist
- -The first problem is, and personally, I believe it’s the biggest JavaScript problem ever: we don’t know what can throw an error. From a JavaScript error perspective, it’s the same as the following:
-try { |
JavaScript doesn’t know; JavaScript doesn’t care. You should know.
-Second thing, this is perfectly viable code:
-const request = { name: “test”, value: 2n }; |
No errors, no linters, even though this can break your app.
-Right now, in my head, I can hear, “What’s the problem, just use try/catch everywhere.” Here comes the third problem: we don’t know which one is thrown. Of course, we can somehow guess by the error message, but what about bigger services/functions with many places where errors can happen? Are you sure you are handling all of them properly with one try/catch?
-let greeting_file_result = File::open(“hello.txt”); |
The most verbose of the three shown here and, ironically, the best one. So, first of all, Rust handles the errors using its amazing enums (they are not the same as TypeScript enums!). Without going into detail, what is important here is that it uses an enum called Result with two variants: Ok and Err. As you might guess, Ok holds a value and Err holds…surprise, an error :D.
The summary here is that Rust always know where there might be an error. And it force you to deal with it right where it appears (mostly). No hidden ones, no guessing, no breaking app with a surprise face.
-And this approach is just better. By A MILE.
-We cannot make TypeScript errors work like the Rust. The limiting factor here is the language itself; it doesn’t have the proper tools to do that.
-But what we can do is try to make it similar. And make it simple:
-export type Safe<T> = |
we do need a few try/catches. The good thing is we only need about two, not 100,000:
-export function safe<T>(promise: Promise<T>, err?: string): Promise<Safe<T>>; |
This is just a wrapper with our Safe type as the return one. But sometimes simple things are all you need. Let’s combine them with the example from above.
const request = { name: “test”, value: 2n }; |
New solution is longer, but it performs better because of the following reasons:
-本快速入门文档参照 Turborepo 2.x 官方文档: https://turbo.build/repo/docs
最后一次编辑:二〇二四年九月二十七日下午六点〇七分
It’s hard to miss things when you don’t know different things exist
+ +The first problem is, and personally, I believe it’s the biggest JavaScript problem ever: we don’t know what can throw an error. From a JavaScript error perspective, it’s the same as the following:
+try { |
JavaScript doesn’t know; JavaScript doesn’t care. You should know.
+Second thing, this is perfectly viable code:
+const request = { name: “test”, value: 2n }; |
No errors, no linters, even though this can break your app.
+Right now, in my head, I can hear, “What’s the problem, just use try/catch everywhere.” Here comes the third problem: we don’t know which one is thrown. Of course, we can somehow guess by the error message, but what about bigger services/functions with many places where errors can happen? Are you sure you are handling all of them properly with one try/catch?
+let greeting_file_result = File::open(“hello.txt”); |
The most verbose of the three shown here and, ironically, the best one. So, first of all, Rust handles the errors using its amazing enums (they are not the same as TypeScript enums!). Without going into detail, what is important here is that it uses an enum called Result with two variants: Ok and Err. As you might guess, Ok holds a value and Err holds…surprise, an error :D.
The summary here is that Rust always know where there might be an error. And it force you to deal with it right where it appears (mostly). No hidden ones, no guessing, no breaking app with a surprise face.
+And this approach is just better. By A MILE.
+We cannot make TypeScript errors work like the Rust. The limiting factor here is the language itself; it doesn’t have the proper tools to do that.
+But what we can do is try to make it similar. And make it simple:
+export type Safe<T> = |
we do need a few try/catches. The good thing is we only need about two, not 100,000:
+export function safe<T>(promise: Promise<T>, err?: string): Promise<Safe<T>>; |
This is just a wrapper with our Safe type as the return one. But sometimes simple things are all you need. Let’s combine them with the example from above.
const request = { name: “test”, value: 2n }; |
New solution is longer, but it performs better because of the following reasons:
+DADGAD (发音为 “dad-gad”): 这是凯尔特音乐(Celtic Music)中最具代表性的定弦。它的空弦音给人一种既非大调也非小调的模糊感,充满了神秘和悠远的色彩,非常适合营造氛围音乐和复杂的指弹旋律。
+挂留和弦(Suspended Chord),通常简写为 “sus”,是一种在传统和弦结构上进行了巧妙“修改”的和弦。它的核心特点是:用一个非三度的音,去“替代”或“悬挂”了原本决定和弦大/小调色彩的三度音,从而创造出一种独特的声音效果。
+想象一个标准的大三和弦或小三和弦,它由根音、三度音和五度音构成。其中,三度音是决定这个和弦听起来是明亮、开心的“大调”,还是忧郁、伤感的“小调”的关键。
+而挂留和弦,就是把这个关键的“三度音”暂时拿掉,换上别的音。最常见的替代者有两个:
+一是 纯四度音 (Perfect 4th) ,二是 大二度音 (Major 2nd) 。
sus4 和弦 (挂四和弦) 由 根音 (1) + 纯四度音 (4) + 纯五度音 (5) 构成,即用四度音替代了原本的三度音。听感上,这是最常见的挂留和弦。它创造出一种强烈而悬浮的张力感,声音既不属于大调也不属于小调,听起来非常“开阔”。例如,一个 Csus4 和弦,就是由 C、F、G 三个音构成,取代了标准C大调和弦(C-E-G)中的 E 音。
+sus2 和弦 (挂二和弦) 由 根音 (1) + 大二度音 (2) + 纯五度音 (5) 构成,特点是用二度音替代了原本的三度音。听感上,sus2和弦的声音比sus4更柔和、更明亮一些。它同样具有开放、模糊的色彩,但张力感稍弱,听起来更像是一种平静、梦幻的色彩和弦。例如,一个 Csus2 和弦,就是由 C、D、G 三个音构成,取代了标准C大调和弦(C-E-G)中的 E 音。
+而 DADGAD 定弦方式的空弦音,其核心就是一个挂留和弦,具体来说是一个 Dsus4 和弦。当你弹响 DADGAD 的所有空弦时,你实际上听到的就是 D、G、A 这三个音在不同八度上的叠加和共鸣。这三个音不多不少,正好构成了 Dsus4 和弦。
+DADGAD 定弦的精髓,就在于它将整个吉他的开放状态变成了一个巨大的、共鸣丰富的 Dsus4 挂留和弦。
+这正是为什么它能产生那种“既非大调也非小调的模糊感”和“空灵、悬浮”的听感。因为三度音(F# 或 F)的缺失,和弦的“身份”被悬挂了起来,没有明确地告诉你它是快乐的(大调)还是悲伤的(小调),而是创造出一种充满想象空间、广阔而悠远的音景。
+]]>DADGAD (发音为 “dad-gad”): 这是凯尔特音乐(Celtic Music)中最具代表性的定弦。它的空弦音给人一种既非大调也非小调的模糊感,充满了神秘和悠远的色彩,非常适合营造氛围音乐和复杂的指弹旋律。
-挂留和弦(Suspended Chord),通常简写为 “sus”,是一种在传统和弦结构上进行了巧妙“修改”的和弦。它的核心特点是:用一个非三度的音,去“替代”或“悬挂”了原本决定和弦大/小调色彩的三度音,从而创造出一种独特的声音效果。
-想象一个标准的大三和弦或小三和弦,它由根音、三度音和五度音构成。其中,三度音是决定这个和弦听起来是明亮、开心的“大调”,还是忧郁、伤感的“小调”的关键。
-而挂留和弦,就是把这个关键的“三度音”暂时拿掉,换上别的音。最常见的替代者有两个:
-一是 纯四度音 (Perfect 4th) ,二是 大二度音 (Major 2nd) 。
sus4 和弦 (挂四和弦) 由 根音 (1) + 纯四度音 (4) + 纯五度音 (5) 构成,即用四度音替代了原本的三度音。听感上,这是最常见的挂留和弦。它创造出一种强烈而悬浮的张力感,声音既不属于大调也不属于小调,听起来非常“开阔”。例如,一个 Csus4 和弦,就是由 C、F、G 三个音构成,取代了标准C大调和弦(C-E-G)中的 E 音。
-sus2 和弦 (挂二和弦) 由 根音 (1) + 大二度音 (2) + 纯五度音 (5) 构成,特点是用二度音替代了原本的三度音。听感上,sus2和弦的声音比sus4更柔和、更明亮一些。它同样具有开放、模糊的色彩,但张力感稍弱,听起来更像是一种平静、梦幻的色彩和弦。例如,一个 Csus2 和弦,就是由 C、D、G 三个音构成,取代了标准C大调和弦(C-E-G)中的 E 音。
-而 DADGAD 定弦方式的空弦音,其核心就是一个挂留和弦,具体来说是一个 Dsus4 和弦。当你弹响 DADGAD 的所有空弦时,你实际上听到的就是 D、G、A 这三个音在不同八度上的叠加和共鸣。这三个音不多不少,正好构成了 Dsus4 和弦。
-DADGAD 定弦的精髓,就在于它将整个吉他的开放状态变成了一个巨大的、共鸣丰富的 Dsus4 挂留和弦。
-这正是为什么它能产生那种“既非大调也非小调的模糊感”和“空灵、悬浮”的听感。因为三度音(F# 或 F)的缺失,和弦的“身份”被悬挂了起来,没有明确地告诉你它是快乐的(大调)还是悲伤的(小调),而是创造出一种充满想象空间、广阔而悠远的音景。
-]]>IBS 的病理生理机制非常复杂,并非由单一原因导致,而是多种因素相互作用的结果。目前的医学研究认为,其主要与以下几个核心机制有关:
-这是 IBS 最核心的病理机制。大脑和肠道通过神经、内分泌和免疫系统形成一个双向沟通的“脑-肠轴”。在 IBS 患者中,这个轴的功能出现紊乱。
-这是指 IBS 患者的肠道对各种刺激(如食物、气体、肠壁的牵拉)异常敏感。正常人可以耐受的肠道内压力或活动,在 IBS 患者身上却会引发强烈的腹痛、急便感或不适。这种“放大”的感觉是 IBS 腹痛的主要原因。
-肠道肌肉的收缩和舒张节律出现问题,导致食物和粪便在肠道内的转运速度异常。
-IBS 患者的肠道菌群组成和功能与健康人存在差异。有害菌可能增多,有益菌(如双歧杆菌、乳酸杆菌)可能减少。这些失调的菌群会影响肠道屏障功能、产生过多气体、并激活免疫系统,导致腹胀和腹泻。
-部分 IBS 患者的肠道黏膜中可以观察到轻微的炎症反应,例如肥大细胞等免疫细胞数量增多并被激活。这些细胞会释放组胺、5-羟色胺等物质,直接刺激肠道神经,引起疼痛和动力异常。这种情况尤其在感染性肠炎后发生的 IBS(PI-IBS)中更为常见。
---IBS的治疗需要个体化,所有药物都应在医生指导下使用。医生应该根据具体的 IBS 亚型(腹泻型、便秘型、混合型)和主要症状来选择最合适的药物。
-
1. 针对腹痛和腹胀(解痉药)
-这类药物通过放松肠道平滑肌,缓解肠道痉挛来减轻疼痛。
-2. 针对腹泻 (IBS-D)
-3. 针对便秘 (IBS-C)
-4. 调节脑-肠轴功能的药物(精神类药物)
-对于伴有明显焦虑、抑郁或常规治疗无效的顽固性腹痛患者,医生可能会考虑使用低剂量的抗抑郁药。
-补充特定的益生菌菌株(如某些双歧杆菌和乳酸杆菌)有助于恢复肠道微生态平衡,改善腹胀和总体症状。不同菌株效果各异,需根据产品说明和医生建议选用。
-]]>我使用 Pop!_OS,此发行版使用 EFI 启动,故而可以在 /boot/efi/loader/loader.conf 中加上:
options quiet splash amdgpu.dcdebugmask=0x10 amdgpu.sg_display=0 |
对于其他使用 EFI 或 GRUB 启动的发行版也可以添加类似的参数尝试尝试。
+IBS 的病理生理机制非常复杂,并非由单一原因导致,而是多种因素相互作用的结果。目前的医学研究认为,其主要与以下几个核心机制有关:
+这是 IBS 最核心的病理机制。大脑和肠道通过神经、内分泌和免疫系统形成一个双向沟通的“脑-肠轴”。在 IBS 患者中,这个轴的功能出现紊乱。
+这是指 IBS 患者的肠道对各种刺激(如食物、气体、肠壁的牵拉)异常敏感。正常人可以耐受的肠道内压力或活动,在 IBS 患者身上却会引发强烈的腹痛、急便感或不适。这种“放大”的感觉是 IBS 腹痛的主要原因。
+肠道肌肉的收缩和舒张节律出现问题,导致食物和粪便在肠道内的转运速度异常。
+IBS 患者的肠道菌群组成和功能与健康人存在差异。有害菌可能增多,有益菌(如双歧杆菌、乳酸杆菌)可能减少。这些失调的菌群会影响肠道屏障功能、产生过多气体、并激活免疫系统,导致腹胀和腹泻。
+部分 IBS 患者的肠道黏膜中可以观察到轻微的炎症反应,例如肥大细胞等免疫细胞数量增多并被激活。这些细胞会释放组胺、5-羟色胺等物质,直接刺激肠道神经,引起疼痛和动力异常。这种情况尤其在感染性肠炎后发生的 IBS(PI-IBS)中更为常见。
+++IBS的治疗需要个体化,所有药物都应在医生指导下使用。医生应该根据具体的 IBS 亚型(腹泻型、便秘型、混合型)和主要症状来选择最合适的药物。
+
1. 针对腹痛和腹胀(解痉药)
+这类药物通过放松肠道平滑肌,缓解肠道痉挛来减轻疼痛。
+2. 针对腹泻 (IBS-D)
+3. 针对便秘 (IBS-C)
+4. 调节脑-肠轴功能的药物(精神类药物)
+对于伴有明显焦虑、抑郁或常规治疗无效的顽固性腹痛患者,医生可能会考虑使用低剂量的抗抑郁药。
+补充特定的益生菌菌株(如某些双歧杆菌和乳酸杆菌)有助于恢复肠道微生态平衡,改善腹胀和总体症状。不同菌株效果各异,需根据产品说明和医生建议选用。
]]>libdecor-gtk-WARNING: Failed to initialize GTK |
这是因为 VSCode 默认使用 X11,可以使用以下参数启动 VSCode:
code --enable-features=UseOzonePlatform --ozone-platform=wayland |
我使用 Pop!_OS,此发行版使用 EFI 启动,故而可以在 /boot/efi/loader/loader.conf 中加上:
options quiet splash amdgpu.dcdebugmask=0x10 amdgpu.sg_display=0 |
对于其他使用 EFI 或 GRUB 启动的发行版也可以添加类似的参数尝试尝试。
]]>时光对谁都不温柔,愿意对我温柔的,只有身边陪我一起迎接时光洗礼的人。
宇宙中也不会有什么声音, 视觉上再震撼的毁灭也只是发生在沉默之中。
一切重新沉寂下来。
-]]> -我们渴望什么,生活就拿走什么。我们害怕什么,时间就带来什么。我们不断下沉,下沉。仿佛同这漫长的人生一样,等不到尽头。
-而衣冠立于浊世,先是个体,然后结对,最后成群,这一生总要有这样那样的分别,迈过这一年,再过下一年,有多少这样的每一年。
-这世上也不是所有事都算得准的。
]]>我知道,能明确感受到,远处的风力发电机每转一圈我对这里的牵挂就更深一点,太阳每次升到我头顶都会把我的身体压进泥土里一点。
夕阳下的街头空无一人,窗户间的缝隙吹来寒风,隔壁回锅肉的香味混在其中,困顿中还有美好的可能,所以别让自己太过消沉。
所以别让自己太过消沉。
+]]> +我们渴望什么,生活就拿走什么。我们害怕什么,时间就带来什么。我们不断下沉,下沉。仿佛同这漫长的人生一样,等不到尽头。
+而衣冠立于浊世,先是个体,然后结对,最后成群,这一生总要有这样那样的分别,迈过这一年,再过下一年,有多少这样的每一年。
+这世上也不是所有事都算得准的。
]]>直到他们在梦中期待新的一天中无限的未来。
可惜这都与我无关,那是我在学校的最后一天,我和他们一起放假,再也没回过学校。
但我当天的确睡了个好觉。
+]]> +时间会带走了一个人,也带走了他的呼吸,他的声音,他掌心的温度。但似乎又留下了些什么
光的颗粒在空气里浮动,在记忆里游走,她闭上眼睛,光从睫毛上滑过,像许多个早晨,像许多个傍晚,像她们再次相遇的无数个灿然的瞬间。她在其中走走停停,像一粒微尘,又像一颗星。
-]]>“对不起…”
-“对不起啊…”
-一遍遍呢喃,泪水在脸上结成透明的冰壳。新年的钟声穿过街巷抵达这里时,他发现怀里抱着的不过是条破毯子。
-烟花熄灭后的黑暗从四面八方涌来。远处人家的暖光透过窗棂,在积雪上切割出方方正正的金色牢笼。
-他蜷缩在冰冷的水泥台上,看着自己的影子被月光钉死在斑驳的广告牌上。
-"除夕快乐。"他对广告牌上褪色的月饼海报说。海报里笑得喜庆的孩子嘴角开裂,被寒风吹起一角。
-雪落满了他的睫毛。
]]>于是我想给你那朵黄玫瑰的记忆。不是因为我想要你变成她的样子,而是因为我在你身上看见了自己喜欢的那种安静和从容。我想让你在今后的某一天,当公交门打开,站台忽然安静下来,当你走在一条熟悉的路上,风从树梢里穿过,当你坐在窗边,光从书页上滑过去的时候,能闻到那种味道,能想起那一刻的我们,我们在傍晚的风里站着,既不躲藏也不假装,我们把时间握在手里,像握着一朵温柔得让人不需要理由的花。
如果你愿意,我可以每天傍晚经过花店门口,我们可以把那种味道带回家,用一只透明的瓶子装起来,不需要解释它来自哪里,也不需要把它和任何过去比较。它只会在你需要的时候出现,像一个老朋友,提醒你,不是每一次都要变成别人,不是每一次都需要证明你已经忘记。你可以是现在的你,我可以是现在的我。我们可以在同一个黄昏里站一会儿,看看天空从浅到深,看看风从我们旁边走过,看看影子在我们的脚边拉长。
黄玫瑰的味道不会要求我们变成谁,它只会给我们一点轻的力气,让我们在时间里往前走走。我把这份力气给你,也给我自己,然后我们就接着往前走,带着这种不喧哗的光。
+]]> +“对不起…”
+“对不起啊…”
+一遍遍呢喃,泪水在脸上结成透明的冰壳。新年的钟声穿过街巷抵达这里时,他发现怀里抱着的不过是条破毯子。
+烟花熄灭后的黑暗从四面八方涌来。远处人家的暖光透过窗棂,在积雪上切割出方方正正的金色牢笼。
+他蜷缩在冰冷的水泥台上,看着自己的影子被月光钉死在斑驳的广告牌上。
+"除夕快乐。"他对广告牌上褪色的月饼海报说。海报里笑得喜庆的孩子嘴角开裂,被寒风吹起一角。
+雪落满了他的睫毛。
]]>2023 年《Circulation Research》的动物-人联合研究显示,胆红素缺乏小鼠的动脉粥样硬化斑块更不稳定(纤维帽变薄、斑块内出血),人冠脉斑块中血红素代谢上调——机制层面的保护证据仍在积累[25]。
而胆结石是唯一在基因型与结局层面完全一致的因果证据:61,212 人前瞻队列 + MR,胆红素最高十分位症状性胆结石 HR = 1.57,TT 纯合基因型 HR = 1.22,存在剂量-反应[26]。
-生理性轻度高胆红素血症(吉尔伯特综合征)是心血管风险的独立反向生物标志物,具有真实而复杂的抗氧化、抗炎与代谢活性;但"胆红素因果性地保护心脏"在欧洲人群最强设计中未获支持,不能作为临床干预的依据。
对个体而言,体检发现孤立性间接胆红素轻度升高(排除溶血与肝病后)应视为良性状态——既不必因此放松标准的心血管风险管理(血压、血脂、吸烟、运动),也不应被当作"心脏有保护"的免死金牌。对用药而言,吉尔伯特综合征患者使用 UGT1A1 底物药物(如伊立替康)需关注暴露增加。
-一个常被误读的细节值得记住:2006 年弗雷明汉那篇著名的 HR = 0.36 是基因型-结局关联研究,不是孟德尔随机化;真正的 MR 检验直到 2013 年才由哥本哈根团队完成,而它给出的是否定答案。这个领域的发展轨迹——从乐观叙事到大型否定、再到人群异质性的复杂图景——本身就是流行病学方法学进步的一个标本。
+一个常被误读的地方:2006 年弗雷明汉那篇著名的 HR = 0.36 是基因型-结局关联研究,不是孟德尔随机化;真正的 MR 检验直到 2013 年才由哥本哈根团队完成,而它给出的是否定答案。这个领域的发展轨迹——从乐观叙事到大型否定、再到人群异质性的复杂图景——本身就是流行病学方法学进步的一个标本。
