突然又对 Go 感兴趣,GOPATH entry cannot start with shell metacharacter 错误

打发无聊时间,水文一篇~

在这里插入图片描述

事情是这样的,因为我们上架的渠道包基本是定制化混淆出包,

混淆出包有一个关键点就是指定映射文件,映射文件的内容有一部分是使用外部工具在打包前按照一定规律随机生成包名、类名,

这里使用的外部工具可以是 golang 编写的 exe 程序,映射文件内容类似 Android mapping.txt。

举个例子:

渠道包提审自动化检测通常是不允许包体存在第三方插件或危险代码。

1、广告插件,上架荣耀商店是不允许包体存在其他平台的广告插件。

2、危险代码,上架国内某平台是不允许包体存在诸如 weishu、xposted 等带有危险特征的代码。

所以,定制化混淆出包、加固出包上架提审一定程度上可以躲避自动化检测。

那么我的问题是:测试反馈映射文件随机生成的字符(包名、类名)总是存在敏感字符,影响出包效率,影响提审。

如某平台机审核把 weishu 判定为敏感字符,若包体带有该字符去提审有可能被拒审打回,出包之后就要确保包体不存在危险敏感字符,

希望能够确保映射文件的映射值不存在敏感字符(因为之前反馈的敏感字符基本是因为类映射导致的),

因此我的任务是接受映射文件生成工具,优化随机生成的映射值,确保不存在敏感字符,

需求很简单,最终优化修改、新增的代码不多,工具是使用 Go 编写的,上一次接触这个语言还是在大学那会,对此学习和已掌握的知识不对,

“语言知识工具、技能”,有了良好的编程思维,接触一门新语言还是相对轻松的,那就现学现卖完成了优化需求,

回到家猛一抬头心想:我是不是对 Go 又有了一点点兴趣?趁着现在的无聊时间,不如打开电脑重新拾起!

我对 Go 又有了兴趣~

安装 Go

学习新语言先看官方文档是个不错的切入点,但对英语有一定的门槛,不妨试试国人整理的资料。

Go 中文学习文档

1、下载 go sdk Go sdk all release

我下载的是 Mac ARM64

2、下载开发工具

我还是选择 vscode,golang 虽然很好用但是收费,破解版、激活这些活不想折腾,vscode 轻量好用

3、运行确认环境正确

其实整篇文章只想提这一点,其他都是在水文,运行第一个 go 程序报错了,在 vscode 上遇到一个小问题。

在这里插入图片描述

GOPATH 配置有问题?我可是傻瓜式直接安装下载的 go sdk,一路 next,这也能报错!

go: GOPATH entry cannot start with shell metacharacter ‘~’

go: GOPATH条目不能以shell元字符“~”开头

在终端执行 go env 也是这个错误,查一下环境变量 GOPATH 看看具体是啥,
在这里插入图片描述
在这里插入图片描述

自我感觉没啥不对劲,PATH 也不存在什么以 ~ 开头的字符,尝试下把 GOPATH 前面的 ${PATH} 去掉试试看,修改并保存之后使配置生效执行 source .bash_profile

在这里插入图片描述

关闭 vscode 重新打开没有再提示 GOPATH 错误,在终端运行 go env 也没有错误并输出正常的信息,看来这次尝试偶然解决了运行失败的问题(罗.jpg)。

在这里插入图片描述

写代码配阿里通义灵码也蛮不错,不懂就问~

那就这样吧,在无聊时光中不知道干什么好,刷短视频 ,就找点事情做,人总不能太闲吧~

安装 Go pkg

经过上述操作,在 vscode 中已经可以编写运行 golang 程序了,但是又发现了一个问题:怎么没有代码提示?

预期的正常代码提示是这样的,后知后觉才发现之前输入 fmt 没有提示 Println等函数,没有提示我怎么写代码,我很依赖代码提示、补全功能的。

在这里插入图片描述

vscode 很友好,其实当你创建第一个 go 文件时已经提示安装一些列的,那时我是直接点击安装的,但是最后提示安装这个我是没有特别关注,直到过了两天因一直困惑在没有代码提示功能中才开始关注这个报错。

详细看看日志:

问题(1):go install ******* timeout,install failed

