关于golang包引用的坑2(终极解决!)

关于包引用的坑2(终极解决!)

上回说到用replace可以解决跨包调用的问题,运行是没问题了,但是在vscode里总是提示没法import xxx。因为vscode默认去gopath和goroot里找包的,显然无法找到。经历了各种搜索、更新vscode、go work init xx,都没有解决我的问题。我只需要调用本地同一个项目里,不同包中的方法。网上各种说法都有,有的说得非常复杂,但实没要么就是连go build都编译不过,要么是像上文那样,能go run,但vscode会报错,并且方法调用连智能提示都没有:cry:!

其实解决起来非常简单,在main.go同级目录,执行go mod init 包名。比如go mod init demo,它会自动在main.go同级目录生成go.mod。其它文件夹里的包只管根据实际命名,比如common文件夹里的us

C# 写注册表自动启动不生效的坑

一个程序需要实现自启动,一般通过注册表来实现。写完程序后测试没任何异常,也没报错,但是到'计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run'里查找发现没生效,里面没设置的键。
 开始以为是权限的问题,然后以管理员身份运行,测试发现没效果。然后将machine改为user,即只在当前用户的环境Registry.CurrentUser里加上自启动,实测也没效果。这就有点奇怪了,这段程序代码都用了N年了,没理由突然就不行了?于是找来一台全新的电脑,把程序丢上去,运行后,再重启系统,发现可以正常自启!
但是,查了注册表,还是没这个键值,于是通过注册表搜索,终于发现了问题所在。64位注册表的路径是在WOW6432Node里的,即 计算机\HKEY_LOCAL_MACHIN                

组态王kindview 控件 xxx 创建控件错误的解决

组态王kindview 控件 xxx 创建控件错误的解决

一、故事到事故

最近接手一个PLC程序的二开工作,其中有一个子项目是用组态王采集西门子plc中的各阀门或传感器中的值,并做实时监控。为了不影响现有的系统运行,我们将项目迁移到新的电脑上,原系统用的是win7 32位,新系统为win10 64位,迁移后各种问题就来。首先是用户给的安装包跟旧系统里的版本不一致,导致安装后又要再安装更新的版本。安装新版本后,悲催的事来了,加密狗读不到!

组态王这个加密狗的使用是比较变态的,分运行狗和开发狗,不插入狗,连开发都不给你做。我看了又看,想了又想。N次重复了以下操作:系统重启、加密狗重装、软件重装等等,打开软件后,点运行或开发均没办法识别到狗。无奈只能联系组态王厂商。厂商售后还是比较积极,给我远程看了又看,试了又试,读狗工具也拿过来试了,均读不出。

typecho+typora自动下载七牛上的图片链接到本地

typecho+typora自动下载七牛上的图片链接到本地

一、需求

  • 习惯了typora写文章,想发到博客上时,图片处理显得比较麻烦。typecho原版不支持批量粘贴图片,一个个复制粘贴图片后还要进行版式处理,非常浪费时间。
  • 刚开始想偷懒,觉得不如把图片放到图床(比如七牛)上,然后博客上做外链。因为typora上写的文章已经实现了批量将图片自动上传到七牛,并将:key:本地图片路径自动转化为云端的图片地址。但是由于博客启用了https,外链图片到七牛默认是http的,==https网站外链接http没法简单的实现==。七牛上要用https的话,得付费,刚开始觉得付费没关系,反正流量不会很大,但是看了七牛后台,没有做流量限制的地方,并且是后付费的,也就是哪天被刷流量的话,费用应该会爆表:cry:。

    阅读剩余部分

关于golang引用本地其他包的坑

关于go引用本地其他包的坑

初学golang,对go的包管理很不适应,甚至踩了个大坑。主要是在同一个项目,不同包名要相互调用时遇到的。

如果用其他语言,要么命名空间,要么包名识别,都可以很好的实现跨包访问对应类的方法,但是,在go里,必须使用replace来实现。经过一段时间的摸索,目前知道有两种方式可以解决。

一、通过go.mod实现

在src根目录(main.go同级目录),go mod init 包名随便写,生成go.mod。在生成的文件中添加require及replace信息。

module nobody
require (
jd.com/service v1.0.0

jd.com/utils v1.0.0  
)
//假装存在jd.com/utils这个远程