The Mirages

樱桃沟夹事

《两晋悲歌》看着实在难受。 不过作者当中有一段让我感触挺深。

这是在书中的第1199页到1203页的内容。

如果小段想挽救自己的国家,前提是真的能把慕容宝替换成自己看好的慕容农或者慕容隆。其间的政治博弈复杂程度超乎想象,最傻的举动就是空在慕容垂那里表现自己的忧心忡忡,不仅起不到一丁点儿正向作用,还把自己的未来搭进去了,等真需要发力时,大概坟上的草都三尺五了。

我们时常都是从自己的角度来看待问题,以及如何去处理。

精明这东西,不可外露。一是易遭到嫉妒,而是易触碰他人利益。既什么都能看出来,又什么都改变不了,还满世界告诉别人自己能看出来的人,是最傻的。

聪明反被聪明误说的其实就是这样的。但是小段其实也不算是聪明人,只是说这是一个正常人,并且算是比较天真。

阅读全文 »

当我们说再见的时候总是如此的潇洒,好像管他身后是刀山火海,我自已经飘然而过。而未来的千难万险那也是未来的事情了。

冬天

这两天突然想起自己小时候的冬天,我记得读小学的时候每年冬天都很冷,冷的我好像身上每天都穿了7,8件衣服,也会穿3,4条裤子,可脚上就一双大棉鞋。

教室里即没有暖气,更没有空调,每天上课的时候我好像都是把双手放在大腿底下,这样感觉双手不那么冷,可这样坐也导致了每年手都会生冻疮,我这个冻疮每次生了之后都会裂口子,要是手指动作大点还会流血。试过了很多种的偏方都没啥效果,什么坚持用冷水洗手,什么用取暖器捂手上的。有一年想着这冻疮不就是血管堵了嘛,那就用取暖器把它给疏通就好了,于是就忍着热烤着自己的胡萝卜手指,结果好像没啥效果,然后第二天就发现自己的手指上起了很多水泡,从此10个手指上就有4个血包。

记得有一年最低温度零下8度,那天就导致了很多外面的自来水管都爆了。自来水跑了,然后又结冰了,这路上很多都是摔伤的。真是童年可怕的记忆。

这就是属于太无知无畏了。后来上了大学后,大学教室里总算有空调了,再也不用穿的像面包一样了。后来上班之后更是只有每天起床的时候会挣扎一下再从温暖的被窝里坐起来。总算再也不生冻疮了。

阅读全文 »

rz和sz是lrzsz的提供的一个在xNIX下上传下载的工具。基于zmodem协议。但是不是所有ssh客户端都支持。比如putty, windows terminal都不支持。

但是mac下的iterm2是支持的。

https://github.com/intnet/iTerm2-rzszmodem

基本上就按照这个就可以了。我记得我之前也是这样做,然后就没有问题的,不过这次却完全不行,再小的文件都不行,使用 -e 参数也不行。

然后再ps看了下,进程确实在执行,但是就是等了好久也没有效果。

由于我自己一般因为都登录跳板机来进行的,而跳板机又都有MFA二次认证的,为了方便就写了一个expect脚本来进行了。

阅读全文 »

昨天那个strace的结果,以前解读起来就是一个个去查对应的系统方法是干嘛的,各种不同flag参数到底是什么含义。

于是我把这段内容输给kimi试试

1
2
3
4
5
6
7
8
9
10
21:51:46.643879 socket(AF_INET, SOCK_DGRAM|SOCK_CLOEXEC|SOCK_NONBLOCK, IPPROTO_IP) = 5 <0.000017>
21:51:46.643914 setsockopt(5, SOL_IP, IP_RECVERR, [1], 4) = 0 <0.000006>
21:51:46.643947 connect(5, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("0.250.250.200")}, 16) = 0 <0.000042>
21:51:46.644065 ppoll([{fd=5, events=POLLOUT}], 1, {tv_sec=0, tv_nsec=0}, NULL, 0) = 1 ([{fd=5, revents=POLLOUT}], left {tv_sec=0, tv_nsec=0}) <0.000007>
21:51:46.644125 sendto(5, "_N\1\0\0\1\0\0\0\0\0\1\00223\0011\003168\003192\7in-addr\4arpa\0\0\f\0\1\0\0)\4\260\0\0\0\0\0\0", 55, MSG_NOSIGNAL, NULL, 0) = 55 <0.000095>
21:51:46.644278 ppoll([{fd=5, events=POLLIN}], 1, {tv_sec=5, tv_nsec=0}, NULL, 0) = 0 (Timeout) <5.009569>
21:51:51.653958 ppoll([{fd=5, events=POLLOUT}], 1, {tv_sec=0, tv_nsec=0}, NULL, 0) = 1 ([{fd=5, revents=POLLOUT}], left {tv_sec=0, tv_nsec=0}) <0.000010>
21:51:51.654105 sendto(5, "_N\1\0\0\1\0\0\0\0\0\1\00223\0011\003168\003192\7in-addr\4arpa\0\0\f\0\1\0\0)\4\260\0\0\0\0\0\0", 55, MSG_NOSIGNAL, NULL, 0) = 55 <0.000114>
21:51:51.654310 ppoll([{fd=5, events=POLLIN}], 1, {tv_sec=5, tv_nsec=0}, NULL, 0) = 0 (Timeout) <5.010178>
21:51:56.664628 close(5) = 0 <0.000068>