后来了解到,go 有一个东西叫包管理,也就是 go install 安装的就是一系列的包,安装位置就是你配置的 GOPATH(在自己 mac 上首次安装查看环境变量是没有给我指定 GOPATH,我也不知道为啥;但是我在 window 上安装是不需要我手动配置)

安装超时,猜测估计是下载超时,因为我没有梯子。后台得知有一个环境变量 GOPROXY 可以配置代理,指定包下载来源。

在 mac 上配置几个环境变量 vim .bash_profilesource .bash_profile,然后重启 vscode、重新安装能够下载成功了!紧接着第二个问题又来了~

在这里插入图片描述

(2)问题:copy fail,no permission on /usr/local/go/bin,install fail

这个路径就是我当前的 GOROOT go 安装位置下的 bin 目录,查看 bin 目录权限是drwxr-xr-x,修改扩大权限看看,sudo chmod -R 777 bin(你也可以不使用 -R 参数先试试),然后权限变成了drwxrwxrwx,再重启 vscode 重新安装,没有错误了,安装成功了,代码提示也有了~

在这里插入图片描述

在这里插入图片描述

(3)问题:package command-line-arguments is not a main package

这个问题之间随便在当前目录新建 go 文件执行怎么没报错,今天竟然不行(难道是我在这新建目录执行 go mod init 导致的?),不细究缘由,看报错信息较容易读懂,那就创建一个包名 main,把主函数移动到这个包下再运行,一切正常!

在这里插入图片描述

环境具备,终于可以开始跟随官网文档学习了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/618613.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用通俗易懂的方式讲解:如何用大语言模型构建一个知识问答系统

传统搜索系统基于关键字匹配,在面向:游戏攻略、技术图谱、知识库等业务场景时,缺少对用户问题理解和答案二次处理能力。 本文探索使用大语言模型(Large Language Model, LLM),通过其对自然语言理解和生成的…

Python+Selenium做自动化测试(超详细整理)

一、项目介绍 目的 测试某官方网站登录功能模块可以正常使用【文末有配套视频教程和免费的资料文档领取】 用例 1.输入格式正确的用户名和正确的密码,验证是否登录成功; 2.输入格式正确的用户名和不正确的密码,验证是否登录失败&#xff…

apache、nginx、php 隐藏版本号

apache、nginx、php 隐藏版本号 针对的系统都是CentOS 1、没配置之前 1.1 Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/7.2.24 mod_wsgi/3.4 Python/2.7.5 1.2 Server: nginx/1.16.0 1.3 X-Powered-By:7.2.24 2、配置信息 不知道具体位置,可…

VirtualBox安装linuxmint-21.2虚拟机并配置网络

VirtualBox安装linuxmint-21.2虚拟机并配置网络 适用于在VirtualBox平台上安装linuxmint-21.2虚拟机。 1. 安装准备 1.1 安装平台 Windows 11 1.2. 软件信息 软件名称软件版本安装路径Oracle VM VirtualBoxVirtualBox-7.0.12-159484D:\softwareCentOS7CentOS-7.9.2009E:\…

STM32——OLED实验

1.OLED简介 OLED,即有机发光二极管 OLED引脚说明 引脚说明: 1、CS:OLED片选信号(低电平有效) 2、WR:向OLED写入数据 3、RD:向OLED读取数据 4、D[7:0]:8位双向数据线,有…

kubebuilder+code-generator开发k8s的controller

本文记录用kubebuilder和code-generator开发k8s的crd控制器。 概览 和k8s.io/code-generator类似,是一个码生成工具,用于为你的CRD生成kubernetes-style API实现。区别在于: Kubebuilder不会生成informers、listers、clientsets&#xff0c…

宠物服务新篇章:预约小程序带来的变革

随着科技的进步和互联网的普及,小程序已经成为了一种非常受欢迎的应用形式。对于宠物门店来说,开发一个预约小程序可以大大提高客户体验和管理效率。下面是一份宠物门店预约小程序的开发指南。 浏览器搜索乔拓云,登录乔拓云网后台&#xff0c…

大数据仓库开发规范示例

大数据仓库开发规范示例 一、前提概要二、数仓分层原则及定义2.1 数仓分层原则2.2 数仓分层定义 三、数仓公共开发规范3.1 分层调用规范3.2 数据类型规范3.3 数据冗余规范3.4 NULL字段处理规范3.5 公共字段规范3.6 数据表处理规范3.7 事实表划分规范 四、数仓各层开发规范4.1 分…

