2024年12月6日星期五

睡不着啊,睡不着,怎么办(四)

 这个月(11月)

自从停用了氟伏沙明,改用曲唑酮+安非他酮,效果非常明显,每天能睡6个小时,深度睡眠也有1个小时以上,心情还可以,不过比刚换药的时候还是差一些。不过,好消息是从11月底开始,我基本上不吃扎来普隆(镇静安眠类)了。


复诊

12月初去医院复诊,大夫对现在的治疗比较满意,原方照旧。考虑到注意力和记忆力的问题,加开了伏硫西汀,告知我,试一下看看。没想到,伏硫西汀还有仿制的,我还是吃原研的吧(心达悦)。



真贵啊,一盒要四百多,能吃半个月。听说有用20mg/d的,那一盒药就够吃一周,一个月得快2000块钱。希望能有个好效果。

再复诊

伏硫西汀吃完了以后睡眠就有问题,和氟伏沙明效果差不多。吃了两天就停了,看来只要动了5-HT这条通路,就睡不着,对5-HT太敏感了。大夫建议暂时停用伏硫西汀,要是效果不满意,可以尝试早上吃5mg看看。

2024年11月8日星期五

睡不着啊,睡不着,怎么办(三)

这个月(10月)

越来越糟糕了,加上十月份的中期,全线崩溃,每天非常焦虑,情绪很差,简直没法活。晚上只能睡3~4个小时。
  • 氟伏沙明从一片加到了三片,足量足疗程,没有任何效果,副作用还比较大。
  • 看了主任的专家号,开了右佐匹克隆,吃了没有效果,反而第二天上午困得不行,坐在那都能睡着。

换药

实在不行了,又挂了初诊的大夫,伏氟沙明足量足疗程后,大夫终于放弃了这个方案,改用:
  • 盐酸安非他酮缓释片(II):起始剂量150mg,每天早上服用;稳定后再加到300mg每天早上服用。这药不会影响血清素,而是一个去甲肾上腺素和多巴胺再摄取抑制剂(NDRIs),可以提高去甲肾上腺素(NE)和多巴胺的水平(DA)。是不是有点像毒品?
这是安非他酮:










这是卡西酮(浴盐,一种新型毒品):











这是甲基苯丙胺(冰毒)











长的很像,据说有人把缓释片磨成粉末然后鼻子吸入,直接进入血液,享受极致的兴奋,然后就死了(overdose)。另外,有些时候会造成基于胶体金法甲基苯丙胺尿检的假阳性。
  • 盐酸曲唑酮缓释片:这是一个具有镇静作用的抗抑郁药,少量使用有助于提高睡眠质量、延长睡眠时间。我吃了效果不错,75mg的时候晚上做梦比较厉害,50mg就还行,梦比较少了。
  • 逐步停用氟伏沙明:一片一片减,每两天减一片。很幸运,没遇到撤药反应。

换药后

用对了药真是立竿见影,三四天后就有正向效果了。一周后效果不错(疗效较为满意),晚上睡得比较好了(5-6个小时),情绪和动力也有了很大的改善,就是偶尔有点头疼,手有点抖。不过,相对于这些副作用,正向作用还是比较突出的。

目前记忆力差,注意力也一般(经常写错别字,我之前什么时候写过错别字?)。回头问问大夫,要不要换伏硫西汀?趁着现在还能吃得起好好治一治。

看起来,这些药要长期吃了。现在心态有点变化,健康的身体比什么都重要。比起来,什么都可以放弃。

一些想法

  • 我在看某Wiki关于苯二氮卓类药物的介绍时,作者引用了这样的一段话:
