Supabase 和 Appwrite 区别

在 Twitter 的时间线以及经常去的论坛上,[[Supabase]],[[Appwrite]],等等 Backend as a Service 的服务出现的频率越来越多, Supabase 和 Appwrite 都是将自己称为 [[BaaS]] 来作为 Firebase 的代替。 Appwrite 在 2019 年 9 月首次发布,使用 PHP,TypeScript 编写。Supabase 首次发布于 2022 年 6 月,使用 TypeScript 编写。 Supabase 优点: 可以自托管 构建在关系型数据库 [[Postgr Read more ...


GitLab CI 提交代码 not allowe to upload code 问题解决

记录一下在 GitLab CI 中提交代码出现的错误。 在 CI 中 git push 提交代码,遇到如下的错误: remote: You are not allowed to upload code. fatal: unable to access 'https://gitlab-ci-token:[MASKED]@git.xxx.com/group/repo.git/': The requested URL returned error: 403 看起来是 403 权限不足,但是可以看到的是提交代码的时候,使用的 remote 地址是 htt Read more ...

2022-10-13 gitlab , git , git-push , gitlab-ci

BaaS 应用 Appwrite 体验和使用

在 Twitter 的时间线上能看到越来越多的 Backend-as-a-Service 的产品发布,包括 [[Firebase]], [[Supabase]], [[Railway]], [[Fly.io]], [[Okteto]], [[Nhost]] 等等,这两天又发现一款叫做 [[Appwrite]]。Appwrite 宣称自己的是 Firebase 的开源辅助,可以代替大部分的 Firebase 功能。 看来创始人起名字的时候也非常直截了当,Appwrite 就是一款为前端和移动开发人员提供的可以自行搭建的后端服务,使用 PHP 编写,提供了 Read more ...

2022-10-12 appwrite , baas , self-hosted , php , flutter

Git 对文件权限的控制

因为一直使用 assh 来管理我的 ssh config,整个 SSH config 都是用 Git 仓库来管理的,但是每次一更新了 config 文件,git pull 之后 config 的文件权限都会出错: Bad owner or permissions on /path/to/.ssh/config 发现 git 拉取的文件丢失了权限,必须通过 sudo chmod 600 ~/.ssh/config 来修改才能使用。 于是就想要了解一下 Git 仓库中怎么来管理文件权限的。 Git 只有一 bit 位来用存储文件权限 Git Read more ...

2022-10-10 git , file-mode , file-permission , linux

.info 域名涨价应对策略

之前收到 Google Domains 邮件,info 域名将在 10 月 26 号之后从 12 美元一年涨价到 22 美元一年,现在剩下的时间不多了,晚上回家处理一下。 刚收到 Google domain 的续费通知邮件,竟然发现 info 域名需要从 $12 涨价到 $22 ,域名注册局的生意一本万利啊!— Ein Verne (@einverne) September 27,2022 涨价原因 通常不同的域名注册商都会提供动态的注册费用,比如我一直使用的 Google Domains 自我开始使用起 info 域名就是 12 美 Read more ...

2022-10-09 domain , dns , google-domains

MP3 ID3 结构

ID3 是一个元数据(metadata) 的容器,通常和 MP3 文件一起。 ID3 有两个版本: ID3v1 ID3v2 ID3v1 ID3v1 比较简单,存放在 MP3 文件末尾,占用 128 个字节,使用任意一个 16 进制编辑器打开 MP3,就可以看到。 V1 版本以 TAG 字符开始,记录了 MP3 文件的歌手名,标题,专辑名称,年代,风格等信息。 字节 长度 说明 1-3 3 TAG 字符,说明 ID Read more ...

2022-10-08 mp3 , mp3tag , id3 , id3v2 , metadata

将字幕压制到视频中

本文总结一下将字幕文件压制到视频中的方式,(当然我个人是非常不喜欢直接将字幕压制到视频流中作为硬字幕压制的,但有些时候可能就是需要分享这样硬字幕的视频,比如视频网站,所以也会在下文总结一下)。 按照压制方式可以分成,将字幕嵌入视频流(也就是俗称的硬字幕)适合在视频网站分享,将字幕作为单独的字幕流和视频作为封装格式,需要用播放器播放。 压制方式(推荐程度从上到下): [[FFmpeg]] 适合熟悉命令行工具的人 [[HandBrake]] 开源的全平台的视频编码工具(推荐) [[MKVToolNix]] 将字幕文件添加到视频中,但是作为 Read more ...

2022-10-02 subtitle , video , mp4 , fansub

解决 Clash for Windows 节点测速 timeout 问题

[[Clash for Windows]] 使用过程中一直没有什么问题,但是昨天心血来潮把 Clash for Windows 从 0.18.8 升级到了最新版本(0.20.5) ,然后发现节点全部 timeout。但可以排除的是这些节点肯定是可以用的,因为在手机上是完全没有问题的。 先是看 Logs 日志里面,timeout 的节点有大量的错误: 22:06:18 WRN [UDP] dial failed error=new vmess client error: dial xxxx:7830 error: 404 Not Found proxy Read more ...

2022-09-30 clash , vpn , mac , linux , cfw

Arc 浏览器初印象

很早之前就在 Twitter 上看到有人分享了 Arc 浏览器的使用体验,说是非常惊艳,我就稍微的浏览了一下官网,抱持怀疑的态度先注册了一下体验,一直好奇到了 2022 年能够在浏览器上做出什么样的创新,自 Chrome 横空出世以来,快,安全迅速抢占了浏览器市场。剩下的一点点份额被 Firefox,Safari,Edge,[[Vivaldi]] 等等占据,早两年的时候我也写过一篇标题略微耸动的文章 —- 我可能要抛弃用了很多年的 Chrome 改用 Vivaldi ,但事实是 3 年多过去了,我日常用的还是 Chrome,虽然 Google 在浏览器插 Read more ...

2022-09-30 arc , browser , chrome , vivaldi

Javalin:一个轻量的 Web Framework

说起 Java 语言下的 Web 框架那就非 [[Spring Framework]] 不可了,但是今天在和别人在聊天的过程中发现了一个新奇的项目 Javalin。 Javalin 是一个轻量的 Web 框架。支持 [[WebSocket]], HTTP2 和异步请求。简单的看了一下官方的说明文档,确实非常轻量,几行代码就可以启动一个 HTTP 服务。 [[Javalin]] 最初是 [[SparkJava]] 的一个分支,后来受到 JavaScript 框架 koa.js 的影响,逐渐独立成一个新的项目发展。 首先来看看一个比 Hello Worl Read more ...

2022-09-26 javalin , java , jetty , kotlin , web-framework , restful

最近文章

  • 简洁高效的开源网络终端 Next Terminal 我个人一直都是使用本地的 SSH Config 来管理我的 SSH 连接,虽然这个方案有自身的优点,就是安全,易配置,我所有的连接都只允许使用 SSH Key 访问,关闭了用户名密码,另外所有的配置都通过 assh 一键配置,我给所有的节点都配置了昵称,所以我只需要输入 ssh alias 就可以连接到任何我想连接的机器。
  • ChatWise 本地多模型支持的 AI 客户端 在我之前的视频里面当时介绍了三款不同的本地 AI 客户端,[[Cherry Studio]],[[Chatbox]],ChatWise,每个客户端都有自身的优缺点,前两款也还是开源的,但是今天要介绍的 ChatWise 是一款更轻量的,更强大的 AI 客户端,包括一些个人觉得非常好用的功能,比如本地联网搜索,MCP 支持,Artifacts 等等使用起来都非常方便。
  • Alist 风波以及在 K3s 中部署 OpenList 在我的待办事项和视频评论下方很多人提到过 Alist,虽然我自己也有搭建一个 Alist,但实际上并没没有真正使用起来,所以待办事项中的「编写一篇文章介绍一下 Alist」 也就一直延误了,我个人似乎并没有太多 Alist 使用的强需求,虽然 Alist 可以用来挂在很多的网盘,但是如果看过我之前的文章,我现在越来越多的避免将大量的数据存储到云端,也不再大量的使用网盘,所以很多人用 Alist 来挂在网盘并接入 VidHub,Plex,Emby 等来观看高清视频的需求其实我本地一台 Ubuntu(NAS) USB 挂在一块大硬盘,局域网 SMB 共享给 Apple TV 就已经解决我了 99% 的使用场景。
  • 利用 SpecStory 记录每一次和 AI 的对话 今天想给大家介绍一款特别有意思的插件叫做 SpecStory,我们现在会在 VS Code, Cursor 编辑器中使用各种类型的代码辅助工具,也会利用 Cursor 等集成的 IDE 来 vibe coding,但是如果我们每一次都重头开始描述我们想要做的事情,或者每一次都新开一个聊天窗口,AI 大模型大概率会前后表现不一致,虽然我们也可以利用 Cursor Rules 等工具来给 AI 提供一些系统级别的提示词,但是 AI 在回复的过程中也可能跑偏。
  • 让 AI 来编写 Git 提交变更信息 很早之前就看到了 GitHub Copilot 可以在 VS Code 中提交 Git 时自动编写提交 Message,但是实际上我一直没有用起来。正好现在对 Git Message 做一个完整的学习,顺便也了解一下当前的 AI Commits 方案。

赞助