二十四、同域名下JSESSIONID重叠导致退出

同域名下JSESSIONID重叠导致退出 近期在开发项目的时候发现,如果同域名的情况下,如果把一个单页面无登录系统嵌套进入另外一个系统,那么会出现相互退出的问题。 思考解决方案 一、清除掉嵌套的系统的JSESSIONID,意思就是嵌套系统不设置JSESSIONID 1找寻出问题接口 在无痕…

【电源专题】案例:在EN脚加个电阻就能解决电源下电输出振荡?

案例背景:在某产品上使用一颗升压芯片发现下电输出波形振荡,但此产品并不是第一个使用此升压芯片的。早先此升压芯片使用在其他产品上没有报过这个异常。 分析方法:使用DEMO板,查看标准DEMO板无异常。将异常板卡上的参数与全部换到DEMO板上发现同样存在异常。 推测原因:…

Maya参考图的导入和层的应用

参考视频:08.参考图的导入和层的应用_哔哩哔哩_bilibili 前视图/右视图模式下导入图形 创建图层 锁定后可以避免图片位置的移动 前视图和右视图要根据参照物对齐 与模型保持一定距离,同时把该参照图添加到图层中 模型可以添加到图层2中

Qt应用开发(安卓篇)——Linux下Qt15.5.2配置Android

目录 一、前言 二、Qt安装 三:JDK安装 四:安装SDK,NDK 五、其他事项 六、新建项目 一、前言 看网上教程,多数是windows环境下的,配置也很简单,想不到自己配置的时候却遇到很多问题,传了一…

0_项目git地址——正点原子minifly与crazyflie

1、说明: 在每个专栏的第一篇文章,笔者都会贴出项目的git地址,方便后来者学习和复现; 下面介绍两个项目的官网资料和git地址,最后给出两者的对比; 2、正点原子minifly (1)minifly官网资料下载中心&#…

【深度学习每日小知识】Training Data 训练数据

训练数据是机器学习的基本组成部分,在模型的开发和性能中起着至关重要的作用。它是指用于训练机器学习算法的标记或注释数据集。以下是与训练数据相关的一些关键方面和注意事项。 Quantity 数量 训练数据的数量很重要,因为它会影响模型的泛化能力。通常…

Flink standalone集群部署配置

文章目录 简介软件依赖部署方案二、安装1.下载并解压2.ssh免密登录3.修改配置文件3.启动集群4.访问 Web UI 简介 Flink独立模式(Standalone)是部署 Flink 最基本也是最简单的方式:所需要的所有 Flink 组件, 都只是操作系统上运行…

Python--装饰器

在 Python 中,装饰器是一种特殊类型的函数,它们用于修改或增强其他函数或方法的行为。装饰器本质上是一个函数,它接受一个函数作为参数,并返回一个新的函数。使用装饰器可以在不修改原函数代码的前提下,给函数添加新的…

Linux 网络设置与基础服务

一 配置网络设置 主机名 hostname IP地址/netmask ifconfig ; ip a 路由:默认网关 route -n DNS服务器 cat /etc/resolv.conf 网络连接状态 ss netstat 域名解析 ns…

索引不是银弹

数据库索引:不是银弹 使用环境索引分类创建索引的代价最佳实践不是所有针对索引列的查询都能使用索引加速查询 索引只能匹配列的前缀条件涉及函数操作的无法使用索引联合索引只能匹配左边的列 总结 数据库索引是优化性能的良药,但却不是银弹&#xff01…

10-skywalking告警

https://github.com/apache/skywalking/blob/master/docs/en/setup/backend/backend-alarm.md 5.1:告警指标 ~$ vim /apps/apache-skywalking-apm-bin/config/oal/core.oal service_resp_time # 服务的响应时间 service_sla # 服务http请求成功率SLV,比…

09-Python服务链路追踪案例

skyWalking Python agent requires SkyWalking 8.0 and Python 3.7 # 将django包导入 ~$ cd /apps ~$ tar xf django-test.tgz ~$ cd django-test# 安装模块 ~$ apt install python3-pip ~$ pip3 install -r requirements.txt# 创建django项目mysite ~$ django-admin startpro…