你在逃离现实吗?你或许能永远进入梦境里,可现实就是你自己,你无法逃离你自己,就像我无法逃离我自己。这个世界就要完蛋了,一切可悲的尝试,不过就像是在潜意识,一座正在融化的幻觉之中–那些斗争,那些梦中虚假的幸福,那些真假与善良,以及层层叠加的痛苦。它们只会带来一个同样的结果。这里不会有日食,这里只会有重生。你永远也逃不出现实。……你不会明白的,但事实就是如此。我最开始也不明白,但是后来,我梦游找到了他们(Escape from Tarkov) 

  •  精神类药物(中枢神经系统用药,教科书的叫法):虽然上学的时候系统学习过这些药物,对用药也没什么抵抗心理(该治病治病,不用药怎么治病呢)。但是,我觉得精神类的药物是向未来(魔鬼?)交换。“今日割五城,明日割十城,然后得一夕安寝。起视四境,而秦兵又至矣。”(六国论)。但是,谁有知道未来怎么样呢?还有未来吗?

附记:复诊

问了大夫伏硫西汀效果怎么样,大夫说可以试试(试试???)。我说再吃一个月安非他酮再看看吧。

2024年9月30日星期一

睡不着、睡不着啊,怎么办(二)

这个月的治疗

马来酸伏氟沙明从半片加到了三片(150mg)。这药副作用不小,天天吃不下饭,早上起来还很困,但感觉没什么明显的效果。

挂了回龙观医院的号,说伏氟沙明还没起效,没有达到足疗程、足剂量,没法评估。又给加了劳拉西泮,抗焦虑,每天三次服用。

安定医院


我又去了安定医院,总觉着回龙观的诊断是不是太严重了。结果,诊断一致,处方也一样,量表测出来都是重度抑郁、焦虑,真是吓人。

2024年9月7日星期六

睡不着啊,睡不着,怎么办?

睡不着啊,睡不着,怎么办?

药物

去了医院,诊断:焦虑、抑郁状态,给开了一大堆药,全是国产仿制药,很好,包括:
  • 扎来普隆分散片(安云):非苯二氮卓类的安眠药,短效,一个小时达到血药浓度高峰,三个小时基本就代谢完了。医嘱:1-2片,睡前服用。
  • 劳拉西泮(劳拉):正儿八经的苯二氮卓类药物,抗焦虑,镇静,算中效的吧,药效能维持一个晚上。长期吃应该会有依赖性。大夫说,影响记忆力,但相对于睡不着,这个代价还是值得的。
  • 艾司唑仑(舒乐安定):也是个苯二氮卓类的药物,抗焦虑、抑郁、镇静,药效也不错,用来替换劳拉西泮。我用了几天的劳拉西泮,感觉已经有点耐药了(不应该啊,为什么?)。还没吃,不知道什么效果。
以上都是精二的药,药盒上硕大的“精神药品”。没想到,我也有一天吃上了这些东西。当年在学校里学《药物化学》,背了一大堆分子式、药理毒理什么的,没想到今天居然用上了。

还给开了个不是精二的药,本来是抗抑郁、焦虑、强迫的,但是睡前服用也可以有镇静的作用。不知道是因为抗焦虑有效果还是镇静的功能起了主要作用。
  • 马来酸氟伏沙明:选择性5-羟色胺再吸收抑制剂。啊,这个名字我好熟,死去的记忆在攻击我。睡前服用半片至三片,半个小时起效,增加睡眠深度和时间。

运动

我买了个自行车,本想上下班骑,奈何这一阵子总下雨(不知道为什么,一下雨我就睡得不好),不敢骑。再者,睡不着总是精神恍惚,不敢骑,怕摔在路上。

2024年9月1日星期日

Notre-Dame de Paris in Beijing

 2024年8月31日去看了在北京天桥艺术中心上演的音乐剧《Notre-Dame de Paris》。


拍的不好,请见谅。观演气氛很好,大家都守规矩,演出过程中不拍照。

不得不承认,法国的文化输出真不是盖的,不是暴发户能比得了的。

这个剧我是大一的时候从《音乐艺术鉴赏》这种公共选修课上知道的,原声带不知道听了多少遍,这次终于有机会看到了现场,非常满意。


在Ubuntu 22.04下编译运行OMNet++ 6.0

