小编zal*_*314的帖子

在C#中构建文件路径的最佳实践

我正在开发一个C#项目,我必须在其中构建各种文件和文件夹的路径.这些都在我在Web.config文件中指定的一个根文件夹下.

例如:

  1. "从我的Web.config开始:"D:\ builds \"
  2. 传递给GetRelativePath()获取"D:\ builds\5.2\5.2.9751"
  3. 然后传递给GetAutoSuitePath()以获取"D:\ builds\5.2\5.2.9751\AutoSuite \"
  4. 然后传递给ParseBrLog,它将显示为"D:\ builds\5.2\5.2.9751\AutoSuite\AASanity.csv"

我的路径是正确的,但我只想知道不完整路径的最佳实践.我应该在每个文件夹的末尾添加一个"\"("D:\ Builds\5.2 \"+"test.txt"),或者在我添加到路径的每个文件夹/文件的开头添加一个("D" :\构建"+"\ 5.2"+"\ test.txt")?目前,我是两种方式,并且想要选择一种统一的方式.

c# file concatenation path

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

如何使用Pony ORM存储Python Enum?

说我在这里有这个简单的小POM ORM映射.从Python 3.4开始,内置的Enum类是新的,并且向后移植到2.7.

from enum import Enum

from pony.orm import Database, Required


class State(Enum):
    ready = 0
    running = 1
    errored = 2

if __name__ == '__main__':
    db = Database('sqlite', ':memory:', create_db=True)

    class StateTable(db.Entity):
        state = Required(State)

    db.generate_mapping(create_tables=True)
Run Code Online (Sandbox Code Playgroud)

当我运行该程序时,会抛出一个错误.

TypeError: No database converter found for type <enum 'State'>
Run Code Online (Sandbox Code Playgroud)

这是因为Pony不支持映射枚举类型.当然,这里的解决方法是只存储Enum值,并在Class StateTable中提供一个getter,以便再次将值转换为Enum.但这很乏味且容易出错.我也可以使用另一个ORM.如果这个问题变得太令人头疼,也许我会的.但如果可以的话,我宁愿坚持使用Pony.

我宁愿创建一个数据库转换器来存储枚举,就像错误消息暗示一样.有谁知道如何做到这一点?

更新:感谢Ethan的帮助,我提出了以下解决方案.

from enum import Enum

from pony.orm import Database, Required, db_session
from pony.orm.dbapiprovider import StrConverter


class State(Enum):
    ready = 0
    running = 1
    errored = 2

class EnumConverter(StrConverter):

    def …
Run Code Online (Sandbox Code Playgroud)

python orm enums python-3.x ponyorm

14
推荐指数
1
解决办法
1302
查看次数

如何导入boto3 ssm ParameterNotFound异常?

我想importexception是,当发生boto3 ssm不与发现的参数get_parameter.我正在尝试为库添加一些额外的ssm功能moto,但我在这一点上很难过.

>>> import boto3
>>> ssm = boto3.client('ssm')
>>> try:
        ssm.get_parameter(Name='not_found')
    except Exception as e:
        print(type(e))
<class 'botocore.errorfactory.ParameterNotFound'>
>>> from botocore.errorfactory import ParameterNotFound
ImportError: cannot import name 'ParameterNotFound'
>>> import botocore.errorfactory.ParameterNotFound
ModuleNotFoundError: No module named 'botocore.errorfactory.ParameterNotFound'; 'botocore.errorfactory' is not a package
Run Code Online (Sandbox Code Playgroud)

但是,Exception无法导入,并且似乎不存在于botocore代码中.如何导入此例外?

python amazon-web-services botocore boto3 moto

14
推荐指数
2
解决办法
3482
查看次数

Java:在这里加入其他更快的东西?还是更好的练习?

在诸如下面的java片段中的那个情况下,使用else块来包围返回false与使用else块之后的更快或更好的做法是更快还是更好?

