2025-06-25 03:28:28
这些年我陆续折腾过一些小项目,比如博客、在线工具、STEEM见证人等。目前我手头上管理着28台服务器,大多是一些价格便宜的VPS,最近新添的一台是家里鞋柜里的一块树莓派4B(Raspberry Pi)。
我把每台服务器的信息都记录在一个 Excel 表格中,包括 IP 地址、VPS 提供商、内存、硬盘等。这些信息都是静态配置数据。
平时我也写了不少小工具和 Bash 脚本,挂在 crontab 上定期运行,用来监控一些异常情况,比如磁盘空间不足、高 CPU 负载等。一旦检测到异常,就会通过邮件及时通知我。
比如以下BASH脚本(awk/sed)检测硬盘剩余空间:
#!/bin/bash disk=$(df / | tail -1 | awk '{print $5}' | sed 's/%//') if [ "$disk" -gt 90 ]; then echo "Disk usage above 90%" | mail -s "Disk Alert" [email protected] fi
这两天,我在所有服务器上部署了哪吒(Nezha)监控软件的 Agent,这样我就可以在一个统一的网页后台中方便地查看每台服务器的运行状态。比如一看就知道哪台服务器硬盘快满了、CPU高负载等。
管理员登录后台后甚至可以直接通过网页进行 SSH 连接,这在我不方便用终端(比如在公司)时处理一些紧急问题非常实用。
由于这个后台权限非常高(支持以 root 权限 SSH 到每台服务器),所以安装完成后第一件事就是修改默认密码(初始账号是 admin/admin),建议设置一个强密码,甚至有条件可以禁用密码登陆,用OAUTH来替代。
此外,面板服务建议配置 HTTPS。默认监听端口是 8008,最好修改为其他端口。如果只是个人使用,不要公开后台的 URL。
每台服务器都需要安装 Nezha-Agent,和面板之间的通信必须通过 TLS 加密,面板服务器也需要配置好 Nginx 的反向代理。
以下在nginx设置了SSL还有反向代理到8008端口(Nezha Agent)。
server { listen 443 ssl; server_name panel.example.com; ssl_certificate /etc/ssl/certs/fullchain.pem; ssl_certificate_key /etc/ssl/private/privkey.pem; location / { proxy_pass http://localhost:8008; proxy_set_header Host $host; } }
开源项目地址:github/nezha 监控
英文:
2025-06-20 02:34:47
问题:给定程序 P 和输入 x,你能判断 P(x) 是否会停机,还是永远运行下去吗?
假设:H(P, x) 判断 P(x) 是否停机
定义下面的Python函数:
def D(P): if H(P, P): while True: pass # 无限循环 else: return 0 # 停机
那 D(D) 会发生什么?
"这句话是假的。"
R = { x | x 是集合 且 x ∉ x }
异描述词 = 不描述自身的形容词
"这句话无法被证明。"
# Python 中的 Quine 示例 s = 's = {!r}\nprint(s.format(s))' print(s.format(s))
问题 | 领域 | 核心问题 | 结论 |
---|---|---|---|
停机问题 | 计算机科学 | 程序是否能分析自身? | 不可判定 |
理发师悖论 | 逻辑 | 自指导致矛盾 | 悖论 |
说谎者悖论 | 哲学 | 真假自指 | 悖论 |
罗素悖论 | 集合论 | 集合是否包含自身 | 矛盾 |
哥德尔定理 | 数学逻辑 | 不可证明真理 | 不完备 |
Quine 程序 | 编程 | 输出自身代码 | 可控自指 |
英文:The Halting Problem and Its Paradoxical Cousins: When Logic Looks at Itself
本文一共 691 个汉字, 你数一下对不对.2025-06-19 05:36:19
gcd(a, b) = gcd(b, a % b)
b
为 0,此时 a
即为最大公约数。gcd(a, b) = 2 * gcd(a/2, b/2)
a > b
,则 gcd(a, b) = gcd((a - b)/2, b)
gcd()
函数: 使用循环和取模操作实现欧几里得算法。gcd
函数并输出结果。以下是计算GCD的BASH代码。
#!/bin/bash ## 计算两个数的最大公约数 gcd() { local a=$1 local b=$2 while [ $b -ne 0 ]; do local temp=$b b=$((a % b)) a=$temp done echo $a } # 检查是否传入了两个参数 if [ $# -ne 2 ]; then echo "用法: $0 <number1> <number2>" exit 1 fi ## 检查两个参数是否为正整数 if ! [[ $1 =~ ^[0-9]+$ ]] || ! [[ $2 =~ ^[0-9]+$ ]]; then echo "两个参数必须为正整数。" exit 1 fi if [ $1 -le 0 ] || [ $2 -le 0 ]; then echo "两个参数都必须大于零。" exit 1 fi # 调用 gcd 函数并打印结果 result=$(gcd "$1" "$2") echo $result
两个互质整数co-prime,它们的最大公约数为1。
命令 | 输出 |
---|---|
./gcd.sh 24 36 |
12 |
./gcd.sh 7 13 |
1 |
chmod +x gcd.sh
让脚本可执行./gcd.sh 12 30
英文:Compute GCD in Bash with Input Validation
本文一共 599 个汉字, 你数一下对不对.2025-06-17 02:07:09
昨天是父亲节,我还在床上回味时,弟弟就端着早餐走了进来——给我泡了一杯咖啡,还送上一张他亲手做的卡片。
后来我起床后,大娃也给我泡了一杯茶,还送来了他做的卡片。
媳妇说,是她提醒他们给我做卡片的。
我心里特别开心,毕竟孩子们还是花了心思。弟弟的卡片背后还偷偷写了一行小字,我差点没注意到。
他写的是:“PS, Also can we get the Switch 2 pliss, for Mario Kart and Pokémon..” 第一次见有人在节日卡片上写自己的愿望(笑哭)。 我查了一下任天堂的 Switch 2,可不便宜,得等个合适的时机再给孩子个惊喜。朋友打趣说:“父亲,不就是用来实现愿望的吗?”
哥哥的卡片上字也工整多了,说明他真的在慢慢长大。
2025-06-16 19:15:47
两周前的复活节假期,我们一家和剑桥华人教会的朋友、弟兄姐妹们,一起前往位于剑桥附近的 Grafham Water 公园烧烤聚会。那天天气晴朗,我们从中午11点一直待到下午四五点。湖边的风景很美,大家一边享受烧烤的美食,一边谈笑风生,原本是一个非常愉快的假日时光——直到回家以后,我才意识到,自己晒伤了。
脖子后侧有明显的日晒红斑,属于轻度至中度晒伤(一级晒伤)。这类晒伤常见于户外长时间暴露在阳光下。脖子后面这类平时遮住、突然暴晒的部位,更容易晒伤。
当天虽然阳光明媚,但并不觉得晒得厉害,只是感觉有些热、略微不适。一直到晚上,儿子突然问我:“爸爸,你脖子后面怎么红红的?”我照镜子一看,才发现后颈发红,皮肤发烫,已经是明显的晒伤迹象。
接下来的几天,受伤部位开始脱皮,发痒。幸运的是没有起水泡,但这种经历让我开始正视阳光带来的“伤害”。
我印象中,这是我人生第一次被晒伤。小时候在国内,夏天也经常在太阳底下疯跑,从来没有这种问题。以前总觉得“防晒霜是女生才用的”(我才知道我媳妇每天涂的有一些就是防晒的),涂防晒是小题大做,直到这次才意识到,身体在悄悄变化。
人到中年,身体的抵抗力和修复能力的确开始下滑。曾经无所谓的阳光,现在却成了皮肤的“敌人”。这不只是衰老的信号,更是提醒:无论性别年龄,暴露在强烈阳光下都需要保护。
朋友也提醒说,除了年龄因素,这几年环境污染加剧,臭氧层的破坏可能也导致紫外线(UV)更强、更具伤害性。以往在英国阳光难得一见,人们都盼着出太阳;可现在,阳光却也可能变成“隐形杀手”。
听说,每天晒太阳30分钟,有助于身体合成 维生素D,促进钙吸收,有益骨骼和免疫系统健康。然而,过度暴晒造成的晒伤,不仅痛苦,还会增加患皮肤癌的风险,得不偿失。
查了一下,差一点吓死。皮肤科医生/科学研究一致认为:晒伤是皮肤癌的主要诱因之一,尤其是反复晒伤。尤其儿童时期的晒伤,会显著增加成年后患皮肤癌的风险。
皮肤脱皮说明了晒伤,原本的皮肤已经死去,新的皮肤涨出来。
很多人不知道,英国虽然气候温和,但夏季某些时段紫外线强度也不低。每天上午10点到下午4点是紫外线最强的时间段,此时外出最好采取防晒措施。
可以在天气预报中查到 UV Index(紫外线指数):
肤色越深,天然含有更多的黑色素,抗晒能力会相对强一些。但这不意味着可以忽视防晒。即便是深肤色人群,也可能因长时间暴露而受伤,尤其在高UV地区(如澳洲、新西兰等)。
脱皮就是皮肤的修复,皮肤是身体最大的器官。
这次的晒伤经历,给了我一个深刻的教训。晒太阳虽然有益,但要聪明地晒、适当地晒,不要等到身体“发红报警”才醒悟。
中年以后,我们更需要为自己的身体负责——下一次户外活动,现在我出门一定会准备好帽子、防晒霜,给自己一份保护,也给家人树立好榜样。
本文一共 2072 个汉字, 你数一下对不对.2025-06-15 03:18:53
一年一度的微软剑桥研究院夏日派对又到了。今年是我加入微软剑桥的第四年,这次活动举办在市中心一个靠近剑桥大学出版社(Cambridge University Press)的大草坪和花园里,环境非常漂亮。
活动地点是:
The Cass Centre
Shaftesbury Road
Cambridge
CB2 8BS
从会议邀请来看,大约有 108 人报名参加(相比之下,整个微软剑桥研究院MSRC大概有两三百人),但实际到场的可能没有那么多。今天的天气很好,我特地擦了防晒霜——毕竟两周前BBQ的时候被晒伤了一次。结果我媳妇打趣地说:“微软作为市值第一的公司(今天微软3.5万亿),这场派对的规模也太寒酸了。” (一年不如一年,钱不少挣,但开销也照减不误)
今年邀请函上特地加上了‘Summer Garden Party’的说法,可能也是为了稍微弱化‘Summer Party’这个名称带来的期待感,否则以这次活动的规模来说,确实有些名不副实。
我的同事几乎都没来。要么是单身、要么是孩子已经大了,对这种家庭友好型活动没什么兴趣。今天现场我只看到一个华人同事。微软的夏日派对通常会邀请员工的家属一起参加,因此一般安排在周六。很多同事都会带着配偶和孩子来参加,很多孩子年纪还很小。
活动现场在草坪上安排了不少户外娱乐项目,比如乒乓球、Connect4、桌面足球、抽木块(Jenga)游戏,还有孩子们特别喜欢的充气城堡(Bouncing Castle),工作人员还吹泡泡给小朋友们追。
活动时间是早上10点到下午2点,一共四个小时,和去年一样。我去年是准时到场,结果一开始人很少,还有点无聊。今年学乖了,晚到了一小时,但人还是不多。我们大概等了40分钟后吃了午饭,也不是什么大餐,就是简单的三明治、水果沙拉和甜甜圈。
吃完饭后我们就离开了,顺路去了 Waitrose 买了点菜,回到家我还睡了个午觉。
还是很感激公司组织了这么个活动,至少娃都挺开心的。
没有酒精的啤酒。
水果沙拉。
媳妇穿着高根鞋走了一路,她还戴隐型眼镜了,然后后来说这个派对都不配她戴隐型眼镜。
每次看到Connect4就想起去年谷歌面我的面试题:一维的Connect4。去年去Perse参观的时候,计算机系的老师还给弟弟讲解了用Python写的Connect4。
希望公司一年比一年好!
微软MSFT股价过500应该问题不大。