@StateObject和@ObservedObject的区别

@ObservedObject创建的对象,会在View重绘的时候重新创建。@StateObject创建的对象不会,只会创建一次,所以在视图重建的时候不会受到影响。 比如 @ObservedObject var downloader = Downloader() // ... @StateObject var downloader = Downloader() VStack { ProgressView(value: downloader.progress.fractionCompleted) .progressViewStyle(LinearProgressViewStyle()) Text("\(Int(downloader.progress.fractionCompleted * 100))%") Button(action: { downloader.cancelDownload() isDownloading = false }) { Text("Cancel") }…

MoreFine S500+ AMD ES CPU的诡异问题

在淘宝上买了几台便宜的MoreFine S500+用来在家里跑虚拟化,CPU是AMD Ryzen 9 5900HX ES(100-000000300-30_Y),其中有两台机器很诡异,PVE只要一跑apt upgrade,必定死机重启,屡试不爽。其他时候一点问题都没有。整个过程没有任何log,没有任何core dump,实在是诡异。一开始以为是内存的问题,换过内存后还是一样,重置BIOS也不能解决问题。 偶然的机会,发现dmesg有error,系统不能开启TSC,并且每次重启,报错的CPU核心都不一样 root@pve-2:~# dmesg | grep -i -e tsc -e clocksource [ 0.000000] tsc: Fast TSC calibration using PIT [ 0.000000] tsc: Detected 2894.…

Raspbian 64位下安装SDRplay RSP1驱动

Raspbian 64bit其实并不是纯的64位,虽然是aarch64,但还是有很多动态库、可执行文件都是32位的,甚至编译出来的文件默认都是32位 比如 $ file /usr/local/bin/SoapySDRUtil /usr/local/bin/SoapySDRUtil: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, BuildID[sha1]=c5236a15f0708fb3213f4ceda6f8bcf2bec88659, for GNU/Linux 3.2.0, not stripped SDRplay的官方提供了64位的API库,但默认安装后会有问题,虽然文件存在,但会提示文件不存在 pi@pi:~ $ ls…

R86s刷入自制OpenWrt固件

R86s出厂是自己带了eMMC,拿不下来,不好刷。使用官方版本的刷机脚本,刷完以后每次重启系统后,分区都是ro只读,还不如自己手工捣鼓了。 下面提供三种方法刷进去,都是大同小异,先把/dev/mmcblk0的分区表清空,然后dd命令刷入区块。 创建启动用的TF(SD)卡 首先把OpenWrt系统的openwrt-x86-64-generic-squashfs-combined-efi.img镜像(ext4也可以,但意外关机后会产生分区表损坏,需要手工fsck,不然分区也是ro只读,系统不工作)用balenaEtcher写入到TF卡,然后给R86s接入键盘,开机,猛按F7键,选择TF卡启动,进入到OpenWrt界面。 清空原来的分区表 💡这里有个大坑,如果eMMC上本身存在系统,会被OpenWrt默认加载,导致报错进不了TF卡上的OpenWrt。需要在原本的eMMC上的系统去清空分区表,或者借用第三方的安装盘把分区表清空。 接着,开始干掉系统原有分区表 fdisk /dev/mmcblk0 g w 然后,我们就可以刷入系统了。 Opt 1,刷入TF卡上的系统…

把物理机的Windows Server 2022迁移到PVE

物理机跑了个Windows Server 2022作为AD,现在准备迁移到Proxmox Virtual Environment(PVE),大概记录下步骤 物理机用了UEFI来启动Windows,PVE就不折腾了,直接用了传统的BIOS。所以迁移过程中需要做一些特殊处理。 迁移过程 1、PVE创建一个新的虚拟机(模板选择Default (i440fx)) 2、Windows安装Virtio Win驱动 3、Windows安装VMware Converter或者Disk2vhd,用来创建P2V的镜像。 4、Windows导入注册表mergeide.reg 5、创建物理机镜像。可以用第3步提到的两个工具(用一个就够了,看个人喜好选择,Disk2vhd比较瘦身)。参考截图 6、把创建好的.vhdx或者.vmdk丢到PVE可以访问到的地方。比如NAS、比如PVE本地磁盘。 7、把虚拟盘转换成qcow2格式并导入虚拟机 我们假设PVE创建好的虚拟机的ID是100,那么 cd /path/to/vm/image/100…

OpenWRT编译提示optparse (LoadError)

有不少人提了这个问题 $ make package/feeds/packages/ruby/compile V=s make[2]: Entering directory '/data/X86/openwrt/scripts/config' make[2]: 'conf' is up to date. make[2]: Leaving directory '/data/X86/openwrt/scripts/config' time: target/linux/prereq#0.07#0.01#0.08 Checking 'rsync'... ok. make[…

千万别用TP-Link的Mesh

如果自己有核心路由,那就老老实实把TP-Link用来当AP好了。别想着用什么易展,什么Mesh。因为TP-Link会自己劫持一道数据包再转发。如果把TP-Link的无线路由器接到子交换机上,甚至还会出现TP自己充当子交换机的出口,忽略掉子交换机本身的网线出口。 话不多说,直接上图 TP-Link 无线路由器插到子交换机时,会把整个交换机的数据包劫持,特别是流量很大的交换机,延迟很厉害 从子交换机摘掉TP-Link无线路由后,易展主无线路由会劫持整个局域网,造成3.x ms的延迟 整个局域网把易展功能去掉,TP-Link的无线路由只当做纯AP使用 这才像是一个正常的局域网。…

Intel 82583V 网卡在Windows Server 2022下安装驱动

Intel 82583V,J1900软路由中的『最高端』网卡,Intel都不提供支持了,更别说有什么驱动能更新能用。网上各种求助,也有人拿着修改过的来卖钱。 其实不用这么麻烦,进入『设备管理器』,在识别不出来的网卡上点击右键,选『更新驱动程序』 选『浏览我的电脑以查找驱动程序』 选择『让我计算机上的可用驱动程序列表中选取』 选『网络适配器』 左侧厂商选择『Intel Corporation』,右侧型号选择『Intel(R) 82580 Gigabit Network Connection』 弹出的警告里面选『是』 安装完毕,愉快的玩耍吧 连接使用一切正常…