未在本地计算机上注册“microsoft.ACE.oledb.12.0”终极解决!

未在本地计算机上注册“microsoft.ACE.oledb.12.0”终极解决!

一、解决过程

这个问题搞了一天,先看代码。

       public static void loadExcel(string pathName)
        {
            string connectionString = $"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={pathName};Extended Properties=\"Excel 12.0 Xml;HDR=YES;\"";
            using (OleDbConnection conn = new OleDbConnection(                

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可随意。