11月世界上发生了很多事情,但是又好像什么都没发生。
西方大国又换了领导人,他重新崛起了,BTC也突破了高点,然而我的账户仍然没有太大变化,错失了一个机会。或许这是一个并不属于我的机会,所以没有什么可惜的。
没有形成自己的思维体系,所以不太可能抓住这种机会。不可能只依靠一个算法,重要的是需要自己的一套能够让自己心悦诚服的体系,这需要一个过程,需要很多次的实践,而不是一蹴而就。
虽然账户上没有increment number,但我的投资体系也经历了住一次考验,验证了可行性,也不是没有收获。
11月世界上发生了很多事情,但是又好像什么都没发生。
西方大国又换了领导人,他重新崛起了,BTC也突破了高点,然而我的账户仍然没有太大变化,错失了一个机会。或许这是一个并不属于我的机会,所以没有什么可惜的。
没有形成自己的思维体系,所以不太可能抓住这种机会。不可能只依靠一个算法,重要的是需要自己的一套能够让自己心悦诚服的体系,这需要一个过程,需要很多次的实践,而不是一蹴而就。
虽然账户上没有increment number,但我的投资体系也经历了住一次考验,验证了可行性,也不是没有收获。
用AI辅助写了一些代码autotrader,根据行情的实时来分析并且决定买卖crypto的合约, 然而并没有做到逐行代码检查,导致实际使用中出现异常损失,事后发现异常才回来重新审视代码。
在自己做的一些事情上,需要100%的专注,我需要的是坚定的信念和精确的计算,如果做不到,就没有办法达到想要的成绩。
之前也有过类似的错误,没有经过严格测试和验证,导致损失。这次是逻辑经过了验证,但是没有将两种模式合并到一起测试,虽然单独两者都可以正常执行逻辑也验证过。
不要对任何未经测试的路径抱有侥幸心理,特别是当代码是AI生成的情况下,没有完全理解的情况下,直接上线用。
kasm docker是一个把chrome装进去的docker,直接运行在服务器上就能打开web页面,退出页面后也会保留。
Linux服务管理工具cockpit,能够可视化地管理服务,但是服务创建还需要通过ssh登录到服务器上操作(见上篇记录)。
将这个 `updateddns.sh` 脚本放在 `startscript.sh` 中运行是可以的,但并不是最佳实践。因为它是一个无限循环的脚本,可能会带来一些问题,如无法平稳重启、停止或监控。最佳实践是将它转换为一个 **systemd** 服务,这样可以更好地管理它的启动、停止和重启。
### 最佳实践:将 `updateddns.sh` 作为 systemd 服务运行
#### 1. 编写 Shell 脚本
确保你的 `updateddns.sh` 脚本可执行,且放置在适当的目录(如 `/usr/local/bin/`):
“`bash
#!/bin/bash
while true
do
sleep 1m
myip=$(curl v4.ident.me)
curl http://***:***@api.dynu.com/nic/update?myip=$myip
sleep 2m
done
“`
确保脚本有执行权限:
“`bash
chmod +x /usr/local/bin/updateddns.sh
“`
#### 2. 创建 systemd 服务文件
在 `/etc/systemd/system/` 目录下创建一个 `.service` 文件,例如 `updateddns.service`:
“`bash
sudo nano /etc/systemd/system/updateddns.service
“`
服务文件内容如下:
“`ini
[Unit]
Description=Update DNS with Dynu API
After=network.target
[Service]
ExecStart=/usr/local/bin/updateddns.sh
Restart=always
RestartSec=60
[Install]
WantedBy=multi-user.target
“`
– `ExecStart`:指定你的脚本路径。
– `Restart=always`:确保脚本在失败时自动重启。
– `RestartSec=60`:在脚本意外退出后 60 秒再重启。
#### 3. 启动并设置开机启动
接下来,刷新 systemd 守护进程,启动服务并设置为开机自动启动:
“`bash
sudo systemctl daemon-reload
sudo systemctl start updateddns.service
sudo systemctl enable updateddns.service
“`
#### 4. 检查服务状态
你可以通过以下命令查看服务状态,确保它正常运行:
“`bash
sudo systemctl status updateddns.service
“`
### 为什么这样做是最佳实践?
– **可管理性**:通过 systemd,你可以轻松启动、停止和重启服务,避免手动操作。
– **自动重启**:如果脚本意外退出,systemd 会自动重启它。
– **日志记录**:使用 `journalctl` 查看服务的运行日志,更易于调试和监控。
这样,你的脚本运行更加安全、稳定,并且方便管理。
ESP8266-01S模块给大家带来了更多的想象空间,但是具体使用过ESP8266的GPIO引脚的同学一定也遇到ESP8266上电时GPIO引脚抖动的问题。如果把GPIO作为输入引脚、点亮LED、连接其他模块等作用,这个抖动都还时可以接受,上电时无非就是LED闪烁一下,但是如果把GPIO连接继电器模块,感受就比较直接:继电器闭合又马上断开,会导致继电器后的用电器发生闪断,有可能烧毁。
经过实际测试发现ESP8266-01S在如下情况下会发生GPIO状态的抖动:
1)上电的一瞬间GPIO0、GPIO2都会从高电平变为低电平,然后再变为高电平
2)将GPIO0配置为输出时,GPIO0马上从高电平变为低电平。GPIO2也存在同样的问题
通过查询资料发现时芯片bug,emm… 芯片的bug我还是第一次听说,有人也使用测试仪进行了测试给出了实锤的证据。最开始学习时发现上电时LED会闪两下,一直以为自己的代码问题,当使用了继电器模块才发现上电瞬间ESP8266-01S的GPIO电平变化并不受代码的控制。至于具体的产生原因咱们也不去过多的去了解,最重要的是想一个办法来解决问题。
ESP8266-01S的GPIO抖动解决方案有多种
| 方案 | 优点 | 缺点 | |
| 方案1 | 根据官方文档修改官方代码并重新编译固件 | 一劳永逸,彻底解决问题 | 难度巨大 |
| 方案2 | 不使用GPIO0和GPIO2接继电器,使用TXD和RXD引脚接继电器 | 解决方式简单可靠 | 串口不能使用,调式不方便 |
| 方案3 | 继电器电路增加电容滤波,上电时滤除电流的高频抖动 | 引脚GPIO0和GPIO2、串口都能够正常使用 | 需要改动硬件电路;
继电器关闭时会出现一点点延迟; 如果快速上电又下电依然存在抖动 |
我相信具有折腾精神的同学都会选择方案3,当然我也选择了方案3,但是方案3依然存在不小的坑,接下来我会做一个大概的分析。
首先大家要先看看ESP8266-01S的驱动电路,来了解一下GPIO引脚是如何让继电器工作的