OMNet++是一个网络模拟器,官方网站上给出了Linux/Windows/其他平台的安装包,但是没有强调Linux平台是哪个发行版的。

考虑到不同发行版下编译安装这种大型工程的体验差别极大,选错了发行版需要解决一大堆乱七八糟的编译问题(我已经烦透了,不知道为什么,以前还以解决这种问题为乐趣),为了避免浪费时间,查了一下Ubuntu 22.04用的比较多,开发者用的也是这个发行版。

编译时需要注意的事项:
  • 使用gcc编译,不要使用clang,否则会报找不到math(-lm)的错误。
我的Ubuntu 22.04上安装了clang,报了一堆找不到数学库(m)的错误。使用apt remove删除clang就可以继续编译了。
  • 使用pip仓库中的matplotlib,不要用apt源带的matplotlib。
先移除apt源带的matploatlib,再pip3 install matplotlib安装最新的版本,否则会在scipy版本上引入冲突。
  • 还要安装一堆python库,根据提示安装就可以了。

2021年10月5日星期二

C/C++中如何判断空字符串(c-style)?

根据stackoverflow的回答(https://stackoverflow.com/questions/15485179/how-to-check-if-c-string-is-empty),有若干种方法,我比较喜欢的是以下两种方式:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int is_this_str_empty(char * str) {
if (strlen(str) == 0)
{
printf("\n Empty");
}

if (strcmp(str, ""))
{
printf("\n Empty");
}
}

第一种方式是判断字符串的长度,第二种方式判断字符串是否与空字符串相等。考虑执行效率,应该选用
strcmp()的方式,因为strlen()计算字符串长度时需要遍历字符串。

确实是这样的吗?我们看一下编译器编译出的汇编代码。

.LC0:
.string "\n Empty"
is_this_str_empty(char*):
push rbx
cmp BYTE PTR [rdi], 0
mov rbx, rdi
je .L7
.L2:
cmp BYTE PTR [rbx], 0
jne .L8
pop rbx
ret
.L8:
pop rbx
mov edi, OFFSET FLAT:.LC0
xor eax, eax
jmp printf
.L7:
mov edi, OFFSET FLAT:.LC0
xor eax, eax
call printf
jmp .L2

这里使用的是gcc 4.8.2(x86-64),启用-O3编译选项。可以看到编译器理解了strlen(str)==0就是判断
字符串是空的意图,直接比较了第一个字符是否为空。我们再来看一下O0时的编译结果:

.LC0:
.string "\n Empty"
is_this_str_empty(char*):
push rbp
mov rbp, rsp
sub rsp, 16
mov QWORD PTR [rbp-8], rdi
mov rax, QWORD PTR [rbp-8]
movzx eax, BYTE PTR [rax]
test al, al
jne .L2
mov edi, OFFSET FLAT:.LC0
mov eax, 0
call printf
.L2:
mov rax, QWORD PTR [rbp-8]
movzx eax, BYTE PTR [rax]
test al, al
je .L4
mov edi, OFFSET FLAT:.LC0
mov eax, 0
call printf
.L4:
leave
ret

与O3时差不多,直接比较了第一个字符是否为NULL.

为什么编译器可以对strlen()和strcmp()进行优化而不是调用库函数呢?这是因为strlen()和strcmp()
都有编译器实现的builtin版本,编译器理解这些函数的意图,可以直接优化。

我们关闭编译器的builtin选项,可以看到:

.LC0:
.string "\n Empty"
.LC1:
.string ""
is_this_str_empty(char*):
push rbx
mov rbx, rdi
call strlen
test rax, rax
je .L7
.L2:
mov esi, OFFSET FLAT:.LC1
mov rdi, rbx
call strcmp
test eax, eax
jne .L8
pop rbx
ret
.L8:
pop rbx
mov edi, OFFSET FLAT:.LC0
xor eax, eax
jmp printf
.L7:
mov edi, OFFSET FLAT:.LC0
call printf
jmp .L2

编译器直接调用了库函数,这时执行效率就不同了。