public boolean test(boolean var){
    if (var == true){
        return true;
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

相比

public boolean test(boolean var){
    if (var == true){
        return true;
    }else{
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

显然这是一个非常简单的例子,可以缩短为一行,但我的问题是是否有一个jvm优化使得在第二个片段中使用else块更有效,或者是否更好的练习,因为两个片段在逻辑上都是当量.到目前为止,我一直在使用第一个代码段,因为代码少了一点.

java optimization

4
推荐指数
2
解决办法
179
查看次数

我正在与Tornado开始进行Web开发.需要一些初学者的帮助

很抱歉这个问题很长,但我很困惑,并且不知道我需要什么.因此,请在发布任何内容之前仔细阅读整个问题,以便您可以获得更好的主意.

所以,我是一名工作期间的软件工程合作学生,我的老板希望我使用Tornado开发一个Web应用程序.我在高中时已经完成了一些html和css,但这确实是出于我的要素.

龙卷风几乎没有关于如何开始的任何教程.当然,这是一个hello world示例,但后来他们抛出了一些聊天应用程序,在我的情况下,也可以用二进制编写.

我知道如何使用龙卷风渲染页面并将数据作为参数发送.然后我可以使用该数据在网页本身内做一些逻辑(即数据库请求,循环,......)我现在知道足够的Javascript来调用函数来写文本或发出警报.

现在问题出现在我想去另一个html页面的地方.当然,我可以使用Javascript或html转到外部网站(即Google),但如果我尝试转到同一目录中的相关文档,我只会得到404.我的主管要我调查使用POST和GET请求调用我的Tornado Server RequestHandler(所以我可以再次调用render),但我无法弄清楚如何发出/接收该请求.

最后,有三个主要问题:

  • 我应该知道哪些其他语言才能正确使用龙卷风?
    • 我知道html,xslt,css,一些JS,SQL,json
    • 我不想成为网络大师; 我只想要基础知识
  • 如何在龙卷风处理程序上发出GET/POST请求?
  • 如何重定向到相对html页面?

这是我正在使用的处理程序:

class MainHandler(RequestHandler):

    def get(self):
        print 'get...',
        self.render('test.html', data = Data())
        print 'done'


    def post(self):
        print 'post...',
        pass
        print 'done'
Run Code Online (Sandbox Code Playgroud)

编辑:我现在已经学习了更多关于RequestHandlers的知识,但我不知道这样做的正确方法是什么.我有两个页面的RequestHandler处理请求,但我希望能够为每个页面使用一个处理程序,我不知道我是否以最佳方式解释参数.我也不知道如何将参数转到*args参数.

def get(self, *args, ** kwargs):
    print 'get:', args, kwargs, 'Handling:',

    if len(self.get_arguments('user')) > 0:
        print 'user'
        self.render('page2.html', user = self.get_arguments('user')[0])
    elif len(self.get_arguments('page')):
        print 'specific page:', self.get_argument('page')
        self.render(self.get_argument('page'), data = Data())
    else:
        print 'default'
        self.render('test.html', data = Data())
Run Code Online (Sandbox Code Playgroud)

web-applications tornado

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

Python - 正则表达式搜索以给定文本开头和结尾的字符串

我有一个文件列表,我想只保留以'test_'开头并以'.py'结尾的文件.我希望正则表达式只返回'test_'和'.py'中的文本.我不想要包含.pyc文件.

我试过了:

>>>filename = 'test_foo.py'
>>>re.search(r'(?<=test_).+(?=\.py)', filename).group()
foo.py
Run Code Online (Sandbox Code Playgroud)

但它仍然返回扩展名,并允许'.pyc'扩展名(我不想要).我很确定它是消耗整个字符串的'+'.

这可以作为后备,但我更喜欢正则表达式解决方案:

>>>filename = 'test_foo.py'
>>>result = filename.startswith('test_') and filename.endswith('.py')
>>>result = result.replace('test_', '').replace('.py', '')
>>>print result
foo
Run Code Online (Sandbox Code Playgroud)

python regex

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

为什么我的AWS CodeBuild命令没有运行?

我正在尝试将AWS CodeBuild用于我的项目.我的构建正在运行aws/codebuild/docker:1.12.1图像.这是我的buildspec.yml,它来自AWS Docker Sample

version: 0.1

phases:
  pre_build:
    commands:
      - echo Logging in to Amazon ECR...
      - $(aws ecr get-login --region $AWS_DEFAULT_REGION)
  build:
    commands:
      - echo Build started on `date`
      - echo Building the Docker image...          
      - docker build -t $IMAGE_REPO_NAME .
  post-build:
    commands:
      - echo Build completed on `date`
      - docker tag $IMAGE_REPO_NAME:$IMAGE_TAG $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG
      - docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG
Run Code Online (Sandbox Code Playgroud)

所有环境变量都在构建配置中定义.但这是我的CodeBuild日志输出:

[Container] 2017/02/16 22:04:24 Waiting for agent
[Container] 2017/02/16 22:04:33 Phase is DOWNLOAD_SOURCE
[Container] 2017/02/16 22:04:34 …
Run Code Online (Sandbox Code Playgroud)

docker aws-codebuild

3
推荐指数
1
解决办法
1993
查看次数

如何在带有 Apache HttpClient 的 Java 6 中使用 TLS 1.2?

我正在使用 Apache HttpClient 3.5 和 Spring Web Services 2.1.0 处理 Java 6 项目。

我的 Spring WebServicesTemplate 正在使用 apache HttpClient 发送 WebServices 请求。但是,我正在联系的服务已逐步淘汰 TLS 1.0,转而支持 TLS 1.2。Java 6 不支持 TLS 1.2。我被引导到 bouncycastle,它应该给我 TLS 1.2 支持。

如何将 bouncycastle 与 Spring 或我的 HttpClient 集成,以便我可以发送支持 TLS 1.2 的请求?我找到了一个提供扩展 SSLSocketFactory 的解决方案。但是,HttpClient 只接受 SSLConnectionSocketFactory。

升级到 Java 8 在短期内是不可行的,但如果有人可以确认它会解决我的问题,我可以将其作为长期优先事项。

ssl spring httpclient java-6 tls1.2

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