这个是某宝上畅销的一款ESP8266-01S继电器电路原理图,使用引脚GPIO0来驱动继电器(这里我很困惑大家买了以后都是如何解决抖动问题的),这个电路是带光耦隔离、mso管驱动的,该有的基本上都有,唯一不足的就是没有考虑ESP8266-01S引脚抖动问题。
ESP8266-01S的继电器驱动电路修改也很简单,就是再电阻R2边上并联一个点解电容到地,也许已经有同学发现了这个电容没有容值,先别着急,要看完才能知道为什么。

假设使用引脚GPIO0驱动继电器,GPIO0为低电平时继电器闭合,引脚GPIO0为高电平时继电器断开。
原理如下:上电时当ESP8266-01S的引脚GPIO0突然变为低电平时,光耦工作,光耦的引脚3输出低电平,这时新加的电容就会开始充电,mos管的引脚1依然保持高电平,如果直到电容充满电光耦的引脚3一直保持低电平那么电流就会流过电阻R2,把mos管的引脚1就会被拉低,继电器闭合;如果电容还没充满电光耦的引脚3就变为了高电平,那么就不会有电流留到电阻R2,mos管的引脚1依然保持高电平,继电器就不会闭合。
明白了原理,接下来就是确定电容的容值了。
首先分析一下:ESP8266-01S上电时GPIO引脚会发生一次抖动,我们标记为抖动A;当代码初始化时把GPIO引脚初始化为输出时GPIO引脚会突然变为0,然后再通过代码把引脚输出置为1,又会发生一次抖动,我们标志为抖动B。
如果只有抖动A,就是你的电路只需要解决ESP8266-01S上电一瞬间的抖动A,这个电容容值选择10~100uF就可以;
如果解决GPIO0的抖动A和抖动B,这里假设ESP8266-01S上电后代码马上去初始化引脚GPIO0,这个电容容值是220uF左右;
如果解决GPIO2的抖动A和抖动B,这里假设ESP8266-01S上电后代码马上去初始化引脚GPIO2,这个电容容值是470uF左右;
至于为什么GPIO0和GPIO2选择的容值不一样,我猜测是因为官方代码里GPIO0和GPIO2的初始化时间不一样。
从别人的文字里思考,或许能够得到一些启发,不论是新的想法,做法或者是论点,将来某个时间回忆起来,认为只是一个稀松平常的事情,但他带给当下自己的思考,才是最重要的事情。
一个夏日的午后,小男孩躺在床上,带着一点不情愿地躺着,窗外阳光明媚,屋子里却没有那么明亮,甚至还有些黑,原来是因为窗户外面就是一堵墙,隔了不到两米,墙上爬了葡萄藤,给斑驳的水泥墙上点缀出绿色的生机。知了一直叫个不停,这样一个无忧无虑的夏日,永远铭记在了小男孩的记忆里。
终于将Wordpress迁移到了NAS上,做好了反向代理,基本上达到目的,迁移过程也是比较费力,主要几个点:数据库恢复时没有auto_increment属性,导致无法新建文章。链接地址需要更新,在其中一个数据表中。删除.user.ini文件。
回来IPv6, IPv6目前在提速,各种基础设施都已经开始支持或者即将支持,电信的5G网络已经达成,宽带网络似乎也已经能够使用,但是偶尔会获取不成功?腾讯的云服务器似乎已经支持,但不去折腾,轻量云在某些区域已经开始试点,铺开也是早晚的问题。
目前发现IPv6能够给某些直播软件带来不错的观看体验,特别是电视直播软件,在翻墙方面,亚马逊的服务器默认支持IPv6,因此如果NAS本地有IPv6地址,从亚马逊过来的流量将直接通过IPv6,myqnapcloud.com的DDNS似乎更新IPv6的地址并没有IPv4迅速,使用IPv6的好处是,可以在不开放端口映射的情况下,直接去访问NAS的web服务器,这给访问带来很好的体验。
NAS上IPv6和IPv4是两个不同的防火墙,因此需要同时设置两个类型,因为不清楚对方过来访问的时候,到底是使用IPv4还是v6。
买了一个机柜,把一些网络设备塞进去,内网网速提升千兆,UPS换电池,能够正常工作了!
NAS:千兆有线网络,开启IPv6,gitea服务器,进入机柜居住;
苹果盒子:千兆有线,进入机柜;
树莓派+bt:WIFI新HA 带zigbee,更多新功能可以探索;
汽车GPS软硬件更新,蓝牙开锁;
Vps不续费及加购,墙是真的狗🐶:不续费腾讯云,加购亚马逊ls,为加密货币…
希望迁移一切顺利,家庭服务器YYDS
最早能够追溯到2020年,当时有一闪而过的念头,但是并未实施,2023年换完工作,手上多了一些money,就水到渠成的打通了money出海的通道,虽然很基础,但是却是0-1的转变,很难得。
相信后面的篇章会更加跌宕起伏,是时候尝试更多的赚钱手段,这也是从twitter获取到的信息,把他转化为自身实践的一个例子。