ubuntu Command swager not found

一个go项目迁移后,某天swagger页面提示如下错误:

Errors
Hide
Resolver errorCannot read properties of undefined (reading '1')

回忆一下好像最近改了一些接口,于是想用swag init来重新生成文档,但是提示我 ==Command 'swag' not found==。迁移后swag组件没装。按官网

jumpServer添加自定义服务

jumpServer添加自定义服务

一、需求

项目中为了节省资源并且方便日后统一管理,需要将一些不太重要的服务整合到一起。一个mysql或redis容器同时为多个不同的系统提供服务,加快一些边缘服务的部署。jms本身自带一大堆组件服务,比如redis、mysql、nginx等,基本上全家桶了,开发测试都习贯连到jms的组件服务上。但是,有时候想要的服务在jms上又没有,比如要添加一个rabbit-mq或者caddy,单纯docker run xxx或docker-comose up的话,默认运行的容器网络与已有的jms网络不共存,而且各服务启停要分开管理,不太方便。

为了解决这个问题,开始研究怎么往jumpServer里添加自定义服务。通过分析jms源码,很顺利的实现了,这里以caddy为例做介绍。

用python实现vmware esxi虚拟机断电自动关机

用python实现vmware esxi虚拟机断电自动关机

一、前言

机房服务器一般配备UPS,当市电停掉时,仍然到维持一段时间。但是,如果长时间停电,UPS也撑不了。此时就需要及时关机以确保数据安全。很多年以前用过winpower软件,通过目标系统安装agent,并用winPower连接UPS,当UPS电量低于设置的阈值时,给各个agent下发关机指令,以实现自动关机。这种方式可以充分利用UPS电量,较为精准的判断电池续航情况,并采取相应动作,但是操作起来有点麻烦。

另一种方式是采用自动化脚本的方式,通过循环ping 某个常接市电设备ip,当失败超过一定次数,触发powerOffVMs,最后shutdown esxi系统。这种方式无需与UPS通讯,只要市电断开,超过一段时间就执行关机指令,超作起来比较方便。但是,这种方式可能存在误判,比如交换机挂了,此时ping设备必然失败,最终会触发关机。因此下面介绍一种更为稳妥的方案。

二、实现

  1. 原理

    利用esxcli 来esxcli hardware ipmi sdr list | grep "Power\ Supply\ 1\ Status\|Power\ Supply\ 2\ Status"来检测电源是否正常。当其中一路电源断开或异常时,调用powerOffVms.py关闭各虚拟机,最后再调用poweroff 来关闭esxi。

安卓手机本地音乐播放器shuttlePlus开源版

安卓手机本地音乐播放器shuttlePlus开源版

一、背景

非常讨厌国内手机音乐播放器各种流氓行为,我只要听本地音乐,每次打开时要先强迫你看一屏广告,本地音乐入口还隐藏得特别深,一不小心就点到直播,联网音乐等界面去了,非常让人反感。想找个简单的本地音乐播放器,发现非常困难,要么功能欠缺,要么带广告。这东西anroid本来就自带的,可是国内各组装厂却都替换成了自己的,还要强制联网。某Q音乐本地版加载个歌曲列表竟然一卡一卡的,完全不像大厂出品。

找来找去,最后用上了开源的shuttle,使用起来感觉还不错,但唯有两点让我很不爽,一是部分中文歌曲名显示乱码,二是没有自动去除重复的歌曲,即使用上收费的shuttle2也没解决这个问题。既然是开源的,索性自己动手解决。

二、使用github action

由于本地没有纯安卓的开发环境,又不想为了搞这个破东西装一大堆软件(因为特别抵触gradle这破东西,感觉maven秒它N条街),于是github action就派上用场了。github action,可以将项目编译,并自动生成可执行文件。
这个功能给没有安装编译环境的开发都来说真的是极大的便利,开发者可以把源码丢上github,然后action,让它自动在后台编译,并自动部署。所谓的CI/DI原来跟这差不多。
如果项目主界面没有显示action,需要注意以下几点:

  • 项目需要公开
  • 需要设置为默认项目==可能在yml里设置指定版本也行,没亲测==
  • 在项目根目,.github/workflows/xx.yml,yml文件必须规范,并且指定了触发条件,xx可随意。

学艺不精,玩不转mariadb---order by排序好慢

学艺不精,玩不转mariadb

一、背景

由于开发的项目较多,多个数据库版本又不同。虽然使用docker处理起来很方便,但是考虑到mysql和mariadb都没多大区别,就打算将手头上的使用mysql的数据库都迁移到mariadb上。正所谓“青出于蓝而胜于蓝”,mysql搞收费后,mariadb在不断地发展壮大,仅管用的不多,但是印象中==mariadb==还是不错的。

正好jumpServer用docker一键部署后就内置了mariadb,于是就把手上的项目数据库迁移到mariadb里,迁移过程很顺利。

  • 首先用navicat里先建一个xxx数据库
  • 再Execute sql file,选择对应的备份数据

    也可以用命令time gunzip < xxx_20231023170623.sql.gz | mysql -h 192.168.10.3 -P 33361 -u root xxx -p 来还原。

还原后以为就完事了,可以愉快的玩耍了。怎料故事才刚刚开始,测试查询竟然比原来的mysql还慢一倍(都是在docker容器里跑,都在同一服务器上跑)。

二、分析测试

首先检查了配置文件,两个数据库的配置文件都没啥好看的,都是默认配置。会不会是mariadb版本的问题或者jumpServer自带==降速==光环?于是拉了一个最新的mariadb镜像,直接按默认配置docker run,然后把数据库还原。经测试没任何改善,有点失望。