我想在我的代码中使用http://code.google.com/p/stateless将功能与其依赖项分开.我没有找到任何高级的用法示例,所以这个问题是关于无状态框架的最佳实践.
我有以下配置(这只是一个例子,只有一个功能状态):
var stateMachine = new StateMachine(State.Stopped);
stateMachine.Configure(State.Stopped)
.Permit(Trigger.Failed, State.Error)
.Permit(Trigger.Succeed, State.GenerateMachineData);
stateMachine.Configure(State.GenerateMachineData)
.Permit(Trigger.Failed, State.Error)
.Permit(Trigger.Succeed, State.Finished);
public enum State
{
Stopped,
GenerateMachineData,
Finished,
Error
}
public enum Trigger
{
Succeed,
Failed
}
Run Code Online (Sandbox Code Playgroud)
那么在哪里调用实际的功能.我有以下想法,但每个都有优点和缺点:
1)在OnEntry()中设置功能以及下一次触发:
stateMachine.Configure(State.GenerateMachineData)
.OnEntry(() => {
try {
Generate();
stateMachine.Fire(Trigger.Succeed);
} catch {
stateMachine.Fire(Trigger.Error);
}
})
.Permit(Trigger.Failed, State.Error)
.Permit(Trigger.Succeed, State.Finished);
Run Code Online (Sandbox Code Playgroud)
那么如果我只是打电话
stateMachine.Fire(Trigger.Succeed);
Run Code Online (Sandbox Code Playgroud)
它最终在State.Finished或State.Error中结束
2)将状态机和功能分开,如:
__CODE__或__CODE__直接传入,因为这可能不是你想要发生的.即使他们这样做了,你仍然需要__CODE__/ __CODE__处理创建对象的错误.供应商是一种懒惰的回调,它允许一次性创建,使用和关闭实际对象,而不必进行大量的丑陋__CODE__/ __CODE__错误处理.
例如,只需查看将一个文件复制到另一个文件所需的代码(使用Guava实用程序将实际复制和流关闭代码最小化):
void DoTheStuff() …
我想知道如何在用户上下文中远程启动进程,就像他启动它一样.让我解释.我知道如何远程启动进程,所以例如我想启动记事本:
Invoke-WmiMethod win32_process -name create -ComputerName $remoteMachine -ArgumentList "notepad" -credential (Get-Credential)
Run Code Online (Sandbox Code Playgroud)
问题是它启动记事本"在后台"(不在用户上下文中),所以在这种情况下他不会看到打开的"记事本"对话框/进程(他将在任务管理器的进程列表中看到记事本).我希望他看到记事本窗口对话框.
有谁知道如何实现这一目标?
是否可以将一些元数据属性分配给PowerShell宏?我有一组宏,我想将它们封装到逻辑组.我想象的是:
[UnitTest]
function Do-Something()
{
...
}
Run Code Online (Sandbox Code Playgroud)
然后在运行时传递所有加载的宏并将其过滤掉,如:
$macrosInRuntime = Get-Item function:
$unitTestMacros = $macrosInRuntime |
? {$_.Attributes -contain "UnitTest"} # <-- ???
foreach ($macro in $unitTestMacros)
{
....
}
Run Code Online (Sandbox Code Playgroud)
我会很乐意帮助你
我正在为C#寻找一个调度库,很长一段时间我虽然"唯一"选项是Quartz.NET,它非常强大且工作得很好.但是,当我发现"Reactive Extensions"(RX - http://msdn.microsoft.com/en-us/data/gg577609)时,我意识到它也可以执行与时间相关的操作,并且具有本机.NET前端.
Rx在时间相关操作方面有哪些局限性?我需要在特定的时间间隔内,在一段时间后重复发射任务.
有什么重大差异吗?(在性能等方面 - 例如根据我的经验,当有超过1500+的任务时,Quartz冻结 - 预定任务)
我有一个 PowerShell 脚本文件存储在内部工件服务器中。脚本网址为http://company-server/bootstrap.ps1.
下载该脚本并使用自定义参数执行的简洁方法是什么?
我想将这样的命令发送给用户,他们会一遍又一遍地复制粘贴它,因此它必须是单行并且应该很短。
我目前所做的工作,但它又长又笨拙:
$c=((New-Object System.Net.WebClient).DownloadString('http://company-server/bootstrap.ps1'));Invoke-Command -ScriptBlock ([Scriptblock]::Create($c)) -ArgumentList 'RunJob'
Run Code Online (Sandbox Code Playgroud)
我想知道是否有更短的方法来做到这一点。
我们如何操纵 Solarwinds,这对自动化部署很有用。这可以是命令行界面或 API 或任何其他可以让我们在无需人工干预的情况下禁用和重新启用 Solarwinds 监视器的东西。待了解后将添加更多细节
使用 SolarWinds API 将监视器禁用和重新启用添加到部署脚本中
请协助编写脚本。谢谢
也许将脚本放在deploy.target中
阿米特