在JavaScript中我可以做类似的事情:
var template = "{a}{b}-{c}{d}";
var myStuff = template
.replace("{a}", a)
.replace("{b}", b)
.replace("{c}", c)
.replace("{d}", d);
Run Code Online (Sandbox Code Playgroud)
我想在python中做类似的事情,但由于python使用缩进代码块,我不能简单地写:
myStuff = template
.replace("{a}", a)
.replace("{b}", b)
.replace("{c}", c)
.replace("{d}", d)
Run Code Online (Sandbox Code Playgroud)
我不想写这个:
myStuff = template.replace("{a}", a).replace("{b}", b).replace("{c}", c).replace("{d}", d)
Run Code Online (Sandbox Code Playgroud)
或这个:
myStuff = template
myStuff = myStuff.replace("{a}", a)
myStuff = myStuff.replace("{b}", b)
myStuff = myStuff.replace("{c}", c)
myStuff = myStuff.replace("{d}", d)
Run Code Online (Sandbox Code Playgroud)
它们看起来都很丑陋(我不喜欢我的代码丑陋!).
有没有办法在python中将方法调用链分解为新行,就像我在JavaScript中一样?
在春天,我有一个带有端点的控制器,如下所示:
@RequestMapping(method = RequestMethod.POST)
@ResponseStatus(HttpStatus.CREATED)
@ResponseBody
public OutputStuff createStuff(@RequestBody Stuff stuff) {
//my logic here
}
Run Code Online (Sandbox Code Playgroud)
这样,如果在此端点上执行 POST,请求正文中的 JSON 将自动反序列化为我的模型 ( Stuff)。问题是,我只是需要在原始 JSON 传入时记录它!我尝试了不同的方法。
HttpServletRequest入createStuff读体内有和日志:代码:
@RequestMapping(method = RequestMethod.POST)
@ResponseStatus(HttpStatus.CREATED)
@ResponseBody
public OutputStuff createStuff(@RequestBody Stuff stuff, HttpServletRequest req) {
StringBuilder sb = new StringBuilder();
req.getReader().getLines().forEach(line -> {
sb.append(line);
});
//log sb.toString();
//my logic here
}
Run Code Online (Sandbox Code Playgroud)
问题在于,当我执行此操作时,读取器的 InputStream 已被执行以将 JSON 反序列化为Stuff. 所以我会得到一个错误,因为我不能两次读取相同的输入流。
HandlerInterceptorAdapter将在调用实际处理程序之前记录原始 JSON 的自定义。 代码(部分):
public class RawRequestLoggerInterceptor extends HandlerInterceptorAdapter { …Run Code Online (Sandbox Code Playgroud) 我有一个 spring-boot (1.2.6) webapp。我使用 DynamoDb 作为应用程序的事件存储。在我的集成测试中,我想使用这种方法从我的集成测试代码中启动 DynamoDb-Local。
但是,在包含依赖项之后:
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>DynamoDBLocal</artifactId>
<version>1.10.5.1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
运行集成测试时会出现以下错误:
java.lang.IllegalStateException: Failed to load ApplicationContext
(....)
Caused by: org.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jettyEmbeddedServletContainerFactory' defined in class path resource [org/springframework/boot/autoconfigure/web/EmbeddedServletContainerAutoConfiguration$EmbeddedJetty.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.context.embedded.jetty.JettyEmbeddedServletContainerFactory]: Factory method 'jettyEmbeddedServletContainerFactory' threw exception; nested exception is java.lang.NoClassDefFoundError: org/eclipse/jetty/webapp/WebAppContext
(....)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jettyEmbeddedServletContainerFactory' …Run Code Online (Sandbox Code Playgroud) 我使用bootstrap来显示一个简单的模态窗口,由于某种原因虽然模态没有阻止它下面的任何内容,所以我仍然可以点击,写入并做我想做的任何事情,即使模态显示.任何人都知道如何更改它,以便它实际上阻止所有其他内容?
这就是这个例子的所有代码(没有js文件或没有):
<html>
<head>
<link href="lib/bootstrap-2.3.2/css/bootstrap.css" rel="stylesheet" />
<script src="lib/jquery-2.0.3/jquery.js"></script>
<script src="lib/bootstrap-2.3.2/js/bootstrap.js"></script>
</head>
<body>
<div class="content" >
<div class="modal" >
<div class="modal-header">
<h3>Example title</h3>
</div>
<div class="modal-body">example text</div>
<div class="modal-footer">
<button class="btn">No</button>
<button class="btn">Yes</button>
</div>
</div>
<!-- my form with fields etc is here -->
<label>Example field</label><input type="text"></input>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
结果如下:

我有bootstrap css和js文件,给出下面的例子我仍然可以看到文本框甚至是模态显示...
我非常喜欢在这篇博客文章中描述的从Java调用AWS lambdas的方法.
但是,如果我有3个环境(int/test/live),并且每个环境都有一个略有不同的名称(通过cloudformation创建),我想不出有一种方法可以拥有一个接口,并调用lambda根据环境不同的名称.
我正在使用Spring,所以如果我可以做类似的事情:
@Component
interface MyLambdas {
@Value("${name}")
String name;
@LambdaFunction(name = name)
String callMyLambda(String stuff);
}
//and then
service = LambdaInvokerFactory.build(MyLambdas.class, lambda);
Run Code Online (Sandbox Code Playgroud)
但显然我不能在接口上做这个,这不会是一个bean!有没有办法做到这一点?我觉得我碰到了一堵砖墙......
现在我称lambda为"旧方式":
String readLambdaName = "My_Lambda";
ObjectMapper objectMapper = new ObjectMapper();
AWSLambdaClient lambda = new AWSLambdaClient();
lambda.configureRegion(Regions.EU_WEST_1);
String json = objectMapper.writeValueAsString(request);
InvokeRequest req = new InvokeRequest()
.withFunctionName(readLambdaName)
.withPayload(json);
InvokeResult res = lambda.invoke(req);
int result = objectMapper.readTree(res.getPayload().array()).asInt();
Run Code Online (Sandbox Code Playgroud)
显然,这里和那里有一些异常处理.这不是一个很好的解决方案......
对于此后的任何人,我已经在aws-sdk github上提交了一个问题和一个解决方案.希望类似于我的解决方案的东西将进入SDK的下一个版本...
我想读取环境变量指定的文件的内容并将其作为构建参数传递给 docker-compose。
那么在我的Dockerfile中我可以这样做:
ARG MY_FILE
RUN echo "$MY_FILE" > /my-file
Run Code Online (Sandbox Code Playgroud)
这很完美:
docker-compose -f ./docker-compose.yml build --build-arg MY_FILE="$(cat $PATH_TO_MY_FILE)"
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试在docker-compose.yml中执行此操作,如下所示:
build:
context: .
args:
- MY_FILE="$(cat $PATH_TO_MY_FILE)"
Run Code Online (Sandbox Code Playgroud)
它因以下错误而失败:
ERROR: Invalid interpolation format for "build" option in service "my-service": "MY_FILE="$(cat $PATH_TO_MY_FILE)""
Run Code Online (Sandbox Code Playgroud)
知道如何构造这个字符串才能达到相同的效果吗?我尝试了 $$ 等,但似乎不起作用......
感谢您的帮助 :)
对于像这样编组的函数:
/*************************************************
* DWORD WINAPI WlanHostedNetworkSetProperty(
* _In_ HANDLE hClientHandle,
* _In_ _WLAN_HOSTED_NETWORK_OPCODE OpCode,
* _In_ DWORD dwDataSize,
* _In_ PVOID pvData,
* _Out_opt_ P_WLAN_HOSTED_NETWORK_REASON pFailReason,
* _Reserved_ PVOID pvReserved
* );
*************************************************/
[DllImport("Wlanapi.dll", SetLastError = true)]
public static extern UInt32 WlanHostedNetworkSetProperty(
[In] IntPtr hClientHandle,
[In] _WLAN_HOSTED_NETWORK_OPCODE OpCode,
[In] UInt32 dwDataSize,
[In] IntPtr pvData,
[Out] out _WLAN_HOSTED_NETWORK_REASON pFailReason,
[In, Out] IntPtr pvReserved
);
Run Code Online (Sandbox Code Playgroud)
微软文档说我通过时
_WLAN_HOSTED_NETWORK_OPCODE._WLAN_HOSTED_NETWORK_OPCODE_enable
Run Code Online (Sandbox Code Playgroud)
作为OpCode的参数,pvData的值应该是指向布尔值的指针.
这里是该函数的文档
我不知道如何让IntPtr指向一个布尔值?
它应该以类似于将指针传递给结构的方式完成,如pvData:
int size = Marshal.SizeOf(settings); //*settings* …Run Code Online (Sandbox Code Playgroud) 我想在 node.js 中编写一个小型工作应用程序。
该应用程序将从 AWS-SQS 读取数据,以某种方式处理数据,然后将其输出到另一个 AWS-SQS。
到目前为止,我已经写了:
while(true){
readFromQueue()
.then(transform)
.then(writeToQueue);
}
function transform(data) {
console.log("> transforming...");
//transformation logic
return data;
}
//TODO: need to remove message from queue after read!
function readFromQueue() {
// var params = {
// QueueUrl: 'STRING_VALUE',
// WaitTimeSeconds: 2
// };
// return new Promise(function(resolve, reject) {
// sqs.receiveMessage(params, function(err, data) {
// if (err) reject(err);
// else resolve(data);
// });
// });
return new Promise(function(resolve, reject) {
console.log("> reading from queue...");
resolve({ …Run Code Online (Sandbox Code Playgroud) 我在 dir 下进行了集成测试src/test/integration。所有文件的命名方式如下:foo.integration.js.
运行笑话:
jest ".*\\.integration\\.js"
Run Code Online (Sandbox Code Playgroud)
产生这个错误:
No tests found, exiting with code 1
Run with `--passWithNoTests` to exit with code 0
In /Users/dangruszczyk/workspace/cef/lambda-workflow
7 files checked.
testMatch: **/__tests__/**/*.[jt]s?(x), **/?(*.)+(spec|test).[tj]s?(x) - 1 match
testPathIgnorePatterns: /node_modules/ - 7 matches
testRegex: - 0 matches
Pattern: .*\.integration\.js - 0 matches
Run Code Online (Sandbox Code Playgroud)
当然这个正则表达式应该匹配src/test/integration/foo.integration.js(https://regex101.com/r/T3WJwd/1/)。有什么线索吗?
好吧,让我说我有一个像这样的结构A:
Struct A{
private String _SomeText;
private int _SomeValue;
public A(String someText, int SomeValue) { /*.. set the initial values..*/ }
public String SomeText{ get { return _SomeText; } }
public int SomeValue{ get { return _SomeValue; } }
}
Run Code Online (Sandbox Code Playgroud)
现在我想要做的是返回结构A作为类ABC中的方法的结果,如下所示:
Class ABC{
public A getStructA(){
//creation of Struct A
return a;
}
}
Run Code Online (Sandbox Code Playgroud)
我不希望任何程序员使用我的库(它将具有Struct A和Class ABC以及更多东西)来创建Struct A的实例.
我希望创建它的唯一方法是作为返回来自getStructA()方法.然后可以通过适当的getter访问这些值.
那么有什么方法可以设置这样的限制吗?那么一个结构不能在某个类之外实例化?使用C#,.Net4.0.
谢谢你的帮助.
---编辑:----
添加一些细节我为什么要实现这个目标:
所以我可以创建一个公共结构,程序员可以根据需要实例化它,这对他们来说没用,因为没有方法可以接受它作为参数.或者我可以以这样的方式构造库:只有当从方法返回时,才能获得此结构(或者如果它使事情变得更容易将其更改为类).
c# ×2
java ×2
annotations ×1
aws-lambda ×1
bash ×1
c#-4.0 ×1
docker ×1
javascript ×1
jestjs ×1
junit ×1
logging ×1
marshalling ×1
node.js ×1
pinvoke ×1
promise ×1
python ×1
spring ×1
spring-boot ×1
spring-mvc ×1
struct ×1
unit-testing ×1