2.7k words 2 mins.

# 前言 在 2021 年 Minio 突然从 Apache 开源许可转换为了 AGPLv3 许可,这意味着后续如果你使用了 minio 作为存储程序以及修改到其代码都需要开源出你的程序(如果不想开源但仍然想盈利也可以,使用钞能力购买商业许可即可),但是其实大部分后续修复的补丁我们是不需要的,集成的 web 界面其实也很鸡肋(对于个人开发者仅需要一个稳定的对象存储服务即可)。因此想要绕过 AGPLv3 ,我们只需选择其最后一个 Apache 版本作为我们的对象存储服务。 # ApacheV2 版 minio 定位 通过 License 的文件更改,可以定位到该修改的 commit 的父节点为...
3.4k words 3 mins.

# 前言 OpenWrt 默认并不是使用 systemd 来管理服务,而使用 go 的第三方服务包 github.com/kardianos/service 并不能有效的配置好启动项,无法被 OpenWrt 的 Web 管理所接管。因此,我们需要针对 OpenWrt 来客制化编写我们的服务。 参考资料: https://openwrt.org/docs/guide-developer/procd-init-scripts # 客制化步骤 OpenWrt 构建自己的启动服务 OpenWrt 后台服务主要分为两个目录,一个是 /etc/init.d/ ,另外一个是 etc/rc.d...
3.9k words 4 mins.

# 前言 HuggingFace 是一个人工智能领域的公司,其名下 HuggingFace Hub 则被誉为深度学习界的 Github 。 HuggingFace Hub 中包括了大量的开源数据集和开源模型,并且拥有类似于 Github Page 的 Space 网页 Demo,允许用户使用其服务部署在线的 Demo(免费配置包含有 2 vcpu 和 16G ram。 # datasets 库 datasets 库是 HuggingFace 的官方数据集库,其中包括了一些常用的数据加载方法,可以快速从远程 HuggingFace Hub 加载数据集到本地。 简单的使用例如: from...
3.9k words 4 mins.

# 开源协议 开源软件最重要的就是开源协议,在选择开源轮子的时候为了规避后续的法务问题,选择一个合适的开源协议下的软件尤为重要。 # 常用的商业友好协议 转载阮一峰的开源协议图:https://www.ruanyifeng.com/blog/2011/05/how_to_choose_free_software_licenses.html 从图中可以看到,如果未来你打算基于开源软件开发配套的闭源软件(甚至为此需要修改开源软件的代码),可以使用的协议主要有 MIT 、 Apache 、 BSD 。 # MIT...
493 words 1 mins.

# 前言 在数据库中作为主键来使用的唯一标识一般分为两种: 数字自增 GUID(128 位二进制数,在表示上通常是 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 的 16 进制数, - 仅方便显示,并不没有实际占用) 而当需要利用的分表的时候,数字自增的 ID 并不利于分表 (会造成不同表可能存在相同的 Id),因此常用的是 GUID 作为主键。为了保证递增的特点,在生成 GUID 的时候常常与时间戳相绑定,这样在搜索查询的时候可以直接使用主键进行排序,大大提高性能。 #...
1.2k words 1 mins.

# 前言 在上一篇中讲述了利用 docker context 命令来切换远程上下文。而在使用远程的服务端的过程中没有办法直接挂载本地文件,因此本篇主要介绍使用 docker volume 来创建远程服务器上的存储卷。 # Docker Volume 命令 Usage: docker volume COMMANDManage volumesCommands: create Create a volume inspect Display detailed information on one or more volumes ls List volumes prune Remove all...
7k words 6 mins.

# 环境 Docker Client 24.0.2 本地客户端(MacOS 14) Docker Server 24.0.4 远程服务端(Ubuntu 22.0.4) # 前提 在日常开发环境中,可以通过开放远程 Docker 服务端 tcp://0.0.0.0:2375 让 Docker 客户端可以通过 TCP 连接访问该远程 Docker 服务,然而在公网的条件下,直接开放 2375 端口是不安全的。为了通过安全连接使用 Docker Socket,官方提供了 TLS...
2k words 2 mins.

# Error troubleshooting java thread pool # Device arm64 macOS # Environment Java corretto-17 Springboot 3.0.2 # Problem Problem description I have a problem when using Springboot ThreadPoolTaskExecutor . The code below looks like this: // create operationvar finalGroup = group;var path =...
1.4k words 1 mins.

# 记一次 Java Springboot 线程池问题 (误) # 设备 arm64 macOS # 环境 Java corretto-17 Springboot 3.0.2 # 遇到的问题 问题描述 当使用 Springboot 自带注入的 ThreadPoolTaskExecutor 线程池时,遇到比较诡异的线程阻塞问题。调用代码: // 触发创建操作var finalGroup = group;var path = getGroupParentPath(finalGroup.getId());var sourcePath =...
1.8k words 2 mins.

# VSCode 隧道功能 # 为什么需要 VSCode 隧道? 自己搭建内网穿透的服务器不仅成本高同时带宽小。使用微软提供的中继服务器(虽然有安全风险)可以节省不少操作和成本。 # 前提需要 服务端 VSCode CLI https://code.visualstudio.com/#alt-downloads 客户端 VSCode(1.74+) + Tunnel(Microsoft)插件(或者直接使用 vscode.dev 在线编辑器) # 服务端安装步骤 (Linux 篇) 按 前提需要 下载 VSCode CLI,选择对应版本: 下载后使用 tar 解压 htar -xvzf...