分类 码农修仙 下的文章

用Vercel+Supabase搭建Umami 遇到的坑

昨天为了节约时间,用了Umami Cloud官方的免费版本做统计,正在美滋滋中,后来有水友留言说官方的一言不合就要停一下,官方的界面,其实还挺好

反正自己也想搭建,果断的自己搞一个出来吧,首先想到的是keyob.app,尽管他老是跳验证,验证还慢,但他支持docker直接部署,就再用用吧

直接建立一个,用上aiven.io的Mysql,因为keyob的免费机房只能选 华盛顿和法兰克福,所以aiven只能选弗吉尼亚节点

轻松成功,但是速度相当不令人如意...挺慢的,而且因为keyob.app的免费版限制,不能绑定域名,就不能白嫖CF大善人的加速了..

2024-09-25

Mongodb宣布弃用 Data API 和 Https Endpoints?

MongoDB 的 Atlas Device Sync、Atlas Edge Server、Data API 和 HTTPS 端点已弃用。Data API 和 HTTPS 端点将于 2025 年 9 月 30 日达到生命周期结束并被删除,使用这些的用户应迁移到替代解决方案。替代方案包括 MongoDB 驱动程序和原生语言框架、MongoDB 驱动程序和 Cloud Native Functions、合作伙伴解决方案等,并介绍了各方案中的具体内容及注意事项。

官方给出的看似解决的解决方案

  1. MongoDB 驱动程序和原生语言框架自己搭建
  2. MongoDB 驱动程序和 Cloud Native Functions
  3. 合作伙伴解决方案

我自己

最近,我收到了MongoDB官方的一封邮件,通知我他们即将废弃Data API。今天再次查看时,果然在官方文档中看到了这一公告:Data API弃用通知

这让我感到有些意外,因为Data API一直是MongoDB的一大卖点,许多人选择它正是因为这个接口的便捷性,尤其是云函数部署的用户。

加上在我看来,官方3个方案其实并不能完全替代Data api,看似3个方案,其实上就是让用户自己建立中间件来链接mongodb而已,这看似替官方省下硬件成本,将成本转稼给用户端的作法,完全不是一个明智的选择。

MongoDB的开发者论坛上,我发现许多用户对这一决定感到困惑和担忧。很多人不理解为何要废弃这样一个受欢迎的功能,尤其是对于那些依赖Data API的中大型云项目来说,迁移成本相当高。一些用户甚至明确表示,他们可能会在明年减少对MongoDB的支持。

尽管如此,作为MongoDB的忠实用户,我仍然希望官方能够重新考虑这一决定。毕竟,在数据库技术如此多样化的今天,一旦用户选择离开,他们可能就不会再回来了。

我衷心希望MongoDB能够继续发展和进步。

2024-09-24

Serv00.com免费主机之一 - 申请开通

友情提示:珍惜免费资源,不要没事上来就搭梯子和非法网站,你自己也用不了几天,而后果只是更多人用不成而已

这几天,沉寂已久的serv00,又加了新服务器,开始放免费主机了
小破站上一堆UP各种推荐,正好有时间,我也是来说一说这个

Serv00.com

是一家提供免费虚拟主机服务的平台,使用 FreeBSD 的系统,提供 512MB 内存、3G 磁盘和最大 15 个进程,

  • 带有SSH (这功能是真不常见,但非常好用,可惜人家禁止国内IP连接)

带DNS管理和SMTP这些有,但大家好像都不怎么用的功能

服务器位置是:欧洲 - 波兰

2024-07-20

Go 语言 中make和new关键字的区别

在Go语言的世界里,有两个非常贴心的助手,

它们可以帮助我们创建和准备各种各样的数据结构,

这两个助手的名字叫做 make 和 new。

虽然它们都是用来帮助我们分配内存的,但是它们各自擅长的事情却有所不同。

首先,让我们来认识一下 new。

new 是一个非常简单的家伙,它只做一件事情:

为我们想要的数据类型分配一块全新的内存空间,并且返回一个指向这片空间的指针。

这个指针指向的地方,会自动填充该类型的默认值,也就是零值。

想象一下,new 就像一个忠实的管家,你告诉他你需要一个特定类型的新房间,他就会为你准备好,并把钥匙(指针)交给你。

举个例子,假设我们有一个表示学生的结构体 Student,我们想要为它创建一个新的实例,就可以请 new 出马了:

type Student struct {
  name string
  age int
}

var s *Student
s = new(Student) // new帮我们分配了内存,并返回了指向这片内存的指针
s.name = "小明" // 我们给这个学生起了个名字叫小明

fmt.Println(s)

如果我们忘记使用 new,那么程序在运行时就会遇到麻烦,因为它不知道要把数据放在哪里,就像是试图进入一个不存在的房间一样。

接下来,我们再来聊聊 make。

make 是一个更专业的助手,它专注于创建和初始化 Go 语言中的三种特殊数据结构:切片(slice)、映射(map)和通道(channel)。

make 的工作不仅仅是分配内存,它还会确保这些数据结构被正确地初始化,这样我们就可以直接使用了。

和 new 不同,make 返回的不是指针,而是这些数据结构本身,因为它们本身就是引用类型,就像是一扇已经打开的门,我们直接走进去就好了。

例如,我们想要创建一个装有三个字符串的切片,就可以这样使用 make:

// 使用make创建一个字符串切片,并告诉它我们想要三个位置
mySlice := make([]string, 3)
mySlice[0] = "语文" // 我们可以立刻开始使用这个切片
mySlice[1] = "数学"
mySlice[2] = "英语"

fmt.Println(mySlice)

简单来说,new 和 make 都是帮助我们创建数据结构的助手,但是它们各有专长。

new 更适合于创建基本类型的数据,并返回一个指向这些数据的指针;

而 make 则是 slice、map 和 channel 的好朋友,它不仅分配内存,还负责初始化,让我们可以直接使用这些数据结构。

2024-05-01

一个go写的端口检测的小工具

就2个文件,一个是ips.txt,每行一个ip:端口

IP列表文件:

127.0.0.1:8000
127.0.0.1:9000

2024-04-02