我需要以某种方式objectId
从@Args
警卫内部访问,以便检查发件人是否已objectId
分配给他的帐户。知道我如何实现它吗?
@Query(() => [Person])
@UseGuards(ObjectMatch)
async pplWithObject(@Args('objectId') id: string): Promise<Person[]> {
return await this.objService.getPeopleWithObject(id);
}
Run Code Online (Sandbox Code Playgroud)
是否可以从上下文访问传递的参数?
const ctx = GqlExecutionContext.create(context);
const request = ctx.getContext().req;
Run Code Online (Sandbox Code Playgroud) 我们可以给参数args[]
的main()
方法或选择不.但是如果我们在没有传递足够参数的情况下调用任何其他参数化方法,它将给我们一个错误.
为什么不是这种main(String[] args)
方法的情况?
有没有办法限制ack匹配的行的长度?例如,如果 ack 匹配缩小的 JavaScript 文件,则它打印出的行可能会非常大。我仍然希望它显示突出显示的比赛,但理想情况下在比赛之前和之后用省略号进行切线:"... stuff match stuff ..."
。在ack 文档中没有看到任何结论性的内容。
我尝试用类似的东西来挖掘它
ack pattern | awk '{print substr($0,1,200) }'
Run Code Online (Sandbox Code Playgroud)
但awk
似乎正在剥离颜色和格式,这是不希望的。我也尝试过(请耐心等待):
ack pattern | ack pattern
Run Code Online (Sandbox Code Playgroud)
看看我是否可以重新确认每一行并将其切碎或其他东西,但这有相同的格式问题。管道 ack 输出显然删除了换行符?
根据评论编辑:
也许这将有助于解释我想要这个的主要原因。我使用 ack.vim 在我的项目中进行搜索。我经常想通过我的 javascript 文件来查找一个单词,比如“cookie”。我们在代码中对 jQuery 和其他缩小的库进行了版本控制,因此它们会显示在 ack 结果中。由于这些文件被缩小了,所以换行符很少,并且它在分割窗口中显示了一条巨大的线,我必须滚动过去。我几乎从不关心那场比赛,所以占用这么多空间很烦人。我可以将这些缩小的文件名添加到我的 ackrc 中以忽略,但我不希望每次添加缩小的库时都添加新的文件名。ack.vim 存储库上有一个关于此的未决问题。我想知道是否可以纯粹通过 bash-fu 来完成。
我有一个日志记录接口,我使用一些有用的扩展方法对其进行了扩展,以便我可以传递格式和参数列表,以避免每次调用该方法时都必须使用字符串格式。(它还帮助我遵循 FXCops 文化信息规则)
所以我可以打电话:
logger.Debug("Created {0} with id {1}",typeof(MyObject).Name ,myObject.Id);
Run Code Online (Sandbox Code Playgroud)
代替:
logger.Debug(string.Format("Created {0} with id {1}", typeof(MyObject).Name, myObject.Id));
Run Code Online (Sandbox Code Playgroud)
我现在发现自己处于一个有点棘手的情况,因为在日志中获取一些关于日志记录位置的信息(例如文件、方法和行号)会非常有帮助。这可能与整齐的实现[CallerMemberName]
,[CallerFilePath]
和[CallerLineNumber]
属性。
logger.Debug("Created {0} with id {1}", typeof(MyObject).Name, myObject.Id);
Run Code Online (Sandbox Code Playgroud)
然后会给我一个日志条目,例如:
“MyObjectProvider.cs,提供,第 50 行 | 创建的 MyObject,ID 为 1564”
这里的问题是方法签名看起来像这样:
public static void Debug(this ILogger logger, string format [CallerMemberName] string callerMemberName = "", [CallerFilePath] string callerFilePath = "", [CallerLineNumber] int callerLineNumber = 0, params object[] args)
Run Code Online (Sandbox Code Playgroud)
这是不可能的,因为[Caller*]
属性使参数成为可选的,并且不适用于 args 参数。
我还尝试使用固定数量的字符串作为参数进行多个实现,如下所示:
public static void Debug(this ILogger logger, …
Run Code Online (Sandbox Code Playgroud) 我在想我的run.py
脚本是否可以以两种不同的模式运行。当处于nohup模式时:nohup python run.py &
,就像完整日志输出模式一样。但是在正常模式下python run.py
,就像日志抑制模式一样。因此对于用户来说它将是整洁和清晰的。
所以我的问题:我的可运行 python 脚本如何知道自己在 nohup 模式或正常模式下运行?
我有通过命令行执行它时运行良好的 Python 脚本。我想要做的是将此脚本导入另一个 python 文件并从那里运行它。
问题是初始脚本需要参数。它们的定义如下:
#file one.py
def main(*args):
import argparse
parser = argparse.ArgumentParser(description='MyApp')
parser.add_argument('-o','--output',dest='output', help='Output file image', default='output.png')
parser.add_argument('files', metavar='IMAGE', nargs='+', help='Input image file(s)')
a = parser.parse_args()
Run Code Online (Sandbox Code Playgroud)
我将此脚本导入另一个文件并传递了参数:
#file two.py
import one
one.main('-o file.png', 'image1.png', 'image2.png')
Run Code Online (Sandbox Code Playgroud)
但是虽然我将输入图像定义为参数,但仍然出现以下错误:
usage: two.py [-h] [-o OUTPUT]
IMAGE [IMAGE ...]
two.py: error: the following arguments are required: IMAGE
Run Code Online (Sandbox Code Playgroud) 这可能特定于https://github.com/atmoz/sftp/blob/master/entrypoint#L36完成的参数解析
但我正在尝试创建一个带空格的目录:
我尝试过的一些例子:
docker run -d atmoz/sftp:alpine-3.7 user:password:::Inbound - Test Dir
...
[entrypoint] Parsing user data: "user:password:::Inbound"
Creating mailbox file: No such file or directory
[entrypoint] Creating directory: /home/user/Inbound
[entrypoint] Parsing user data: "-"
[entrypoint] ERROR: Invalid username "-", do not match required regex pattern: [A-Za-z0-9._][A-Za-z0-9._-]{0,31}
Run Code Online (Sandbox Code Playgroud)
docker run -d atmoz/sftp:alpine-3.7 user:password:::"Inbound - Test Dir"
...
[entrypoint] Creating directory: /home/user/Inbound
[entrypoint] Creating directory: /home/user/-
[entrypoint] Creating directory: /home/user/Test
[entrypoint] Creating directory: /home/user/Dir
Run Code Online (Sandbox Code Playgroud)
docker run -d atmoz/sftp:alpine-3.7 "user:password:::Inbound - Test Dir" …
Run Code Online (Sandbox Code Playgroud) 我正在运行一个 celery 任务,它需要两个参数,如下所示:
@task_bp.route('/analysis/<user_id>', methods=['GET', 'POST'])
def save_user_with_analysis(user_id):
post_data = request.get_json()
response_object = {
'status': 'fail',
'message': 'User does not exist'
}
spotify_token = ''
if post_data:
spotify_token = post_data.get('spotify_token')
try:
user = User.query.filter_by(id=user_id).first()
if not user:
return jsonify(response_object), 404
else:
# pass 2 args, ID and token
task = save_user_tracks_with_analysis.apply_async(args=[user_id, spotify_token],kwargs={})
response_object = {
'status': 'success',
'message': 'Background task for saving user analysis to database initialized.',
'data': {
'task_id': task.id,
}
}
return jsonify(response_object), 202
except (exc.IntegrityError, ValueError):
db.session.rollback() …
Run Code Online (Sandbox Code Playgroud) 我想将我在 .env 文件中定义的一些参数传递给我的容器的构建过程
.env 文件:
OS_USER_UID=999
Run Code Online (Sandbox Code Playgroud)
码头工人组成:
app:
build: .
args:
- OS_USER_UID=$OS_USER_UID
Run Code Online (Sandbox Code Playgroud)
但这总是导致:
services.app 不支持的配置选项:'args'
为什么?我不能只使用我在 .env 中定义的变量作为构建变量吗?
我找不到任何有效的语法。即使 stackoverflow 上建议的解决方案也不起作用。运行它们会在预期值处显示空白输出。
ENV 变量不会保留在构建的映像中(即,从正在运行的容器中的命令行运行“set”显示该变量未设置)。
ARG 和 ENV 值似乎都无法在发送到 powershell 的 RUN 命令中访问。
“testdockerfile”的内容:
ARG TEST_ARG=value_to_insert_in_debug_txt_file
FROM mcr.microsoft.com/dotnet/framework/aspnet:4.7.2-windowsservercore-ltsc2016
ENV MyEnvVar ${TEST_ARG}
ENV MyEnvVar2 $TEST_ARG
ENV MyEnvVar3 TEST_ARG
SHELL ["powershell","-Command"]
RUN "\"baseline\" | Out-File c:\debug.txt"
RUN "\"%TEST_ARG%\" | Out-File c:\debug1.txt"
RUN "\"$TEST_ARG\" | Out-File c:\debug2.txt"
RUN "\"${TEST_ARG}\" | Out-File c:\debug3.txt"
RUN "\"${Env:TEST_ARG}\" | Out-File c:\debug4.txt"
RUN "\"%MyEnvVar%\" | Out-File c:\debug5.txt"
RUN "\"$MyEnvVar\" | Out-File c:\debug6.txt"
RUN "\"${MyEnvVar}\" | Out-File c:\debug7.txt"
RUN "\"${Env:MyEnvVar}\" | Out-File c:\debug8.txt"
RUN "\"$Env:MyEnvVar\" | Out-File c:\debug9.txt"
RUN …
Run Code Online (Sandbox Code Playgroud)