kimi给我一个个反馈了

21:51:46.643879 socket(AF_INET, SOCK_DGRAM|SOCK_CLOEXEC|SOCK_NONBLOCK, IPPROTO_IP) = 5 <0.000017>

创建一个新的UDP套接字,设置为非阻塞模式,并指定SOCK_CLOEXEC以确保在执行exec系列函数时套接字会被关闭。

阅读全文 »

最近搞个openvpn的问题,然后突然发现其实openvpn是已经拨通了的,但是我ping一个只有内网使用的域名时候居然会有10秒的延迟,我一般也等不了10秒就中断了,后面偶然等了会,发现第一个包回过来之后,后面的包都正常回了,就是第一个包要等待十秒。

一开始还以为是openvpn server的问题,可自己抓包一看,发现就是自己请求慢了,而且就是第一个包请求的时候。

自己是mac上的orbstack的镜像,一度还以为是ubuntu的问题,然后试了一下rocky,发现居然也是第一个包延迟十秒。但是同样ping 内网ip却没有任何问题。本着刨根问底的精神,那就先用strace看看系统调用的情况。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
root@personal-ubuntu:/Users/timo# strace -tt -T -v -s 1024 ping docs.timoq.com
21:51:46.590522 sendto(3, "\10\0\310n\2 !\"#$%&'()*+,-./01234567", 64, 0, {sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("192.168.1.23")}, 16) = 64 <0.000086>
21:51:46.590640 recvmsg(3, {msg_name={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("192.168.1.23")}, msg_namelen=128 => 16, msg_iov=[{iov_base="E\0\0Tz\267\0\0d\1 !\"#$%&'()*+,-./01234567", iov_len=192}], msg_iovlen=1, msg_control=[{cmsg_len=32, cmsg_level=SOL_SOCKET, cmsg_type=SO_TIMESTAMP_OLD, cmsg_data={tv_sec=1734004306, tv_usec=642790}}], msg_controllen=32, msg_flags=0}, 0) = 84 <0.052232>
21:51:46.643123 newfstatat(AT_FDCWD, "/etc/resolv.conf", {st_dev=makedev(0, 0x15), st_ino=5014356, st_mode=S_IFREG|0644, st_nlink=1, st_uid=0, st_gid=0, st_blksize=4096, st_blocks=8, st_size=242, st_atime=1733731514 /* 2024-12-09T16:05:14.000848465+0800 */, st_atime_nsec=848465, st_mtime=1733731514 /* 2024-12-09T16:05:14.000848465+0800 */, st_mtime_nsec=848465, st_ctime=1733731514 /* 2024-12-09T16:05:14.000848465+0800 */, st_ctime_nsec=848465}, 0) = 0 <0.000029>
21:51:46.643305 newfstatat(AT_FDCWD, "/etc/nsswitch.conf", {st_dev=makedev(0, 0x26), st_ino=47456, st_mode=S_IFREG|0644, st_nlink=1, st_uid=0, st_gid=0, st_blksize=4096, st_blocks=8, st_size=526, st_atime=1731225143 /* 2024-11-10T15:52:23+0800 */, st_atime_nsec=0, st_mtime=1731225143 /* 2024-11-10T15:52:23+0800 */, st_mtime_nsec=0, st_ctime=1731403213 /* 2024-11-12T17:20:13.204275122+0800 */, st_ctime_nsec=204275122}, 0) = 0 <0.000008>
21:51:46.643415 openat(AT_FDCWD, "/etc/hosts", O_RDONLY|O_CLOEXEC) = 5 <0.000018>
21:51:46.643665 fstat(5, {st_dev=makedev(0, 0x26), st_ino=47389, st_mode=S_IFREG|0644, st_nlink=1, st_uid=0, st_gid=0, st_blksize=4096, st_blocks=8, st_size=135, st_atime=1731225151 /* 2024-11-10T15:52:31+0800 */, st_atime_nsec=0, st_mtime=1731463506 /* 2024-11-13T10:05:06.277574562+0800 */, st_mtime_nsec=277574562, st_ctime=1731463506 /* 2024-11-13T10:05:06.277574562+0800 */, st_ctime_nsec=277574562}) = 0 <0.000008>
21:51:46.643771 lseek(5, 0, SEEK_SET) = 0 <0.000003>
21:51:46.643796 read(5, "127.0.1.1\tpersonal-ubuntu\n127.0.0.1\tlocalhost\n::1\t\tlocalhost ip6-localhost ip6-loopback\nff02::1\t\tip6-allnodes\nff02::2\t\tip6-allrouters\n\n", 4096) = 135 <0.000006>
21:51:46.643832 read(5, "", 4096) = 0 <0.000002>
21:51:46.643855 close(5) = 0 <0.000004>
21:51:46.643879 socket(AF_INET, SOCK_DGRAM|SOCK_CLOEXEC|SOCK_NONBLOCK, IPPROTO_IP) = 5 <0.000017>
21:51:46.643914 setsockopt(5, SOL_IP, IP_RECVERR, [1], 4) = 0 <0.000006>
21:51:46.643947 connect(5, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("0.250.250.200")}, 16) = 0 <0.000042>
21:51:46.644065 ppoll([{fd=5, events=POLLOUT}], 1, {tv_sec=0, tv_nsec=0}, NULL, 0) = 1 ([{fd=5, revents=POLLOUT}], left {tv_sec=0, tv_nsec=0}) <0.000007>
21:51:46.644125 sendto(5, "_N\1\0\0\1\0\0\0\0\0\1\00270\003108\00218\003172\7in-addr\4arpa\0\0\f\0\1\0\0)\4\260\0\0\0\0\0\0", 55, MSG_NOSIGNAL, NULL, 0) = 55 <0.000095>
21:51:46.644278 ppoll([{fd=5, events=POLLIN}], 1, {tv_sec=5, tv_nsec=0}, NULL, 0) = 0 (Timeout) <5.009569>
21:51:51.653958 ppoll([{fd=5, events=POLLOUT}], 1, {tv_sec=0, tv_nsec=0}, NULL, 0) = 1 ([{fd=5, revents=POLLOUT}], left {tv_sec=0, tv_nsec=0}) <0.000010>
21:51:51.654105 sendto(5, "_N\1\0\0\1\0\0\0\0\0\1\00270\003108\00218\003172\7in-addr\4arpa\0\0\f\0\1\0\0)\4\260\0\0\0\0\0\0", 55, MSG_NOSIGNAL, NULL, 0) = 55 <0.000114>
21:51:51.654310 ppoll([{fd=5, events=POLLIN}], 1, {tv_sec=5, tv_nsec=0}, NULL, 0) = 0 (Timeout) <5.010178>
21:51:56.664628 close(5) = 0 <0.000068>
21:51:56.664876 write(1, "64 bytes from 192.168.1.23: icmp_seq=1 ttl=100 time=52.3 ms\n", 6164 bytes from 192.168.1.23: icmp_seq=1 ttl=100 time=52.3 ms
) = 61 <0.000011>

