博主最近入手了 Apple Mac mini M4 ,在使用 Time Machine 备份系统时,Time Machine 显示“备份磁盘不可用”。并且按照网上各种办法都无法解决。
博主的环境如下:
Mac mini M4
雷电三阿卡西斯硬盘盒 + 2TB P44 Pro 固态硬盘
系统版本:macOS 15.2 (24C101)
系统直接安装在固态硬盘上(未使用果子自带的硬盘)
一般的思路就是查了 log 把备份失败的文件给删除或排除备份。但是我在操作中还是会出现这个问题。
解决方法按照上面的逻辑进一步排查,发现在备份的时候没有把 原硬盘 的数据进行排除。而且在 15.2 版本中,并不能直接在 Time Machine 中排除原硬盘。但是,我们可以把原硬盘 弹出。
于是,再进行备份操作你就会发现。
完结撒花 🎉 ~ 此解决办法应该可以通杀和博主一样的环境,如果你也遇到了这个问题不妨来试试。
封面图: Pixiv
线上有一个 Go 编写的项目,按此语言的高并发特性,线上流量并不多,但最近接口响应延迟都非常高。这是为什么呢?
那既然上方已经指出不是 Go 语言的性能问题,那咱就从其他方面进行排查。首先考虑到的就是数据库的性能,数据库服务器用了好几年的 SATA SSD 阵列,4K 性能绝对落后于现代化的 NVMe 固态硬盘。软件不行硬件来凑,当然不是我代码的菜。
4K 小霸王首先想到的就是傲腾固态硬盘,它的 4K 随机读写能力傲视群雄。加上最近大船靠岸的原因,傲腾价格比前两年好多了,最后选中的是 P4800X U.2 375GB 。 国行版本最终 864 元拿下。
傲腾有个暗坑需要留意下,某些 OEM 版本说是全新。但好像是剪角料,右上角会撕一个角标记。网上说的是因为品控不符合要求,所以黄鱼流出来零售。所以还是买全新国行版本比较靠谱。
好马配好鞍,本打算是把服务器平台也一起换到 AMD EYPC 系列,CPU 的价格确实下来了,但是主板价格却翻了翻。全新超微 H11DSI-NT 双路主板价格现在(2024 年 12 月)是 4100 元 - - 。
还是我 X99 香,挑了两颗频率比较高的 ...
相信用过 PVE 的同学都知道 Cloudinit 怎么爽,但是在 Windows 下使用会有一些问题,本文将详细介绍如何在 Windows 下使用 Cloudinit。请注意,本文并不是你找到的一些需要修改 PVE 源码的教程。官方已在最新版本中修复了此问题。
直接上结论:如果你的 PVE 在使用 Windows 的 Cloudinit 时遇到了比如无法自动设置 IP、无法自动设置密码等问题。那么请升级你的 PVE 版本 , 需要大于等于 8.2.4。
聪明的你就要问了,为什么需要升级版本,究竟发生了什么?
因为在旧版本中,PVE 通过 cloudinit 创建的镜像写入的信息密码是加密的。而我们在 windows 上使用的客户端是 cloudbase-init,它无法解密这个密码,所以就会导致无法自动设置密码的问题。而你抱着这个问题去全网搜索解决方案,你会发现大部分的解决方案都是修改 PVE 源码,这样做的确可以解决问题,但是这样做的后果是你的 PVE 就不是官方的了,你需要自己维护,而且每次升级都需要重新修改源码。所以这种方法并不是最好的。
于是机智的网友向 PVE 提出了这 ...
本文将介绍从 0 到 1 如何把使用 Electron 的軟體进行签名(Code Sign)与公证(Notarize) ,打包工具使用的是 Electron-builder。 对了軟體不会在 Mac App Store 上架,本文不适合需要上架的读者。
开始前,你得拥有 Apple Developer Program 的相关权限与资格,如果没有还不赶紧去申请一个?
Apple 开发者账号申请博主呢在申请开发者账号的时候也遇到了点小问题,应该算是 Apple Developer 部门的锅吧。在 App 提交个人信息后居然出现了错误,需要联系开发者支持部门进行后续操作。那咱就拨过去呗,对方各种话术说的倒是很好听,不过也听了这么多年了。感觉还是解决问题才是最重要的。 他们换了三四个客服代表都不能解决这个问题,最后才肯帮我转到高级客服。到最后连高级客服都没办法解决了,说是给转到运营部门进行处理。但是处理没处理咱也不知道,咱就是过了几天收到了 Apple Developer 软件的更新。更完就正常了。
哦对了,再提一嘴。申请企业资格的账号需要邓白氏(Duns)编号,跟着果子的提示做就好了。果 ...
注意看,这个人叫小帅。最近在撸一个工单系统的时候有个回复新信息把消息窗口滚动到最底部的需求。小帅在使用 scrollTo 的时候遇到了点问题。看看最后是怎么解决的吧!
当前工单系统分了三个区域,工单信息区/工单信息展示区(沟通记录)/用户回复区。现在有个需求是用户在回复工单后需要把工单信息展示区的消息滚动到最底部以显示用户刚输入的信息。
那正常咱就是用 forwardref 拿到沟通记录区域的 htmlDivElement , 然后再等用户在下方的回复区发送异步请求后调用 scrollto 到 scrollheight 就实现了是吧。但是实际操作遇到了点问题,如果按照刚才说的区域永远只会滚动到最新元素的上方,也就是最新的元素没有被计算在内。
排查了各种问题,使用 scrollTo 到 999999,依然是刚才的情况。仔细想了想,可能是因为 元素滚动在渲染之前就完成了 , 拿到的 scrollheight 也只是刚才的高度。 知道问题那就好解决了。
解决问题这次使用一个 MutationObserver 的 API 去监听 DOM 元素的变化。如果有变化了则直接 ...
直接上结论,chrome 浏览器将 6000 端口定义为非安全端口,所以无法访问。
到底是什么可以让我写下这篇文章,总的来说还是有点折磨了。
近期在测试一个 docker 容器的 ipvlan 网络模式,业务端口使用的是 6000 端口,但是在浏览器中无法访问。 奇了怪了 。
折腾半天从各个方面排查问题
是不是 Docker 容器镜像的问题
是不是局域网内路由器的问题
是不是 PVE 虚拟化的防火墙问题
是不是业务代码问题
是不是 docker 的 ipvlan 问题 -> 换到 host 模式也是无法正常访问
在 docker 主机上使用 curl 命令是能正常拉取到页面的,在想是不是端口转发问题。
是不是操作系统的问题
以上问题都花时间各种尝试,系统装了装换了换。最后尝试把端口号换了下,结果!
逆天逆天逆天 !!!6000 端口被谷歌定义成非安全端口,自主无法访问!
以下是 Chrome 浏览器默认的非安全端口列表:
端口号
作用
1
tcpmux
7
echo
9
discard
11
systat
13
daytime
15
nets ...
问题最近在使用 Gorm 的新玩意 GEN 时遇到了点问题。比如 GORM 可以很方便的自定义数据库结构体,如果查询的字段为空可以直接使用反射 tag 忽略。但是 GEN 是预先生成好结构体,导致不能手动修改生成的结构体模型,甚至 Time.time 类型的字段也不能完全为空。
哦对了,使用 select 确实会只返回特定字段。但是其他字段却是为空的,照样还是会被返回。如果使用 for range 循环拿到指定的字段对性能开销太大了,不够优雅。
过程期间翻阅了互联网,几乎没有关于 Gorm 的相关资料。文档也翻了翻,写的比较杂,不容易找到解决方案。ChatGPT4/Google Gemini/Meta Llama 几乎全部阵亡,只能说 GEN 可能太新了。这几个 AI 都没领悟。
解决最后还是 clade 给了思路。(后发优势就是好)可以使用 GORM 的 scan 进行处理,GEN 只是封装了 GORM,照样可以用 scan
123456789101112131415161718//预先定义好模型type CommunityResp struct { C ...
问题查找最近在 使用 React Ant Design 组件开发表单的时候遇到了离谱问题,不管是从 state 还是从 zustance 的状态中拿的 userList 都不会引起状态的更新。
因为 React 重渲染的特性,排查了是不是 memo 导致的子组件没渲染。通过在父子组件打印 log 的输出已排查不是这个问题
检查 zustand 的问题,取消使用 useshallow,发现父子组件都在重渲染,但是表单没更新,排除
检查表单 rowKey,把数据都设置了唯一的 key,还是没重渲染,排除
123456789<Card title="用户列表" extra={<Button onClick={handleShow}>新增</Button>}> <Table rowKey={"userId"} columns={columns} dataSource={userList} ...
本文接上文 <封装简易 AXIOS 请求库全流程> , 如果对此文章感兴趣可以站内搜索查看下。这里就不再多赘述封装的好处,这篇文章将会对幼年封装 axios 版进一步改造。
当前分享的代码基于 “axios”: “^1.6.8”
封装后的 AXIOS 将会拥有以下功能
拦截器增强,拥有三种拦截模式
全局拦截
实例拦截
连接拦截
实例增强,一个项目可以拥有多个 AXIOS 实例
类型增强,使用 TypeScript 改造之前封装的简易版 AXIOS
正确处理 Promise 类型,方便调用时通过泛型传入类型
核心代码共享12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091import axios from "axios";import type ...
项目笔记最近在使用 React18 做 Airbnb 项目的时候看到首页选择的滚动条非常喜欢。想着就动手练习一下。可以封装这个组件,以后其他地方也可以用到
大概预览图就是长这个样
实现的几个功能有
内容超出了本身的宽度才显示按钮,如果未超出则隐藏
需要动态根据内容按钮的宽度来实现滑动动画
注意事项开始前需要注意
动画效果是因为 transition 在作用,必须先理清楚
改变的只是位置,而不是自己在控制动画
按钮滚动逻辑如果要做到按钮超出内容区域显示,不超出隐藏的效果。(这里按照右按钮演示)首先可以拿到滚动条内容的总长度,减去显示区域的长度,得到的就是可以滚动的长度
1234567useEffect(() => { const clientWidth = barRef.current.clientWidth; //控制条的总长度 const scrollWidth = barRef.current.scrollWidth; //控制条可以滚动的长度(总长+超出区域的长度) const allowScroll = scrollWidth - clientW ...