考虑以下代码:
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) 我使用 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 中使用此包装器编写新文件
当我尝试在 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}\nRun 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}\nRun Code Online (Sandbox Code Playgroud)\n现在,当我尝试通过在模拟器中启动应用程序,将其放在后台,然后使用 android studio 中的“终止应用程序”按钮终止进程来测试应用程序的进程死亡时,它在使用以下命令重新创建时崩溃错误
\n2022-03-19 19:06:44.633 7174-7174/com.sivakasi.papco.jobflow E/AndroidRuntime: FATAL EXCEPTION: …Run Code Online (Sandbox Code Playgroud) 我试图在 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) 我正在使用执行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)
现在我不明白为什么我的可观察在第一个异常之后结束。我不告诉它继续吗?
我想做的事:
如果我的可观察量是可枚举的,我会想要这种行为:
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?
在前端使用 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) Qwik 框架文档提到,只有一个侦听器,所有其他侦听器都被序列化并附加到 DOM,例如:on:click等。使用 Service Worker 部署了一种精心设计的缓存算法。根据我的理解,对于第一次加载我们的应用程序的用户,如果在缓存中找不到 onClick 捆绑包,则会在触发点击事件后从网络中获取它。如果我们不使用 CDN 或网络速度较慢,网络延迟甚至会超过 400 毫秒,这可能会影响用户体验。对于这种情况有什么解决方案吗?
我有一个看起来像 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">
<GrpHdr>
<MsgId>MQSECJYJHRBPDTZTYNNEYXOZUPAUDEKVDFV</MsgId>
<CreDtTm>2023-02-02T21:48:58.075+05:30</CreDtTm> …Run Code Online (Sandbox Code Playgroud) 使用时
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 提供字符集。知道为什么它不起作用吗?
当我尝试使用 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) java ×4
7zip ×1
android ×1
c# ×1
delphi ×1
delphi-7 ×1
express ×1
glmm ×1
mixed-models ×1
mockito ×1
observable ×1
php ×1
processwire ×1
qwik ×1
r ×1
typescript ×1
viewmodel ×1
webclient ×1
xml ×1