再来看一个直接ping ip的。

1
2
3
4
root@personal-ubuntu:/Users/timo# strace -tt -T -v -s 1024 ping 192.168.1.23
21:57:55.828938 sendto(3, "\10\0\30\301\2\216\0\1 !\"#$%&'()*+,-./01234567", 64, 0, {sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("192.168.1.23")}, 16) = 64 <0.000092>
21:57:55.829098 recvmsg(3, {msg_name={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("192.168.1.23")}, msg_namelen=128 => 16, msg_iov=[{iov_base="E\0\0Tz\267\0\0d\1\ !\"#$%&'()*+,-./01234567", iov_len=192}], msg_iovlen=1, msg_control=[{cmsg_len=32, cmsg_level=SOL_SOCKET, cmsg_type=SO_TIMESTAMP_OLD, cmsg_data={tv_sec=1734004675, tv_usec=871853}}], msg_controllen=32, msg_flags=0}, 0) = 84 <0.042814>
21:57:55.872109 write(1, "64 bytes from 192.168.1.23: icmp_seq=1 ttl=100 time=42.9 ms\n", 6164 bytes from 192.168.1.23: icmp_seq=1 ttl=100 time=42.9 ms) = 61 <0.000014>
阅读全文 »

昨晚想把icbc里的理财弄出来,结果说我交易密码错误,3次还被锁住了,无奈,今天中午拿着卡和良民证去icbc办理。

然后大堂经理说你这个卡比较奇怪,从来没有设置过交易密码,于是就当场设置了交易密码。 你这个破系统难道不能当时就提醒一下我交易密码没有设置吗?

