小编Ant*_*hon的帖子

如何在YAML中表示价值+单位?

我正在设计一个新的配置/数据格式,它将在YAML中.许多输入是int/float值,带有相关单位(例如升,夸脱,品脱,秒,分钟......).

我一直在搜索和阅读,但仍然无法弄清楚:在YAML中将单位与配置项关联的最佳方法是什么?

示例:假设我有几种饮料的清单,(除其他外),我想输入它们的音量.我可以想到几个方面,但(至少在我看来)它们都不是真正理想的:

  1. 要求以相同单位输入所有音量值.

    强制用户自己进行单位转换,这是单调乏味,容易出错并且以后难以验证,因为现在数量输入不同于为饮料列出的原始数量.(饮料来自几个不同的来源,每个来源可能使用不同的度量单位.)

  2. 一系列体积和单位表示值.例:

    volume: [ 0.5, Gallons ]
    
    Run Code Online (Sandbox Code Playgroud)

    (映射也会起作用,虽然更详细)序列可能没问题,但我不确定我是否对此感到满意.

  3. 使用两个"音量"值,一个用于值,另一个用于单位.例:

    volume_value: 0.5
    volume_units: Gallons
    
    Run Code Online (Sandbox Code Playgroud)

    我认为这不是首发.详细,非常松散的关联,容易出错.

  4. 改为使用字符串,并在应用程序中解析它.例:

    volume: 0.5 Gallons
    
    Run Code Online (Sandbox Code Playgroud)

    最简单的输入,并且很容易编写一个健壮的解析器.看起来可能有点像黑客,但......

  5. 应用标签:

    volume: !gallons 0.5
    
    Run Code Online (Sandbox Code Playgroud)

    不确定这个,因为我是YAML的新手并且还没有很好地理解标签.或许,语法更脆弱一些.


所以,问题是:根据YAML规范,或事实上的最佳实践/惯例,是否有一种表示价值+单位的特定方式?无论是我列出的五个之一还是别的,我都希望有一个"正确的答案",留在网站问题指南中.

yaml config

11
推荐指数
1
解决办法
843
查看次数

将YAML文件转换为Python JSON对象

如何加载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)

python json yaml python-3.x

11
推荐指数
4
解决办法
1万
查看次数

从 OpenSSL 命令行生成 EC 密钥对

我希望能够在命令行中使用 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”。

有人能帮我吗?

谢谢,最好的问候

openssl cryptography

10
推荐指数
1
解决办法
1万
查看次数

如何在pyqt中限制QLineEdit中的用户输入

我有一个QLineEdit,我想限制QLineEdit只接受整数.它应该像inputmask一样工作.但我不想使用inputmask,因为如果用户点击QLineEdit光标将位于鼠标被点击的位置.并且用户需要导航到0位置并键入他想要的前夕.

有没有替代品.

python pyqt4 qlineedit

10
推荐指数
2
解决办法
2万
查看次数

当安装了多个版本的python时,tox使用了错误版本的pip

我有一个支持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.
如果您想查看日志,请告诉我,我可以使用日志更新问题.

python pip version setup.py tox

10
推荐指数
1
解决办法
1792
查看次数

任务':app:dexDebug'Android Studio的执行失败

应用程序能够在更新我的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)

java android android-studio build.gradle

10
推荐指数
1
解决办法
1万
查看次数

布拉德利自适应阈值算法

我目前正致力于实现一个名为的阈值算法Bradley Adaptive Thresholding.

我一直在主要关注两个链接,以便弄清楚如何实现这个算法.我也成功地实现了另外两种阈值算法,主要是Otsu的方法平衡直方图阈值处理.

以下是我为了创建Bradley Adaptive Thresholding算法而遵循的两个链接.

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.420.7883&rep=rep1&type=pdf

Bradley自适应阈值Github示例

以下是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)

python python-imaging-library adaptive-threshold

10
推荐指数
1
解决办法
4110
查看次数

ImportError:没有名为“ yaml”的模块

我正在尝试执行一个脚本

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?

python pip pyyaml python-3.x

10
推荐指数
6
解决办法
3万
查看次数

YAML Nuget 还原

尝试使用新的 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-devops azure-pipelines-build-task

10
推荐指数
1
解决办法
5069
查看次数

Azure管道:加载YAML构建管道时发生错误:段数错误

我将azure-pipelines.yml从一个项目复制到另一个项目,但它不会构建.我确保一切都是一样的,并且两侧都安装了相同的扩展......

旧的构建仍然有效,但新的构建不会:

加载YAML构建管道时发生错误. 错误的段数

这是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)

continuous-integration azure azure-devops

10
推荐指数
1
解决办法
2614
查看次数