小编Pro*_*man的帖子

模拟 org.springframework.web.reactive.function.client.WebClient.ResponseSpec#onStatus 输入参数

考虑以下代码:

    public Mono<Void> doStuff() {

        return this.requestStuff()
            .onStatus(HttpStatus::is5xxServerError,
                    clientResponse -> {
                    aMethodIWouldLikeToTest(clientResponse);
                    return Mono.error(new MyCustomException("First error I would like to test"));
                    })
            .onStatus(HttpStatus::is4xxClientError,
                    clientResponse -> {
                    aMethodIWouldLikeToTest(clientResponse);
                    return Mono.error(new MyCustomException("Second error I would like to test"));
                    })
            .bodyToMono(String.class)
            .flatMap(x -> anotherMethodIManagedToTest(x)))

    }
Run Code Online (Sandbox Code Playgroud)

我的第一个目标是测试anotherMethodIManagedToTest(x),这是使用以下方法实现的:

    import org.springframework.web.reactive.function.client.WebClient;

    ...

    @Mock
    private WebClient.ResponseSpec responseSpec;

    private String desiredInputParam = "There is another black spot on the sun today!";

    ...

    @Test
    public void allGood_anotherMethodIManagedToTest_success {

        ...

        ClassUnderTest classUnderTest = new classUnderTest()
        ClassUnderTest classUnderTestSpy = …
Run Code Online (Sandbox Code Playgroud)

java webclient mockito

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

在 Delphi 中创建 7zip 存档

我使用 Delphi 7 的 7zip 包装器,效果很好

https://github.com/zedalaye/d7zip

它创建存档但覆盖里面已有的文件

var
  Arch: I7zOutArchive;
 begin
  Arch := CreateOutArchive(CLSID_CFormat7z);
  SetCompressionLevel(Arch, 2);
  Arch.AddFile('C:\Test.bin', 'Test.bin');
  Arch.SaveToFile('C:\Test.zip');
 end;
Run Code Online (Sandbox Code Playgroud)

它删除了保存在“Test.zip”中的所有其他文件无论如何我可以将文件保存在“Test.zip”中并在 Delphi 7 中使用此包装器编写新文件

delphi 7zip delphi-7

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

进程死亡时导航图作用域 ViewModel

当我尝试在 Android 应用程序中处理进程死亡时,我注意到范围为导航图的 ViewModel 在从进程死亡中重新创建时崩溃了。下面是 ViewModel 和使用 ViewModel 的 Fragment 的代码。

\n
@ExperimentalCoroutinesApi\n@HiltViewModel\nclass ViewPrintOrderVM @Inject constructor(\nprivate val repository: Repository,\nprivate val application: Application,\nprivate val savedStateHandle: SavedStateHandle\n) : ViewModel() {\n\n     // Code inside the ViewModel\n\n}\n
Run Code Online (Sandbox Code Playgroud)\n

在我的片段中,我得到的参考如下

\n
@ExperimentalComposeUiApi\n@ExperimentalCoroutinesApi\n@AndroidEntryPoint\nclass ComposeFragmentPostPressDetails : Fragment() {\n\n        //Here we are scoping the ViewModel to the Navigation graph with graph-id instead of this fragment\n        private val viewModel: ManagePrintOrderVM by navGraphViewModels(R.id.print_order_flow)\n\n       //Rest of the Fragment code\n\n}\n
Run Code Online (Sandbox Code Playgroud)\n

现在,当我尝试通过在模拟器中启动应用程序,将其放在后台,然后使用 android studio 中的“终止应用程序”按钮终止进程来测试应用程序的进程死亡时,它在使用以下命令重新创建时崩溃错误

\n
2022-03-19 19:06:44.633 7174-7174/com.sivakasi.papco.jobflow E/AndroidRuntime: FATAL EXCEPTION: …
Run Code Online (Sandbox Code Playgroud)

java android viewmodel

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

PHP 重定向到基于用户位置 (IPAPI) 的页面版本并在会话中记住

我试图在 head.inc 文件中包含一些代码,该文件将检查该页面是否以用户的位置语言可用,如果可用,它将重定向到该页面。显然,这对 UX 来说不是很好,但可惜我的客户很热衷。

我需要克服的唯一问题是,如果用户已经被重定向,那么不要对每个页面都这样做……存储用户被重定向的事实,并且在会话结束之前不要再次这样做。类似的东西。

我已经编写了下面的代码,但是 a) 我不确定这是最好的方法,b) 它似乎卡在重定向循环中(我认为我已经通过第二次会话检查避免了)。

我正在使用 ipapi.com 来检查用户的位置。我也在使用 ProcessWire 的“$session”,它实际上与 PHP session 相同。

if (!$session->get("lucentLightingRegion")) {

    $session->set("lucentLightingSessionRedirected", "false");
    if ($page->ipapiGetUserLocation()['continent_code'] === 'NA') {
        $session->set("lucentLightingRegion", "NA");
        if ($page->viewable('na')) {
            $url = $page->localUrl('na');
            $session->redirect($url);
        }
    } else {
        $session->set("lucentLightingRegion", "INT");
        if ($page->viewable('default')) {
            $url = $page->localUrl('default');
            $session->redirect($url);
        }
    }

} else {

    $sessionRegion = $session->get("lucentLightingRegion");

    bd($sessionRegion);

    if ($page->viewable($sessionRegion) && $session->get("lucentLightingSessionRedirected") == "false") {
        $url = $page->localUrl($sessionRegion);
        $session->redirect($url);
        $session->set("lucentLightingSessionRedirected", "true");
    }

}
Run Code Online (Sandbox Code Playgroud)

php processwire

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

如何处理异常并使用 Rx 重复

我正在使用执行IO操作Observable.FromAsync。我想永远重复这个操作。我不明白的是如何处理异常,对它们做一些事情,然后返回我的循环:

我尝试过的:

IObservable<string> ioObs=Observable.FromAsync<string>([something]);  //at each iteration i do an io operation (reading from a socket);
IObservable<string> loop=Observable.Catch(ioObs).Repeat();
loop.Subscribe(
  onNext:x=> Console.Writeline($"Message:{x}"),
  onCompleted: Console.Writeline("Completed"),
  onError: ex=>Console.Writeline($"Error\tReason:{ex.Message}")
);
Run Code Online (Sandbox Code Playgroud)

现在我不明白为什么我的可观察在第一个异常之后结束。我不告诉它继续吗?

我想做的事:

  • 执行IO操作
  • 如果抛出返回一些自定义值
  • 重复循环

如果我的可观察量是可枚举的,我会想要这种行为:

public IAsyncEnumerable<string> EnumerableBehaviour()
{
   while(true)
   {
      try
      {
        string data=await ReadAsync();  //the `FromAsync` delegate
        yield return data;
      }catch(Exception ex)
          yield return "Error";
      {
   }
}
Run Code Online (Sandbox Code Playgroud)

Repeat即使OnError被触发,我如何继续执行?

应该Observable.Catch和如何Observable.Throw结合Observable.Repeat

c# system.reactive observable

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

Express Validator - 只允许字母、数字和一些特殊字符

在前端使用 JavaScript,我创建了正则表达式,它允许字母、数字和一些特殊字符,例如......

    function onlyAlphaSomeChar(value) {
      const re = /^[A-Za-z0-9 .,'!&]+$/;
      return re.test(value);
   }
Run Code Online (Sandbox Code Playgroud)

如果我要在后端使用express-validator构建验证过程,那么这相当于什么?

我在 ExpressJs 环境中创建了这么多,但不确定下一步应该是什么样子......


//...

app.post('/', [
    //VALIDATE
    check('comment')
        .notEmpty()
        .withMessage('Comment required')
        .isLength({min: 3,max:280})       
        .withMessage('Comment must be between 3 and 280 characters')
        .escape()
], (req, res) => {

//...

});


Run Code Online (Sandbox Code Playgroud)

express express-validator

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

由于 JS 包的延迟加载,Qwik 框架的用户交互中是否观察到任何延迟或延迟?

Qwik 框架文档提到,只有一个侦听器,所有其他侦听器都被序列化并附加到 DOM,例如:on:click等。使用 Service Worker 部署了一种精心设计的缓存算法。根据我的理解,对于第一次加载我们的应用程序的用户,如果在缓存中找不到 onClick 捆绑包,则会在触发点击事件后从网络中获取它。如果我们不使用 CDN 或网络速度较慢,网络延迟甚至会超过 400 毫秒,这可能会影响用户体验。对于这种情况有什么解决方案吗?

typescript qwik

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

&gt; 和 &lt; 转换为 &gt; 且&lt; 在 element.setTextContent() 中添加类似 xml 的字符串

我有一个看起来像 XML 的字符串

例如:字符串示例 = "<GrpHdr><MsgId>MQSECJYJHRBPDTZTYNNEYXOZUPAUDEKVDFV</MsgId><CreDtTm>2023-02-02T21:48:58.075+05:30</CreDtTm></GrpHdr>";

我正在尝试使用包含上述信息的元素创建一个 XML 文档:

前任:

<ns1:TstCode>T</ns1:TstCode>
<ns1:FType>SCF</ns1:FType>
<ns1:FileRef>220811084023</ns1:FileRef>
<ns1:RoutingInd>ALL</ns1:RoutingInd>
<ns1:FileBusDt>2022-08-11</ns1:FileBusDt>
<ns1:FIToFI xmlns="urn:iso:std:iso:20022:tech:xsd">
    <GrpHdr>
        <MsgId>MQSECJYJHRBPDTZTYNNEYXOZUPAUDEKVDFV</MsgId>
        <CreDtTm>2023-02-02T21:48:58.075+05:30</CreDtTm>
    </GrpHdr>
</ns1:FIToFI>
Run Code Online (Sandbox Code Playgroud)

当我使用以下代码为上述 XML 创建文档时:

    private static DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

    DocumentBuilder db = dbf.newDocumentBuilder();
    DOMImplementation domImpl = db.getDOMImplementation();

private Document buildExampleDocumentWithNamespaces(DOMImplementation domImpl, String output) {
    Document document = domImpl.createDocument("urn:Scf:xsd:$BlkCredTrf", "ns1:BlkCredTrf", null);
    document.getDocumentElement().appendChild(document.createElement("ns1:TstCode")).setTextContent("T");
    document.getDocumentElement().appendChild(document.createElement("ns1:FType")).setTextContent("SCF");
    document.getDocumentElement().appendChild(document.createElement("ns1:FileRef")).setTextContent("220811084023");
    document.getDocumentElement().appendChild(document.createElement("ns1:RoutingInd")).setTextContent("ALL");
    document.getDocumentElement().appendChild(document.createElement("ns1:FileBusDt")).setTextContent("2022-08-11");
    document.getDocumentElement().appendChild(document.createElementNS("urn:iso:std:iso:tech:xsd","ns1:FIToFI");
    return document;
}
Run Code Online (Sandbox Code Playgroud)

到目前为止我还没有遇到任何问题。

当我尝试最后将 <GrpHdr><MsgId>MQSECJYJHRBPDTZTYNNEYXOZUPAUDEKVDFV</MsgId><CreDtTm>2023-02-02T21:48:58.075+05:30</CreDtTm></GrpHdr> 作为文本内容添加到 FIToFI 标记时,使用代码:

document.getDocumentElement().appendChild(document.createElementNS("urn:iso:std:iso:tech:xsd","ns1:FIToFI").setTextContent(sample);

XML 的创建方式如下:

<ns1:TstCode>T</ns1:TstCode>
<ns1:FType>SCF</ns1:FType>
<ns1:FileRef>220811084023</ns1:FileRef>
<ns1:RoutingInd>ALL</ns1:RoutingInd>
<ns1:FileBusDt>2022-08-11</ns1:FileBusDt>
<ns1:FIToFI xmlns="urn:iso:std:iso:20022:tech:xsd">
    &lt;GrpHdr&gt;
        &lt;MsgId&gt;MQSECJYJHRBPDTZTYNNEYXOZUPAUDEKVDFV&lt;/MsgId&gt;
        &lt;CreDtTm&gt;2023-02-02T21:48:58.075+05:30&lt;/CreDtTm&gt; …
Run Code Online (Sandbox Code Playgroud)

java xml

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

从 ISO_8859_1 映射到 UTF-8

使用时

new BufferedReader(new InputStreamReader(inputStream))
Run Code Online (Sandbox Code Playgroud)

然后像这样映射每一行

 String(bufferedReader.readLine().getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);
Run Code Online (Sandbox Code Playgroud)

对于某些情况,未按预期映射

使用时

new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.ISO_8859_1))
it sees characters as expected
Run Code Online (Sandbox Code Playgroud)

我无法使用第二种方法向 InputStreamReader 提供字符集。知道为什么它不起作用吗?

java

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

R 没有在二项式 glm 中使用我的角色随机效果

当我尝试使用 glm 运行我的模型时出现此错误。为什么 R 不使用我的嵌套字符嵌套效果?

model <- glm(Propotion ~ Parasites_box * Parasites_nest + Day_of_year + Site + (1|Subsite/Nestbox/Cavity_ID), data = data.ex, family = binomial)

Error in Subsite/Trapnest : non-numeric argument to binary operator

Run Code Online (Sandbox Code Playgroud)

使用 glmer 给了我一个不同的警告:

model <- glmer(Propotion ~ Parasites_box * Parasites_nest + Day_of_year + Site + (1|Subsite/Nestbox/Cavity_ID), data = data.ex, family = binomial)

Error in (function (fr, X, reTrms, family, nAGQ = 1L, verbose = 0L, maxit = 100L,  : 
  Downdated VtV is not positive definite
In addition: …
Run Code Online (Sandbox Code Playgroud)

r mixed-models logistic-regression glmm

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