我想知道是否可以使用nServiceBus订阅所有类型的消息而不指定发布者的终点.
背景为此,是一种分布式算法,它使用nServiceBus的分发器infra结构将子问题委托给网络上的分布式工作者.
任务完成后,工作人员应发送消息通知发件人.
我可以使用IBus.Reply()来通知它,但我也有一些监视和日志记录服务,它们也对这些消息感兴趣.使发送者重新发布所有收到的回复都听起来不对.
我可以在nServiceBus中订阅来自多个发布者的消息吗?
以下代码将帮助您理解我的问题:
create table con ( content_id number);
create table mat ( material_id number, content_id number, resolution number, file_location varchar2(50));
create table con_groups (content_group_id number, content_id number);
insert into con values (99);
insert into mat values (1, 99, 7, 'C:\foo.jpg');
insert into mat values (2, 99, 2, '\\server\xyz.mov');
insert into mat values (3, 99, 5, '\\server2\xyz.wav');
insert into con values (100);
insert into mat values (4, 100, 5, 'C:\bar.png');
insert into mat values (5, 100, 3, '\\server\xyz.mov');
insert into mat values …Run Code Online (Sandbox Code Playgroud) 考虑下面的当前算法迭代GridView一行的行来查找是否Checkbox选中/检查了包含的内容.
List<int> checkedIDs = new List<int>();
foreach (GridViewRow msgRow in messagesGrid.Rows)
{
CheckBox chk = (CheckBox)msgRow.FindControl("chkUpdateStatus");
if (chk.Checked){
//we want the GridViewRow's DataKey value
checkedMsgIDs.Add(int.Parse(messagesGrid.DataKeys[msgRow.RowIndex].Value.ToString()));
}
}
Run Code Online (Sandbox Code Playgroud)
这按预期工作:你留下了一个完全填充List<int>.
问题:您如何使用LINQ重新编写或改进此算法以搜索GridView已Checkbox选择/检查过的所有行?
我从R的硬币包中得到了这个例子:
library(coin)
library(multcomp)
### Length of YOY Gizzard Shad from Kokosing Lake, Ohio,
### sampled in Summer 1984, Hollander & Wolfe (1999), Table 6.3, page 200
YOY <- data.frame(length = c(46, 28, 46, 37, 32, 41, 42, 45, 38, 44,
42, 60, 32, 42, 45, 58, 27, 51, 42, 52,
38, 33, 26, 25, 28, 28, 26, 27, 27, 27,
31, 30, 27, 29, 30, 25, 25, 24, 27, 30),
site = factor(c(rep("I", 10), rep("II", 10),
rep("III", 10), …Run Code Online (Sandbox Code Playgroud) 我经常发现自己在编写一个新类时,在类中我传递了许多私有方法中的参数.另一方面,我也创建了一些私人成员,并在一种方法中使用它们.
所以我的问题是"你在哪个规则之后创建了一个私有成员,当你不这样做并将变量从私有方法传递给私有方法"时?
你能给我一些简单的提示或提示,以便设计变得更好吗?
毫无疑问,我们应该编写应用程序来保护自己免受恶意,好奇和/或粗心的用户的攻击,但是当前和/或未来的同事呢?
例如,我正在编写一个基于Web的API,它接受来自用户的参数.其中一些参数可能映射到配置文件中的值.如果用户使用URL混乱并为参数提供了无效值,则在尝试从配置文件的不存在的部分读取时,我的应用程序将会出错.当然,我在尝试从配置文件中读取之前擦除了params.
现在,如果另外一个开发人员在这个应用程序上运行,那么为此参数添加另一个有效值,该值将通过清理过程,但不会将相应的部分添加到配置文件中.请记住,我只是保护应用程序免受不良用户的攻击,而不是糟糕的程序员.我的申请会失败.
一方面,我知道所有的更改都应该在转向生产之前进行测试,这样的事情无疑会出现在一个不错的测试环节中,但另一方面,我尝试构建我的应用程序以尽可能地抵御失败.我只是不知道在潜在的失败列表中包含同事修改我的代码是否"正确".
对于这个项目,我选择不检查配置文件的相关部分是否存在.作为当前的开发人员,我不允许用户指定会导致失败的参数值,因此我希望未来的开发人员不会将行为引入可能导致失败的生产环境......或者至少消除这样的问题测试期间的情况.
你怎么看?
懒惰......还是哲学上的声音?
PHP中是否有可以处理XSD日期时间格式的函数,类或扩展?
它是标准的XML日期和时间格式,如下所示:
<date>2008-02-28T07:56:35.263</date>
Run Code Online (Sandbox Code Playgroud)
我知道我可以用正则表达式读取它,如果没有给出解决方案,我将默认为那个.
谢谢!
PS:解决了,看看答案.
是否可以检测用户何时从浏览器打印内容?
更复杂的是,如果我们在新窗口中向用户展示PDF文档,是否可以检测该文档的打印(假设用户从浏览器窗口打印)?
我能找到的最接近的是我们是否实现了自定义打印功能(类似这样)并跟踪何时调用它
我主要对一个适用于Internet Explorer(6或更高版本)的解决方案感兴趣
为什么在下面的代码中,我是否收到"失败"消息而不是"成功"
背景:我喜欢让类过程实例化它们的所有者对象,做某事,然后释放它.
但是,如果我有一个后代对象,这种方法不起作用:
关于如何在基类中提供可以作为子进程调用的类过程的任何建议?我错误地想到了这个吗?
Type
TBase = class(TObject)
Protected
Procedure Proc1; Virtual;
Public
Class Procedure MyClassProc;
end;
Class Procedure TBase.MyClassProc;
Var
Base: TBase;
begin
Base := TBase.Create;
Base.Proc1;
Base.Free;
end;
Procedure TBase.Proc1;
begin
Assert(FALSE, 'Failed');
end;
type
TChild = class(TBase)
protected
Procedure Proc1; Override;
end;
Procedure TChild.Proc1;
begin
ShowMessage('Succeeded');
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
TChild.MyClassProc;
end;
Run Code Online (Sandbox Code Playgroud) 我需要枚举一组控件 - 无论它们的嵌套级别如何 - 与给定的谓词匹配.
最初出现问题,当我需要将网格行中的所有文本框设置为ReadOnly,如果该行中的列指示该记录不应该是可编辑的.
后来我意识到,我已经解决了过去非常像这个问题,只有不同的标准(通过其ID递归找到一个控件).
在尝试了一些替代方案之后,我想出了一个有效的通用解决方案.但由于我会经常使用这种方法,我想收集可能的改进.
此方法将返回与谓词匹配的所有子控件:
public static IEnumerable<T> FindChildControls<T>(this Control parentControl,
Predicate<Control> predicate) where T : Control
{
foreach (Control item in parentControl.Controls) {
if (predicate(item))
yield return (T)item;
foreach (T child in item.FindChildControls<T>(predicate)) {
yield return child;
}
}
}
Run Code Online (Sandbox Code Playgroud)
使用此方法,我可以执行以下操作:
var allTxt = Page.FindChildControls<TextBox>(c => c is TextBox);
var submit = Page.FindChildControls<Button>(c => c.ID == "btnSubmit").First();
Run Code Online (Sandbox Code Playgroud)