然后想手机转账提额,结果发现最多就单日20万,再提怎么办呢? 办理U盾,收费15元,那算了,我就一点钱,为了这个也不值当的。

我这个卡去年就到期了,也懒的续了,这次既然来了那就续一下吧。然后问我是否要保留卡号,我说保留怎么做,不保留做。

保留就手机银行里操作,结果发现所有卡的封面都要收费,便宜的10块,贵的20块,我说这个就没免费的吗?

免费? 要不你去柜台问问。 于是就排了个号。

阅读全文 »

《你想活出怎样的人生》 这本书是隔壁日本人写的,出版时间是1937年,大家想想1937年的日本应该是什么样子的。

可见这本书是出晚了,早出20年是不是就没有当年那些破事了。

主人公是一个叫本田润一的小学生和他舅舅之间的对话。

故事的开头是两人在东京的大楼往下看,路上的人熙熙攘攘,有很多人在看不见的地方生活着,人们就像大海中的水分子一样。因为他没从自己的角度的思考问题,所以被叫做“小哥白尼”。

其实很多东西刨根问底的话,那都会涉及到社会生产关系的方方面面。比如简单的一根木头铅笔,它来自于树木,负责砍树的工人,负责种树的工人,砍树工人用的斧子和电锯又是谁造的,运输树木的汽车,汽油这些。铅笔当中的铅芯又为什么是用石墨和粘土造的呢?石墨是怎么来的。

法拉第有本书叫《蜡烛的故事》,其实就是探讨这种方法和态度。

阅读全文 »

刚开始读《两晋悲歌》,现在还只是看了上,还有中和下。先记录一下。

两晋开端是曹魏,但是因为司马懿阴谋篡位,所以才有了西晋。

按作者说法,这种历史上通过阴谋篡位得来的皇位都不太稳,就算司马一家那么能生,好像所有核心岗位都是自己家的人,但是最终不也被很快反噬,最终因为八王之乱把整个中原全部掏空,开启了长达300年的五胡乱华和十六国时代。

从这点上来说司马家欠中国太多了。

为什么会有八王之乱,核心原因是传位制度不合理,导致当年只能那个傻子得到皇位,结果兄弟,叔叔,侄子这些人互相争斗,最终产生了八王之乱。这个bug在后面朝代就明显是修复了的。但是又产生了站队的问题。

第二个原因是你是政变起家的,结果底下人有样学样也搞起政变。而且青出于蓝胜于蓝了。

阅读全文 »

DoH互联网上能够查到的就是2017年 https://www.theregister.com/2017/12/14/protecting_dns_privacy/

然后到了2018年就出来rfc了,这个效率还是非常不错的。

https://datatracker.ietf.org/doc/html/rfc8484

那DoH是为了解决什么问题呢,就是因为dns协议是udp的,很容易被抓取。所以大家就想用https来作为dns查询的隧道,这样就可以有效避免被人恶意截取流量了。当然DoH的前提也是dns解析支持了subnet才可以的。

但是不是所有服务都是支持DoH的,所以最好还是自己本地起一个服务来运行这个。本地监听127.0.0.1:53端口,让本地所有服务都请求本地的dns服务,这个以前污染没有那么严重的情况下,我自己本地会起一个unbound,然后来做各种代理,不过现在污染太严重了,这种方式又各种问题了。

现在主要的方案就如下这3种:

阅读全文 »

上周球球他们班级迎来区领导视察,然后班主任还演示了一节课,演示完成后就随着校领导一起去交流了。

接着就是副班主任来上课了,但是因为第一节小朋友们都紧张,然后都累了,出操的时候据说排队什么都不整齐,结果副班主任生气了。 我觉得以上这些都没问题,老师也是正常人,也有生气的时候。但是下面的我觉得不大对。

一个是花了一整节课说纪律的事情,这个浪费的不是一个人的时间,是整个班级的时间,纪律的事情你完全可以课后单独说,实在影响课堂秩序的那就请那个小朋友出去就行。

另外一个是听说有小朋友要去校长那边举报他,然后他就把几个小朋友从不同班级叫出来,然后又训一顿,看来这个老师是喜欢训人,麻烦每次训人前先问问自己是否真的对,能否听听别人的说法。

有个小朋友家长说的特别好:“让想学习的学生没法学习,这是渣校的典型特征。”

至于其他说副班主任老师骂人,说孩子们是班主任老师的狗,这些你也不知道真假,那就很难评论了,回来问球球,球球说没有说过,但是有些家长说有这种事情,这点我们就从相信自己孩子的角度来看问题。

阅读全文 »
0%