我正在开发一个C#项目,我必须在其中构建各种文件和文件夹的路径.这些都在我在Web.config文件中指定的一个根文件夹下.
例如:
我的路径是正确的,但我只想知道不完整路径的最佳实践.我应该在每个文件夹的末尾添加一个"\"("D:\ Builds\5.2 \"+"test.txt"),或者在我添加到路径的每个文件夹/文件的开头添加一个("D" :\构建"+"\ 5.2"+"\ test.txt")?目前,我是两种方式,并且想要选择一种统一的方式.
说我在这里有这个简单的小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) 我想import的exception是,当发生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代码中.如何导入此例外?
在诸如下面的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块更有效,或者是否更好的练习,因为两个片段在逻辑上都是当量.到目前为止,我一直在使用第一个代码段,因为代码少了一点.
很抱歉这个问题很长,但我很困惑,并且不知道我需要什么.因此,请在发布任何内容之前仔细阅读整个问题,以便您可以获得更好的主意.
所以,我是一名工作期间的软件工程合作学生,我的老板希望我使用Tornado开发一个Web应用程序.我在高中时已经完成了一些html和css,但这确实是出于我的要素.
龙卷风几乎没有关于如何开始的任何教程.当然,这是一个hello world示例,但后来他们抛出了一些聊天应用程序,在我的情况下,也可以用二进制编写.
我知道如何使用龙卷风渲染页面并将数据作为参数发送.然后我可以使用该数据在网页本身内做一些逻辑(即数据库请求,循环,......)我现在知道足够的Javascript来调用函数来写文本或发出警报.
现在问题出现在我想去另一个html页面的地方.当然,我可以使用Javascript或html转到外部网站(即Google),但如果我尝试转到同一目录中的相关文档,我只会得到404.我的主管要我调查使用POST和GET请求调用我的Tornado Server RequestHandler(所以我可以再次调用render),但我无法弄清楚如何发出/接收该请求.
最后,有三个主要问题:
这是我正在使用的处理程序:
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) 我有一个文件列表,我想只保留以'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) 我正在尝试将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) 我正在使用 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 在短期内是不可行的,但如果有人可以确认它会解决我的问题,我可以将其作为长期优先事项。