• [技术干货] VUE package.json属性说明详解
    属性介绍description字符串。用来描述当前项目的大致功能。name此项目包的名称。在不确定自己的包名能否使用之前,请先npm registry 一下,看看当前你喜欢的包名是否已经被占用。version当前项目包的版本号。每一次项目改动时,在即将发布时,都要同步的去更改项目的版本号。一般格式为:x.y.z。意思是:大版本.中版本.小版本keywords放简介,字符串。方便屌丝们在 npm search中搜索homepage项目官网的urlbugs你项目的提交问题的url和(或)邮件地址。这对遇到问题的屌丝很有帮助。{ "url" : "http://github.com/owner/project/issues" , "email" : "project@hostname.com" }你可以指定一个或者指定两个。如果你只想提供一个url,那就不用对象了,字符串就行。如果提供了url,它会被npm bugs命令使用。license你应该要指定一个许可证,让人知道使用的权利和限制的。最简单的方法是,假如你用一个像BSD或者MIT这样通用的许可证,就只需要指定一个许可证的名字,像这样:{ "license" : "BSD" }author项目作者。可以指定name,email,url字段信息。也可以单独使用字符串来表示。{“ author ”: { "name" : "Barney Rubble" , "email" : "b@rubble.com" , "url" : "http://barnyrubble.tumblr.com/" } }contributors项目相关贡献者。是数组。用于罗列对应的贡献人。可以是单独的字符串,也可以分别指定name,email,url等属性。{"contributors ":[ { "name" : "Barney Rubble" , "email" : "b@rubble.com" , "url" : "http://barnyrubble.tumblr.com/" } ]}filesfiles是一个包含项目中的文件的数组。如果命名了一个文件夹,那也会包含文件夹中的文件。(除非被其他条件忽略了)你也可以提供一个.npmignore文件,让即使被包含在files字段中得文件被留下。其实就像.gitignore一样。{ "files": [ "bin/", "templates/", "test/" ]}mainmain字段是一个模块ID,它是一个指向你程序的主要项目。就是说,如果你包的名字叫foo,然后用户安装它,然后require("foo"),然后你的main模块的exports对象会被返回。这应该是一个相对于根目录的模块ID。对于大多数模块,它是非常有意义的,其他的都没啥。{ "main": "bin/index.js"}bin很多包都有一个或多个可执行的文件希望被放到PATH中。(实际上,就是这个功能让npm可执行的)。要用这个功能,给package.json中的bin字段一个命令名到文件位置的map。初始化的时候npm会将他链接到prefix/bin(全局初始化)或者./node_modules/.bin/(本地初始化)。{ "bin" : { "npm" : "./cli.js" } }当你初始化npm,它会创建一个符号链接到cli.js脚本到/usr/local/bin/npm。如果你只有一个可执行文件,并且名字和包名一样。那么你可以只用一个字符串,比如{ "name": "my-program" , "version": "1.2.5" , "bin": "./path/to/program" }// 等价于{ "name": "my-program" , "version": "1.2.5" , "bin" : { "my-program" : "./path/to/program" } }man指定一个单一的文件或者一个文件数组供man程序使用。如果只提供一个单一的文件,那么它初始化后就是man 的结果,而不管实际的文件名是神马,比如:{ "name" : "foo" , "version" : "1.2.3" , "description" : "A packaged foo fooer for fooing foos" , "main" : "foo.js" , "man" : "./man/doc.1" }这样man foo就可以用到./man/doc.1文件了。如果文件名不是以包名开头,那么它会被冠以前缀,下面的:{ "name" : "foo" , "version" : "1.2.3" , "description" : "A packaged foo fooer for fooing foos" , "main" : "foo.js" , "man" : [ "./man/foo.1", "./man/bar.1" ] }会为man foo和man foo-bar创建文件。man文件需要以数字结束,然后可选地压缩后以.gz为后缀。{ "name" : "foo" , "version" : "1.2.3" , "description" : "A packaged foo fooer for fooing foos" , "main" : "foo.js" , "man" : [ "./man/foo.1", "./man/foo.2" ] }会为man foo和man 2 foo创建。repository指定你的代码存放的地方。这个对希望贡献的人有帮助。如果git仓库在github上,那么npm docs命令能找到你。scripts“scripts”是一个由脚本命令组成的hash对象,他们在包不同的生命周期中被执行。key是生命周期事件,value是要运行的命令。config"config" hash可以用来配置用于包脚本中的跨版本参数。在实例中,如果一个包有下面的配置{ "name" : "foo" , "config" : { "port" : "8080" } }然后有一个“start”命令引用了npm_package_config_port环境变量,用户可以通过npm config set foo:port 8001来重写他。dependencies依赖是给一组包名指定版本范围的一个hash。这个版本范围是一个由一个或多个空格分隔的字符串。依赖还可以用tarball或者git URL。请不要将测试或过渡性的依赖放在dependencies。对于引用包的版本号格式,以下都是合法的:{ "dependencies" :   { "foo" : "1.0.0 - 2.9999.9999"   , "bar" : ">=1.0.2 <2.1.2"   , "baz" : ">1.0.2 <=2.3.4"   , "boo" : "2.0.1"   , "qux" : "<1.0.0 || >=2.3.1 <2.4.5 || >=2.5.2 <3.0.0"   , "asd" : "http://asdf.com/asdf.tar.gz"   , "til" : "~1.2"   , "elf" : "~1.2.3"   , "two" : "2.x"   , "thr" : "3.3.x"  ,"vue":"*", "element-ui":"" } }devDependencies如果有人要用你的模块,但他们可能不需要你开发所使用的外部测试或者文档框架。在这种情况下,最好将这些附属的项目列在devDependencies中。这些东西会在根目录执行npm link或者npm install的时候初始化,并可以像其他npm配置参数一样管理。peerDependencies你的模块可能要暴露一个特定的接口,并由host文档来预期和指定。比如:{   "name": "tea-latte",   "version": "1.3.5"   "peerDependencies": {     "tea": "2.x"   } }这能保证你的package可以只和tea的2.x版本一起初始化。试图初始化另一个有会冲突的依赖的插件将导致一个错误。因此,确保你的插件的需求约束越弱越好,而不要去把它锁定到一个特定的版本。此属性尽量避免使用bundledDependencies一组包名,他们会在发布的时候被打包进去engines指定项目工作的环境。除非用户设置engine-strict标记,这个字段只是建议值。{ "engines" : { "node" : ">=0.10.3 <0.12", "npm" : "~1.0.20" } }engineStrict如果你确定你的模块一定不会运行在你指定版本之外的node或者npm上,你可以在package.json文件中设置"engineStrict":true。它会重写用户的engine-strict设置。除非你非常非常确定,否则不要这样做。如果你的engines hash过度地限制,很可能轻易让自己陷入窘境。慎重地考虑这个选择。如果大家滥用它,它会再以后的npm版本中被删除。os可以指定你的模块要运行在哪些操作系统中"os" : [ "darwin", "linux" ]你也可以用黑名单代替白名单,在名字前面加上“!”就可以了:"os" : [ "!win32" ]操作系统用process.platform来探测。虽然没有很好地理由,但它是同时支持黑名单和白名单的。cpu如果你的代码只能运行在特定的cpu架构下,你可以指定一个"cpu" : [ "x64", "ia32" ]就像os选项,你也可以黑一个架构:"cpu" : [ "!arm", "!mips" ]cpu架构用process.arch探测。preferGlobal如果包主要是需要全局安装的命令行程序,就设置它为true来提供一个warning给只在局部安装的人。它不会真正的防止用户在局部安装,但如果它没有按预期工作它会帮助防止产生误会。{" preferGlobal ":true}private如果你设置"private": true,npm就不会发布它。这是一个防止意外发布私有库的方式。如果你要确定给定的包是只发布在特定registry(如内部registry)的,用publishConfighash的描述来重写registry的publish-time配置参数。publishConfig这是一个在publish-time使用的配置集合。当你想设置tag或者registry的时候它非常有用,所以你可以确定一个给定的包没有打上“lastest”的tag或者被默认发布到全局的公开registry。任何配置都可以被重写,但当然可能只有“tag”和“registry”与发布的意图有关。
  • [问题求助] AppCube标准页面-组件-上传,文件存储在obs,上传成功后用预置库XLSX转Json 报错?
    【功能模块】【操作步骤&问题现象】1、上传excel文件,上传成功后用预置库XLSX转json报错,上传组件返回的数据不满足XLSX方法的入参要求?2、之前发过贴在,按照反馈更改后,还是报错!麻烦再看下【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [问题求助] atlas200dk profiling导致Init失败
    如题,当做profiling时,aclInit()初始化会失败;aclInit() 的config参数是json文件,正常内容为空: {}; 运行没有问题;用msprof工具和acl.json做profiling会出现同样的问题;用msprof工具如下,报错:100000/usr/local/Ascend/driver/tools/msprof --output=./profile --application="/usr/local/atlas/main /usr/local/atlas/models"   --sys-hardware-mem=on --environment="LD_LIBRARY_PATH=/usr/local/atlas/lib/:$LD_LIBRARY_PATH直接运行没有问题:/usr/local/Ascend/driver/tools/msprof --output=./profile --sys-devices=0 --sys-period=100 --sys-hardware-mem=on在acl.json中配置如下时,报同样的错误100000:设备信息如下,cann版本5.0.3alpha002:
  • [问题求助] 训练数据集的标签txt格式文件如何转换成json格式
  • [技术干货] JS 获取焦点失去焦点时修改输入框的样式【不写代码浑身难受】
    随着大数据的时代,用户体验让我们对操作本身简答逻辑不在陌生,而一些特效让操作元素更加直观,当然对直观的就是输入框的一些特效。简直是玩花了,为了让用户更加清除自己输入的是那一项,我们可以在获取焦点和失去焦点时添加一些样式。核心代码 const enter = document.querySelector('.enter') const fCss = enter.getAttribute("data-fCss") const bCss = enter.getAttribute('data-bCss') const bClass = enter.getAttribute('data-bClass') const fClass = enter.getAttribute('data-fClass') //getAttribute() 返回的是指定属性的值 //console.log(bCss, bCss, bClass, fClass); {"backgroundColor":"blue"} {"backgroundColor":"pink"} bborder footer //将字符串转化为JSON对象 function strToJson(str) { //JSON.parse方法用于将JSON字符串转化成对象:这种方式能将字符串解析成json对象 return typeof str == 'object' ? JSON.parse(str) : (new Function('return' + str))(); } //设置样式 function setCss(_this, Cssoption) { if (!_this || _this.nodeType === 3 || _this.nodeType === 8 || !_this.style) { return } for (let cs in Cssoption) { _this.style[cs] = Cssoption[cs] console.log(Cssoption, cs); } return _this } //获取焦点添加样式 function foceshandle() { fCss && setCss(this, strToJson(fCss)) fClass && (this.className = fClass) } //失去焦点添加样式 function blurhandle() { bCss && setCss(this, strToJson(bCss)) bClass && (this.className = bClass) } enter.addEventListener('focus', foceshandle) enter.addEventListener('blur', blurhandle)逻辑说明:getAttribute() 返回的是指定属性的值console.log(bCss, bCss, bClass, fClass);    {"backgroundColor":"blue"} {"backgroundColor":"pink"} bborder footer 代码可以通过  fCss && setCss(this, strToJson(fCss))   and     fClass && (this.className = fClass)   实现修改元素的行内样式与class的修改通过逻辑 ’与‘ 来判断 fCss   与  setCss(this, strToJson(fCss))  是否为空 ,代码理解比较简单,但是代码逻辑时很好模板。
  • [数据处理] 【modelArts平台MindSpore产品】【如何将json数据转化mindrecord】
    【功能模块】【操作步骤&问题现象】我在modelarts平台上执行如下代码import osimport requestsimport tarfileimport zipfilefrom mindspore.mindrecord import FileWriterdata_record_path = 'test4.mindrecord'writer = FileWriter(file_name=data_record_path, shard_num=4)# 定义schemadata_schema = {"label":{"type":"int32"},"data":{"type":"float64",'shape':[-1]}}writer.add_schema(data_schema,"test_schema")data = [{"label":targetNum[0], "data":dataaaa.iloc[0]}]indexes = ["label","data"]writer.add_index(indexes)# 数据写入writer.write_raw_data(data)# 生成本地数据writer.commit()然后报了这样的错误,请问如何解决?【截图信息】这是data数据,这是报错截图【日志信息】(可选,上传日志内容或者附件)
  • [活动体验] 实现一个端云联邦的图像分类应用(x86)
    联邦学习可分为云云联邦学习(cross-silo)和端云联邦学习(cross-device)。在云云联邦学习场景中,参与联邦学习的客户是不同的组织(例如,医疗或金融)或地理分布的数据中心,即在多个数据孤岛上训练模型。而在端云联邦学习场景中参与的客户为大量的移动或物联网设备。本框架将介绍如何在MindSpore端云联邦框架上使用网络LeNet实现一个图片分类应用。首先要下载数据集:该数据集包含62个不同类别的手写数字和字母(数字0~9、26个小写字母、26个大写字母),图像大小为28 x 28像素,数据集包含3500个用户的手写数字和字母(最多可模拟3500个客户端参与联邦学习),总数据量为805263,平均每个用户包含数据量为226.83,所有用户数据量的方差为88.94。下载数据集前的环境要求。代码如下:numpy==1.16.4scipy # conda install scipytensorflow==1.13.1 # pip install tensorflowPillow # pip install Pillowmatplotlib # pip install matplotlibjupyter # conda install jupyter notebook==5.7.8 tornado==4.5.3pandas # pip install pandas使用git下载官方数据集生成脚本。git clone https://github.com/TalwalkarLab/leaf.git目录结构如下:leaf/data/femnist├── data # 用来存放指令生成的数据集├── preprocess # 存放数据预处理的相关代码├── preprocess.sh # femnist数据集生成shell脚本└── README.md # 官方数据集下载指导文档以femnist数据集为例,运行以下指令进入指定路径。cd leaf/data/femnist在终端输入指令即可下载对应数据集。运行./preprocess.sh具有以下标签的选择:-s:’iid’以iid方式采样,或’niid’以非iid方式采样。--iu:用户数(如果进行iid采样);表示为用户总数的分数;默认值为0.01。--sf:要采样的数据部分,用十进制表示;默认值为0.1。-k:每个用户的最小样本数。-t:’user’将用户划分为训练测试组,或’sample’将每个用户的样本划分为训练测试组。--tf:训练集中的数据部分,用小数表示;默认值为0.9。--smplseed:随机抽样数据之前要使用的种子。--spltseed:随机分割数据之前要使用的种子。用指令./preprocess.sh -s niid --sf 1.0 -k 0 -t sample生成的数据集包含3500个用户,且按照9:1对每个用户的数据划分训练和测试集。运行之后目录结构如下:leaf/data/femnist/35_client_sf1_data/├── all_data # 所有数据集混合在一起,不区分训练测试集,共包含35个json文件,每个json文件包含100个用户的数据├── test # 按照9:1对每个用户的数据划分训练和测试集后的测试集,共包含35个json文件,每个json文件包含100个用户的数据├── train # 按照9:1对每个用户的数据划分训练和测试集后的训练集,共包含35个json文件,每个json文件包含100个用户的数据└── ... # 其他文件,暂不需要用到,不作介绍其中每个json文件包含以下三个部分:1. users: 用户列表。2. num_samples: 每个用户的样本数量列表。3. user_data: 一个以用户名为key,以它们各自的数据为value的字典对象;对于每个用户,数据表示为图像列表,每张图像表示为大小为784的整数列表(将28 x 28图像数组展平所得)。5个json文件划分为3500个json文件代码如下:import osimport jsondef mkdir(path):if not os.path.exists(path):os.mkdir(path)def partition_json(root_path, new_root_path):"""partition 35 json files to 3500 json fileEach raw .json file is an object with 3 keys:1. 'users', a list of users2. 'num_samples', a list of the number of samples for each user3. 'user_data', an object with user names as keys and their respective data as values; for each user, data is represented as a list of images, with each image represented as a size-784 integer list (flattened from 28 by 28)Each new .json file is an object with 3 keys:1. 'user_name', the name of user2. 'num_samples', the number of samples for the user3. 'user_data', an dict object with 'x' as keys and their respective data as values; with 'y' as keys and their respective label as values;Args:root_path (str): raw root path of 35 json filesnew_root_path (str): new root path of 3500 json files"""paths = os.listdir(root_path)count = 0file_num = 0for i in paths:file_num += 1file_path = os.path.join(root_path, i)print('======== process ' + str(file_num) + ' file: ' + str(file_path) + '======================')with open(file_path, 'r') as load_f:load_dict = json.load(load_f)users = load_dict['users']num_users = len(users)num_samples = load_dict['num_samples']for j in range(num_users):count += 1print('---processing user: ' + str(count) + '---')cur_out = {'user_name': None, 'num_samples': None, 'user_data': {}}cur_user_id = users[j]cur_data_num = num_samples[j]cur_user_path = os.path.join(new_root_path, cur_user_id + '.json')cur_out['user_name'] = cur_user_idcur_out['num_samples'] = cur_data_numcur_out['user_data'].update(load_dict['user_data'][cur_user_id])with open(cur_user_path, 'w') as f:json.dump(cur_out, f)f = os.listdir(new_root_path)print(len(f), ' users have been processed!')# partition train json filespartition_json("leaf/data/femnist/35_client_sf1_data/train", "leaf/data/femnist/3500_client_json/train")# partition test json filespartition_json("leaf/data/femnist/35_client_sf1_data/test", "leaf/data/femnist/3500_client_json/test")其中root_path为leaf/data/femnist/35_client_sf1_data/{train,test},new_root_path自行设置,用于存放生成的3500个用户json文件,需分别对训练和测试文件夹进行处理。新生成的3500个用户json文件,每个文件均包含以下三个部分:4. user_name: 用户名。5. num_samples: 用户的样本数。6. user_data: 一个以’x’为key,以用户数据为value的字典对象; 以’y’为key,以用户数据对应的标签为value。运行该脚本打印如下,代表运行成功:代码如下:======== process 1 file: /leaf/data/femnist/35_client_sf1_data/train/all_data_16_niid_0_keep_0_train_9.json======================---processing user: 1------processing user: 2------processing user: 3------processing user: 4------processing user: 5------processing user: 6------processing user: 7------processing user: 8------processing user: 9------processing user: 10------processing user: 11------processing user: 12------processing user: 13------processing user: 14---..将json文件转换为图片文件。代码如下:import osimport jsonimport numpy as npfrom PIL import Imagename_list = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9','A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U','V', 'W', 'X', 'Y', 'Z','a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u','v', 'w', 'x', 'y', 'z']def mkdir(path):if not os.path.exists(path):os.mkdir(path)def json_2_numpy(img_size, file_path):"""read json file to numpyArgs:img_size (list): contain three elements: the height, width, channel of imagefile_path (str): root path of 3500 json filesreturn:image_numpy (numpy)label_numpy (numpy)"""# open json filewith open(file_path, 'r') as load_f_train:load_dict = json.load(load_f_train)num_samples = load_dict['num_samples']x = load_dict['user_data']['x']y = load_dict['user_data']['y']size = (num_samples, img_size[0], img_size[1], img_size[2])image_numpy = np.array(x, dtype=np.float32).reshape(size) # mindspore doesn't support float64 and int64label_numpy = np.array(y, dtype=np.int32)return image_numpy, label_numpydef json_2_img(json_path, save_path):"""transform single json file to imagesArgs:json_path (str): the path json filesave_path (str): the root path to save images"""data, label = json_2_numpy([28, 28, 1], json_path)for i in range(data.shape[0]):img = data[i] * 255 # PIL don't support the 0/1 image ,need convert to 0~255 imageim = Image.fromarray(np.squeeze(img))im = im.convert('L')img_name = str(label[i]) + '_' + name_list[label[i]] + '_' + str(i) + '.png'path1 = os.path.join(save_path, str(label[i]))mkdir(path1)img_path = os.path.join(path1, img_name)im.save(img_path)print('-----', i, '-----')def all_json_2_img(root_path, save_root_path):"""transform json files to imagesArgs:json_path (str): the root path of 3500 json filessave_path (str): the root path to save images"""usage = ['train', 'test']for i in range(2):x = usage[i]files_path = os.path.join(root_path, x)files = os.listdir(files_path)for name in files:user_name = name.split('.')[0]json_path = os.path.join(files_path, name)save_path1 = os.path.join(save_root_path, user_name)mkdir(save_path1)save_path = os.path.join(save_path1, x)mkdir(save_path)print('=============================' + name + '=======================')json_2_img(json_path, save_path)all_json_2_img("leaf/data/femnist/3500_client_json/", "leaf/data/femnist/3500_client_img/")运行成功获得如下结果过将图片数据集转换为联邦学习框架可用的bin文件格式。代码如下:import numpy as npimport osimport mindspore.dataset as dsimport mindspore.dataset.transforms.c_transforms as tCimport mindspore.dataset.vision.py_transforms as PVimport mindspore.dataset.transforms.py_transforms as PTimport mindsporedef mkdir(path):if not os.path.exists(path):os.mkdir(path)def count_id(path):files = os.listdir(path)ids = {}for i in files:ids[i] = int(i)return idsdef create_dataset_from_folder(data_path, img_size, batch_size=32, repeat_size=1, num_parallel_workers=1, shuffle=False):""" create dataset for train or testArgs:data_path: Data pathbatch_size: The number of data records in each grouprepeat_size: The number of replicated data recordsnum_parallel_workers: The number of parallel workers"""# define datasetids = count_id(data_path)mnist_ds = ds.ImageFolderDataset(dataset_dir=data_path, decode=False, class_indexing=ids)# define operation parametersresize_height, resize_width = img_size[0], img_size[1] # 32transform = [PV.Decode(),PV.Grayscale(1),PV.Resize(size=(resize_height, resize_width)),PV.Grayscale(3),PV.ToTensor(),]compose = PT.Compose(transform)# apply map operations on imagesmnist_ds = mnist_ds.map(input_columns="label", operations=tC.TypeCast(mindspore.int32))mnist_ds = mnist_ds.map(input_columns="image", operations=compose)# apply DatasetOpsbuffer_size = 10000if shuffle:mnist_ds = mnist_ds.shuffle(buffer_size=buffer_size) # 10000 as in LeNet train scriptmnist_ds = mnist_ds.batch(batch_size, drop_remainder=True)mnist_ds = mnist_ds.repeat(repeat_size)return mnist_dsdef img2bin(root_path, root_save):"""transform images to bin filesArgs:root_path: the root path of 3500 images filesroot_save: the root path to save bin files"""use_list = []train_batch_num = []test_batch_num = []mkdir(root_save)users = os.listdir(root_path)for user in users:use_list.append(user)user_path = os.path.join(root_path, user)train_test = os.listdir(user_path)for tag in train_test:data_path = os.path.join(user_path, tag)dataset = create_dataset_from_folder(data_path, (32, 32, 1), 32)batch_num = 0img_list = []label_list = []for data in dataset.create_dict_iterator():batch_x_tensor = data['image']batch_y_tensor = data['label']trans_img = np.transpose(batch_x_tensor.asnumpy(), [0, 2, 3, 1])img_list.append(trans_img)label_list.append(batch_y_tensor.asnumpy())batch_num += 1if tag == "train":train_batch_num.append(batch_num)elif tag == "test":test_batch_num.append(batch_num)imgs = np.array(img_list) # (batch_num, 32,3,32,32)labels = np.array(label_list)path1 = os.path.join(root_save, user)mkdir(path1)image_path = os.path.join(path1, user + "_" + "bn_" + str(batch_num) + "_" + tag + "_data.bin")label_path = os.path.join(path1, user + "_" + "bn_" + str(batch_num) + "_" + tag + "_label.bin")imgs.tofile(image_path)labels.tofile(label_path)print("user: " + user + " " + tag + "_batch_num: " + str(batch_num))print("total " + str(len(use_list)) + " users finished!")root_path = "leaf/data/femnist/3500_client_img/"root_save = "leaf/data/femnist/3500_clients_bin"img2bin(root_path, root_save)若结果如下,则表示运行成功:生成3500_clients_bin文件夹内共包含3500个用户文件夹,其目录结构如下:leaf/data/femnist/3500_clients_bin├── f0000_14 # 用户编号│ ├── f0000_14_bn_10_train_data.bin # 用户f0000_14的训练数据 (bn_后面的数字10代表batch number)│ ├── f0000_14_bn_10_train_label.bin # 用户f0000_14的训练标签│ ├── f0000_14_bn_1_test_data.bin # 用户f0000_14的测试数据 (bn_后面的数字1代表batch number)│ └── f0000_14_bn_1_test_label.bin # 用户f0000_14的测试标签├── f0001_41 # 用户编号│ ├── f0001_41_bn_11_train_data.bin # 用户f0001_41的训练数据 (bn_后面的数字11代表batch number)│ ├── f0001_41_bn_11_train_label.bin # 用户f0001_41的训练标签│ ├── f0001_41_bn_1_test_data.bin # 用户f0001_41的测试数据 (bn_后面的数字1代表batch number)│ └── f0001_41_bn_1_test_label.bin # 用户f0001_41的测试标签│ ...└── f4099_10 # 用户编号├── f4099_10_bn_4_train_data.bin # 用户f4099_10的训练数据 (bn_后面的数字4代表batch number)├── f4099_10_bn_4_train_label.bin # 用户f4099_10的训练标签├── f4099_10_bn_1_test_data.bin # 用户f4099_10的测试数据 (bn_后面的数字1代表batch number)└── f4099_10_bn_1_test_label.bin # 用户f4099_10的测试标签
  • [服务构建器] 【华为云Stack ManageOne 服务构建器】服务构建验证过程脚本修改后快速验证方法总结
    总结一:修改脚本后快速更新模板1. 背景说明在初始服务构建阶段,必然会有调测过程,比如脚本执行失败,或脚本执行完成但并没有到想要的效果,需要修改脚本后再次进行编排验证,这样就涉及到修改脚本、修改模板操作。在portal创建模板并引用脚本资源过程中,整个脚本内容是经过格式化、字符转义后,作为JSON格式模板体源码中一段字符串格式存在的。通过标准方式,即在脚本界面修改脚本,完了在模板界面修改模板并更新图元可以完成修改,但需要在多个界面编辑,且如果原来脚本图元引用了模板中其他资源的输入或输出参数的话,更新图元后这些引用关系也得重新在图形化设计器界面重新再关联,参数分组内容也需要重新编辑修改,这样导致整个脚本修改、再验证的过程效率比较低。如果脚本修改后,能快速通过工具完成格式化、字符转义等操作把脚本转换成界面修改对等的字符串,直接在模板中替换掉原来的脚本字符串,则可以提高效率。2. 格式化脚本操作说明2.1 通过在线JSON编辑工具,先进行转义处理。主要处理脚本文件中双引号、嵌套转义的字符。说明:• 在线JSON编辑工具比较普遍,上网即可搜索。如果有类似功能的本地工具,也可以使用。• 虽然手工也可以编辑,但本着工具优先的原则,及考虑待转义的字符数量、嵌套转义规则要求等,还是优先使用工具比较好。2.2 在notepad++中,将换行效果替换为 \n具体操作如下图。操作完成后,脚本内容就被转换为一行字符串,其中原来的换行被替换成了 \n说明:• 上图查找目标项的具体内容,目的是为了以正则方式匹配回车换行,需要留意当前编辑的脚本具体是那种编码方式,以实际编码情况设置正确的值。Linux系统下是\n,Windows下是 \r\n。2.3 修改模板在图形化设计器界面打开代码区,直接替换脚本图元对应的源码中关键字“template”对应的value值。注意:value值是字符串格式,替换后的脚本内容前后有双引号,保证基本的JSON格式正确。3. 补充说明• 以上操作,适合提前单独验证好脚本基本功能,在最后服务申请验证阶段发现脚本相关问题后,快速更新模板进行调测验证。考虑到模板源码中脚本相应入参还有前后引用及关联,如果验证过程发现脚本要新增入参的情况,还是建议在portal上通过可视化方式来修改脚本、修改模板,避免手动修改引入其他的问题。• 如果使用IDEA开发工具,以上2.1和2.2小节操作过程,则可以快速完成:1),创建一个空的JSON文件(文件扩展名为*.json);2),输入一对双引号(英文格式);3),复制脚本文件内容直接粘贴到JSON文件中两个双引号之间,则IDEA工具会自动完成转义及多行合并效果(即2.1和2.2小节达到的效果);4),复制JSON文件中两端带双引号的全部内容去替换模板源码中的目标内容。总结二:在编排实施创建的资源节点上验证脚本1. 应用说明申请构建的服务后编排实施过程,资源创建成功,脚本执行报错或执行正常但没有达成目标效果,此时,只要资源(比如ECS资源)还在,就可以远程登录ECS后直接手动触发脚本执行,查看执行效果并及时修改再验证。2. 操作说明2.1 登录ManageOne,打开弹性云服务器列表,找到目标资源远程登录,连接到目标系统中。登录用户及认证信息,即申请资源时使用的镜像的默认用户及认证信息。2.2 进入脚本存放目录cd /var/lib/cloud/instance/scripts2.3 手动执行脚本sh -x part-001实际操作中将“part-001”替换为当前目录下真实存在的脚本文件名称。及时查看执行脚本的回显信息,示例:3. 补充说明脚本需要提前单独做好必要的验证,避免遗留较多问题在申请服务、编排实施过程验证,影响构建服务效率,所以以上验证方法只是建议在最终服务申请过程遇到问题时来用。
  • [技术干货] [设计器]RobotInputJs:the json value must be string type
    脚本运行时,提示RobotInputJsonError:the json value must be string type原因分析:此时脚本刚启动尚未运行到控件,所以此类报错大多是当前的xml脚本有异常导致。解决方法:新建一个脚本或者工程,将新的控件action放到此画布里。
  • [传感器适配] 【MDC300F】【CANFD下发】mcu_canfd_config.json配置文件下发成功,但是查看其下发信息失败。
    【功能模块】MDC OS 105T【操作步骤&问题现象】1、下发CANFD配置成功2、获取下发过的CANFD配置和当前生效的CANFD配置失败根据以上错误提示信息,打开canfdbus.json和realcanfdbus.json错误,ls查看并没有用这两个json文件【日志信息】(可选,上传日志内容或者附件)
  • [传感器适配] 【MDC300F产品】【串口数据接收功能】已知mcu_uartbus_config.json文件如何编制数据
    【功能模块】MDC300D使用MCU透传功能发送数据【操作步骤&问题现象】1、使用样例程序接收串口数据2、使用电脑串口助手给MDC发送串口数据,MDS中的console中监控上行数据3.从console中能看到下发成功,且在串口监控界面能看到下发数据,但是在console界面上无法打印串口上行数据4.mcu_uartbus_config.json配置如下BaudRate :115200HeadType:1DataType: 1SyncLength:3SyncData:uint8 189   uint8  219  uint8  11  HeadLengthPos :0HeadFixLength  :   0DataLengthSignalPosStartByte : 0DataLengthSignalSize              :   0DataFixLength                         :   605.我从串口发送的数据:BD DB 0B 7F FC 7F 7E 1E 78 1F 66 78 1E 7E 78 7C FE 78 7E 9E 78 78 FE 78 78 78 E7 FF 1F 7E 67 7E 9F 70 F8 E6 DF 9C 9E 9E 98 FC 98 E6 98 F8 98 FE 98 F0 86 E7 98 F7 1E E6 F8 E7 66 6.为啥在收不到?【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [问题求助] 【AICC产品】【SCE功能】SCE默认编码是GBK,如何改为u8
    【问题来源】【必填】    星网    【问题简要】【必填】SCE流程开发,接口传输中文出现乱码【问题类别】【必填】 IVR,gsl 【AICC解决方案版本】【必填】 AICC 8.14.0 SCE版本 ICDV300R008C20SPC002【期望解决时间】【选填】尽快【问题现象描述】【必填】SCE流程开发,接口传输中文出现乱码,平台默认应该是GBK,是否能改为UTF-8编码,在什么地方更改?
  • [问题求助] SCE工具开发IVR流程,json返回如何解析
    【功能模块】SCE中的"web请求直接返回Cell"【操作步骤&问题现象】发送post请求,返回json串中的data这种字段如何解析?(msg和retCode字段能成功解析)【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [新手课堂] python,写json数据到json文件中
        with open('{}.json'.format(file_name), 'w', encoding='UTF-8') as fp:        json.dump(file_info, fp, indent=4, sort_keys=False)    fp.close()
  • [应用开发] 【MDC300F】【CM通讯】MDS Generate from arxmal没有生成network_binding.json
    【功能模块】使用MDS编译生成json文件【操作步骤&问题现象】1、按照产品说明完成数据定义,端口及服务图形化设计完成,在MDS中一键生成对应的json文件时发现少了network_binging.json文件2、该问题如何查找没有生成network_binging.json的原因【截图信息】【日志信息】(可选,上传日志内容或者附件)
总条数:119 到第
上滑加载中