解决macos sierra重新安装时报错-准备安装时发生错误
最近打算把之前的一个旧的苹果笔记本出售,型号是2015 macbook air,因为出售之前需要把系统整个清理干净,所以按照苹果官方的建议,先将磁盘抹掉,然后重新安装。
选择重新安装的时候使用了这个笔记本最刚开始的版本macos sierra(没得选择,只有这个选项),但是安装到最后几秒的时候,报错“准备安装时发生错误”,试了好几次,中途使用了网上说的网络时间错误、APFS等措施,还是不行。
最后想到了一个可能,因为我这个笔记本中途升级到了Monterey,现在这样直接降级安装可能有问题,那如果安装这个Monterey版本是不是可行?
最终证明是可行的,也不用U盘等进行安装,具体操作步骤如下:
开机的时候按Command+Option+R进入网络恢复模式(注意千万不要使用Command+R那种方式进入,在这种恢复模式下只能安装sierra)
这个时候我们就能看到屏幕上有”重新安装macos Monterey” 选项, 此时如果直接进入安装,会发现没有磁盘。所以应该先进入磁盘工具,抹掉内置磁盘,格式选择APFS
点击菜单栏的退出磁盘工具,回到刚开始页面,此时再选择”重新安装macos ...
记录一下使用vercel搭建umami中需要注意的地方
在使用vercel搭建umami的时候,步骤比较简单,直接使用官网的deploy按钮,一步一步来就行。
其中有一个点需要注意,在填写环境变量DATABASE_URL的时候,按照官网说明,对于umami应该使用的是POSTGRES_PRISMA_URL,但此时如果直接使用POSTGRES_PRISMA_URL,在deploy的时候,连接数据库会报错,报错信息如下:
1prepared statement "s0" does not exist
看到supabase下面有这句话,对于umami使用的是prepared statements。
所以不能使用默认的6432端口, 改成5432端口就可以了。
1postgres://xxx@xxxxx:5432/postgres?sslmode=require&supa=base-pooler.x?pgbouncer=true&connect_timeout=10
还是不能太依赖自建服务
我发现有时还是不能太依赖自建的服务,否则后续升级的时候,可能会出现一系列问题。
比如我现在用来进行流量监控与分析的是自建的umami,最近因为需要用到其中的一些新功能,需要进行升级,但是发现升级比较困难,原因是旧版本umami用的mariadb版本比较老,新的umami用到了一些mariadb新的功能,所以需要同时升级mariadb,但是我的mariadb上还有其他的一些数据,不方便升级,所以只能放弃了。
Android应用在上架Google Play时封闭式测试的一些建议
最近上架了一个自己写的App到Google Play上,其中的封闭式测试这一环节卡了很久,现在将其中的一些注意事项记录一下,方便后来人看到。当然,这个只适用于那些没有自己的测试渠道,和我一样,单纯只有自己一个人的情况下,怎样通过封闭式测试。
因为我是第一次弄这个,前后经过了二次被拒,第三次才成功通过。
这是我第一次申请失败的截图。
Google Play对新注册的账号,如果需要发布应用,必须要有封闭式测试,且要求连续14天有20个人参与测试。
对于我这种没有自己测试渠道和测试人员的开发者,目前来看,成功率最高的是通过在reddit上发布帖子或者在别人发布的此类帖子下回帖,如此找到20个人参与测试,其中https://www.reddit.com/r/AndroidClosedTesting 这个板块热度较高,相对而言更容易。
首先是找人,可以在刚开始的前2天自己发帖或者回帖,凑齐20个人(可以多一点,因为中途可能会有人卸载),然后在之后的每天内都可以继续找人,还是为了防止中间有人卸载,不过之后的话就不用那么多了,每天找到几个就OK了。
还有一条是在这期间,可以发布几个版本,让Goog ...
JVM中的Shallow Size 和 Retained Size解释
在使用相关的JVM内存工具查看堆栈情况时, 有两个指标Shallow Size和Shallow Size不是很清楚其真正含义,现在通过一个例子来了解其含义。
先说一下概念描述:
shallow size: 对象自身占用的内存, 不包括它引用的其他实例。例如,对于一个简单的对象,如果它有几个基本数据类型的字段和对其他对象的引用,那么该值只计算这些字段所占的空间,而不计算被引用对象的空间
retained size: 当实例A被回收时, 可以同时被回收的实例的Shallow Size之和
示例代码很简答, 构造一个List,然后插入100万个元素, 在程序运行的过程中使用IDEA自带的Profiler来获取堆栈快照,后面的一个无限循环是为了防止程序运行完终止。
12345678910public static void main(String[] args) throws Exception { List<Integer> l = new ArrayList<>(); for (int i=0; i < 1000000; i++ ...
acme.sh自动生成泛域名证书的几个坑
先说一下我的环境与配置:
域名:在namesilo上购买的
证书使用方式:nginx
nginx部署方式:docker
说一下在使用过程中可能会遇到的一些坑, 方便后来人正确处理。
安装脚本过程安装acme.sh前要将系统用户切换到和nginx服务使用的用户, 否则之后的relaod命令将没有权限执行。
比如我使用root用户安装的docker启动nginx, 就切换到root,并在此用户下安装acme.sh
生成证书过程此处使用的是dns的api方式来验证,有几个点需要注意。
生成api key的时候,Generate key for read-only access 一定不要勾选
如果第一次没有注意勾选,并且使用脚本生成证书(不管是否生成失败),在新生成key之后, 需要先将.acme.sh account.conf Namesilo_Key 删除掉
老了
今天在公交上,一个应该是初中或高中的学生,让我帮忙弄一下行李箱,叫我 “叔叔”, 这好像是我印象中第一次有陌生人叫我这个称呼,看来是真老了。
但我的人生还有许多事没做,必须加紧步伐,把有限的时间花费在更有意义的事情上。
同时, 更重要的一点是身体,要加强锻炼,才能更好的应付之后可能发生的事。
希望今年心想事成,最重要的结婚和工作的事都能如意。
go学习笔记之指针
什么是指针
一个变量,指向了另外一个变量的内存地址。
指针变量通常用于引用其他变量的内存地址,以便能够直接访问或修改该变量的值。
指针用法
* 声明变量类型为指针;或者使用指针访问变量的值
& 指针指向的内存地址, 也是将一个普通变量赋值给一个指针变量的方式
1234567891011121314151617181920212223package mainimport "fmt"func main() { var a int= 20 /* 声明实际变量 */ var ip *int /* 声明指针变量 */ ip = &a /* 指针变量的存储地址 */ fmt.Printf("a 变量的地址是: %x\n", &a ) /* 指针变量的存储地址 */ fmt.Printf("ip 变量储存的指针地址: %x\n", ip ) /* 使用指针访问值 */ fmt.Printf("*ip 变量的值: %d\n" ...
pve主机使用smart_ctl监控磁盘信息
pve中一块nvme磁盘最近偶尔会报温度过高, 所以需要加个监控, 之前已经装过node_expoter, 但是其磁盘硬件监控这一块的信息不够全面,其更多强调的是磁盘的性能,比如IO等。 温度监控这一块也有, 但是不够直观明显,而且缺少其他的一些磁盘硬件本身的信息, 下图是node_exporter监控硬件温度,在Hardware Misc里的Hardware temperature monitor中的显示信息:
基于此, 需要一个专门用来收集磁盘硬件本身信息的exporter, prometheus提供了一个基于smart ctl的exporter, 地址是https://github.com/prometheus-community/smartctl_exporter
因为这是直接监控硬件的, 所以我是直接安装在宿主机上的(包括之前的node_exporter), 没有安装在虚拟机上。
smartctl _exporter安装
进入 https://github.com/prometheus-community/smartctl_exporter/releases下载自己机器需 ...
tailscale的设置与安装
先说一下整体的环境和安装方式
pve虚拟机专门开了一个lxc容器,用于安装tailscale,并利用此容器转发流量到局域网内的其他机器上,实现外部访问内网所有机器
由于tailscale本身的中转服务器derp没有中国的节点,最近的节点是位于东京的,所以此处选择自己搭建一个中继节点
PVE LXC安装tailscale此处的lxc模板使用的是Debian 11(bullseye)。
创建一个非特权的CT容器, 模板选择Debian 11(bullseye),其他配置都使用默认配置(网络那儿最好选择DHCP,让路由器自动分配一个IP)
安装完成后, 先不要启动,需要修改一些配置
在pve宿主机中,获取信息, 执行命令和返回结果如下, 记录 10, 200 这两个数字, 后面需要用到
12root@pve:~# ls -al /dev/net/tuncrw-rw-rw- 1 root root 10, 200 Jun 30 23:08 /dev/net/tun
在pve宿主机中,修改 /etc/pve/lxc/CTID.conf文件, 新增如下两行:其中10和200是上一步中获 ...