我正在设计一个新的配置/数据格式,它将在YAML中.许多输入是int/float值,带有相关单位(例如升,夸脱,品脱,秒,分钟......).
我一直在搜索和阅读,但仍然无法弄清楚:在YAML中将值和单位与配置项关联的最佳方法是什么?
示例:假设我有几种饮料的清单,(除其他外),我想输入它们的音量.我可以想到几个方面,但(至少在我看来)它们都不是真正理想的:
要求以相同单位输入所有音量值.
强制用户自己进行单位转换,这是单调乏味,容易出错并且以后难以验证,因为现在数量输入不同于为饮料列出的原始数量.(饮料来自几个不同的来源,每个来源可能使用不同的度量单位.)
用一系列体积和单位表示值.例:
volume: [ 0.5, Gallons ]
Run Code Online (Sandbox Code Playgroud)
(映射也会起作用,虽然更详细)序列可能没问题,但我不确定我是否对此感到满意.
使用两个"音量"值,一个用于值,另一个用于单位.例:
volume_value: 0.5
volume_units: Gallons
Run Code Online (Sandbox Code Playgroud)
我认为这不是首发.详细,非常松散的关联,容易出错.
改为使用字符串,并在应用程序中解析它.例:
volume: 0.5 Gallons
Run Code Online (Sandbox Code Playgroud)
最简单的输入,并且很容易编写一个健壮的解析器.看起来可能有点像黑客,但......
应用标签:
volume: !gallons 0.5
Run Code Online (Sandbox Code Playgroud)
不确定这个,因为我是YAML的新手并且还没有很好地理解标签.或许,语法更脆弱一些.
所以,问题是:根据YAML规范,或事实上的最佳实践/惯例,是否有一种表示价值+单位的特定方式?无论是我列出的五个之一还是别的,我都希望有一个"正确的答案",留在网站问题指南中.
如何加载YAML文件并将其转换为Python JSON对象?
我的YAML文件如下所示:
Section:
heading: Heading 1
font:
name: Times New Roman
size: 22
color_theme: ACCENT_2
SubSection:
heading: Heading 3
font:
name: Times New Roman
size: 15
color_theme: ACCENT_2
Paragraph:
font:
name: Times New Roman
size: 11
color_theme: ACCENT_2
Table:
style: MediumGrid3-Accent2
Run Code Online (Sandbox Code Playgroud) 我希望能够在命令行中使用 openssl 生成密钥对私钥和公钥,但我不知道该怎么做。到目前为止我所做的是执行以下命令行,但这只会向我打印这个,我不知道它到底是什么:s
FROM OPENSSL PAGE:使用显式参数创建 EC 参数:
openssl ecparam -out ec_param.pem -name prime192v1 -param_enc explicit
-----BEGIN EC PARAMETERS-----
MIHHAgEBMCQGByqGSM49AQECGQD////////////////////+//////////8wSwQY
/////////////////////v/////////8BBhkIQUZ5ZyA5w+n6atyJDBJ/rje7MFG
ubEDFQAwRa5vyEIvZO1XlSjTgSDq4SGW1QQxBBiNqA6wMJD2fL8g60OhiAD0/wr9
gv8QEgcZK5X/yNp4YxAR7WskzdVz+XehHnlIEQIZAP///////////////5ne+DYU
a8mxtNIoMQIBAQ==
-----END EC PARAMETERS-----
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我如何得到这样的东西:
//-----------------Generated Key Pair----------------------------------//
char privkey[]=
"-----BEGIN EC PARAMETERS-----\n"
"BgUrgQQACQ==\n"
"-----END EC PARAMETERS-----\n"
"-----BEGIN EC PRIVATE KEY-----\n"
"MFACAQEEFI9sfpfTk0YlZx8JaCZnLsy4T6HYoAcGBSuBBAAJoSwDKgAEIlzYflxD\n"
"0396M0i6dGfSY3khTU7kiNyEv/B1EoyGmqvH7tjhSmpP1A==\n"
"-----END EC PRIVATE KEY-----\n";
char pubkey[] =
"-----BEGIN PUBLIC KEY-----\n"
"MD4wEAYHKoZIzj0CAQYFK4EEAAkDKgAEIlzYflxD0396M0i6dGfSY3khTU7kiNyE\n"
"v/B1EoyGmqvH7tjhSmpP1A==\n"
"-----END PUBLIC KEY-----\n";
//---------------------------------------------------------------------//
Run Code Online (Sandbox Code Playgroud)
我从在线获得的代码中得到了这个,该代码使用此密钥对与 ECDSA 签署消息,但现在我希望能够生成我自己的密钥对(从 openssl 命令行)并在这样的代码中使用它,以为我更改此密钥对。
就我而言,我想使用 NIST P225,即“prime256v1”。
有人能帮我吗?
谢谢,最好的问候
我有一个QLineEdit,我想限制QLineEdit只接受整数.它应该像inputmask一样工作.但我不想使用inputmask,因为如果用户点击QLineEdit光标将位于鼠标被点击的位置.并且用户需要导航到0位置并键入他想要的前夕.
有没有替代品.
我有一个支持python 2.4,2.6和2.7的构建盒.这导致在他们自己的python安装中根据需要安装各种版本的pips.我正在使用tox测试setup.py.
每当我运行一个时{python2.7_installation_dir}/bin/python setup.py test,这会产生一个.tox目录.在.tox我运行的目录中
py27/bin/pip --version
pip 1.4.1 from {my_package}/.tox/py27/lib/python2.7/site-packages (python 2.7)
[buildbot@BUILD-SERV-01 .tox]# python2.7
Python 2.7.6 (default, Nov 20 2013, 15:33:09)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-54)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pip
>>> pip.__version__
'1.5.2'
Run Code Online (Sandbox Code Playgroud)
所以.tox目录中的pip版本是1.4.1,其中为我用来执行的python解释器安装的pip setup.py test是1.5.2.这在运行测试时会导致错误,因为它使用pip来安装目录,其中一些来自外部源,而在1.5.2中我们需要为其中一个模块明确设置--allow-external --allow-unverified标志.在1.4.1中不存在,每次通过tox调用测试时都会导致错误.
只有一个python2.7安装,它是从源安装的.但我认为它正在运行pip 1.4.1,但现在已升级为使用1.5.2.如何使用旧版本?是否有任何.pth可能遗留下来的文件或内容需要清理?
我可以tox直接放下并运行pytests,但我更喜欢通过它运行它们tox.
如果您想查看日志,请告诉我,我可以使用日志更新问题.
应用程序能够在更新我的android工作室之前执行,这是我得到的错误:
Error:Execution failed for task ':app:dexDebug'.
> com.android.ide.common.process.ProcessException:
org.gradle.process.internal.ExecException:
Process 'command 'C:\Program Files\Java\jdk1.8.0_25\bin\java.exe'' finished
with non-zero exit value 1
Run Code Online (Sandbox Code Playgroud) 我目前正致力于实现一个名为的阈值算法Bradley Adaptive Thresholding.
我一直在主要关注两个链接,以便弄清楚如何实现这个算法.我也成功地实现了另外两种阈值算法,主要是Otsu的方法和平衡直方图阈值处理.
以下是我为了创建Bradley Adaptive Thresholding算法而遵循的两个链接.
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.420.7883&rep=rep1&type=pdf
以下是Python我运行算法并保存图像的源代码部分.我使用Python Imaging Library而不是其他工具来完成我想要做的事情.
def get_bradley_binary(inp_im):
w, h = inp_im.size
s, t = (w / 8, 0.15)
int_im = Image.new('L', (w, h))
out_im = Image.new('L', (w, h))
for i in range(w):
summ = 0
for j in range(h):
index = j * w + i
summ += get_pixel_offs(inp_im, index)
if i == 0:
set_pixel_offs(int_im, index, summ)
else:
temp = get_pixel_offs(int_im, …Run Code Online (Sandbox Code Playgroud) 我正在尝试执行一个脚本
python3 env/common_config/add_imagepullsecret.py
Run Code Online (Sandbox Code Playgroud)
但是,我收到以下错误:
[root@kevin]# python3 env/common_config/add_imagepullsecret.py
Traceback (most recent call last):
File "env/common_config/add_imagepullsecret.py", line 4, in <module>
import yaml
ImportError: No module named 'yaml'
[root@kevin]# pip3 install pyyaml
Requirement already satisfied: pyyaml in /usr/lib64/python3.4/site-packages
(3.12)
[root@kevin]#
Run Code Online (Sandbox Code Playgroud)
PyYAML已经安装在机器中:
[root@bhimsvm31 k8s]# pip3 install pyyaml
Requirement already satisfied: pyyaml in /usr/lib64/python3.4/site-packages
(3.12)
[root@bhimsvm31 k8s]#
Run Code Online (Sandbox Code Playgroud)
如何获取此脚本以导入PyYAML?
尝试使用新的 YAML 构建功能在 Azure DevOps 中创建构建配置,但是在引用 NuGet.config 文件(位于我的项目文件夹的根目录中)时,我似乎无法使 Nuget 恢复工作
在我的 YAML 构建文件中,我有:
- task: NuGetCommand@2
displayName: 'NuGet restore'
inputs:
restoreSolution: '$(Parameters.solution)'
feedsToUse: config
nugetConfigPath: 'NuGet.config'
Run Code Online (Sandbox Code Playgroud)
在我的日志中,我得到以下信息:
2018-09-25T17:25:07.4624712Z ##[section]Starting: NuGet restore
2018-09-25T17:25:07.4631787Z ==============================================================================
2018-09-25T17:25:07.4631904Z Task : NuGet
2018-09-25T17:25:07.4632707Z Description : Restore, pack, or push NuGet packages, or run a NuGet command. Supports NuGet.org and authenticated feeds like Package Management and MyGet. Uses NuGet.exe and works with .NET Framework apps. For .NET Core and .NET Standard apps, use the .NET Core …Run Code Online (Sandbox Code Playgroud) 我将azure-pipelines.yml从一个项目复制到另一个项目,但它不会构建.我确保一切都是一样的,并且两侧都安装了相同的扩展......
旧的构建仍然有效,但新的构建不会:
这是YAML:
# https://aka.ms/yaml
name: $(Build.DefinitionName)_$(GitVersion_InformationalVersion)
pr:
- master
pool:
vmImage: 'VS2017-Win2016'
steps:
- task: gittools.gitversion.gitversion-task.GitVersion@3
displayName: GitVersion
- powershell: .\bootstrap.ps1
displayName: 'Restore pre-requisites'
- powershell: .\build.ps1 -OutputDirectory $(Build.ArtifactStagingDirectory)\$(Build.DefinitionName) -SemVer $(GitVersion.InformationalVersion) -Verbose
displayName: 'Run build script'
- task: richardfennellBM.BM-VSTS-PesterRunner-Task.Pester-Task.Pester@8
displayName: 'Pester Tests'
inputs:
additionalModulePath: '$(Build.ArtifactStagingDirectory)'
CodeCoverageFolder: '$(Build.ArtifactStagingDirectory)'
resultsFile: '$(Common.TestResultsDirectory)\Test-$(Build.DefinitionName)_$(Build.BuildNumber).xml'
CodeCoverageOutputFile: '$(Common.TestResultsDirectory)\Coverage-$(Build.DefinitionName)_$(Build.BuildNumber).xml'
- task: PublishTestResults@2
displayName: 'Publish Test Results'
condition: always()
inputs:
testRunner: NUnit
searchFolder: '$(Common.TestResultsDirectory)'
- task: PublishCodeCoverageResults@1
displayName: 'Publish code coverage'
inputs:
summaryFileLocation: '$(Common.TestResultsDirectory)\Coverage-$(Build.DefinitionName)_$(Build.BuildNumber).xml'
- task: PublishBuildArtifacts@1
displayName: …Run Code Online (Sandbox Code Playgroud) python ×5
azure-devops ×2
pip ×2
python-3.x ×2
yaml ×2
android ×1
azure ×1
build.gradle ×1
config ×1
cryptography ×1
java ×1
json ×1
openssl ×1
pyqt4 ×1
pyyaml ×1
qlineedit ×1
setup.py ×1
tox ×1
version ×1