小编d4n*_*4nt的帖子

如何使用c#获取当前活动窗口的标题?

我想知道如何使用C#获取当前活动窗口(即具有焦点的窗口)的Window标题.

.net c# windows winforms

107
推荐指数
4
解决办法
11万
查看次数

您如何在本地针对OpenID进行开发

我正在开发一个使用OpenID来验证用户身份的网站(在Django中).由于我目前只在本地计算机上运行,​​因此无法使用Web上的某个OpenID提供程序进行身份验证.所以我想我需要运行一个本地OpenID服务器,只需让我输入用户名,然后将其传递回我的主应用程序.

这样的OpenID开发服务器是否存在?这是最好的方式吗?

python openid django

37
推荐指数
2
解决办法
2565
查看次数

如何在Powershell中提取正则表达式反向引用/匹配的值

我有一个包含数据行的文本文件.我可以使用以下的powershell脚本来提取我感兴趣的行:

select-string -path *.txt -pattern "subject=([A-Z\.]+),"
Run Code Online (Sandbox Code Playgroud)

一些示例数据将是:

blah blah subject=THIS.IS.TEST.DATA, blah blah blah
Run Code Online (Sandbox Code Playgroud)

我想要的是能够只提取主题的实际内容(即"THIS.IS.TEST.DATA"字符串).我试过这个:

select-string -path *.txt -pattern "subject=([A-Z\.]+)," | %{ $_.Matches[0] }
Run Code Online (Sandbox Code Playgroud)

但"匹配"属性始终为空.我究竟做错了什么?

regex powershell

19
推荐指数
2
解决办法
2万
查看次数

如何从SQL Server中的XML值获取元素名称列表

我在SQL Server 2k8中有一个带有XML列的表.以下SQL检索一些XML:

SELECT TOP 1 my_xml_column FROM my_table
Run Code Online (Sandbox Code Playgroud)

让我们说它返回以下XML

<a>
  <b />
  <c>
    <d />
    <d />
    <d />
  </c>
</a>
Run Code Online (Sandbox Code Playgroud)

我想得到的是

/a
/a/b
/a/c
/a/c/d
/a/e
Run Code Online (Sandbox Code Playgroud)

换句话说,我怎样才能让SQL Server告诉我XML的结构?

我可以执行以下操作来获取各个元素的所有名称:

SELECT  C1.query('fn:local-name(.)')
FROM    my_table
CROSS APPLY my_xml_column.nodes('//*') AS T ( C1 )
Run Code Online (Sandbox Code Playgroud)

也许如果有一个等效的"local-name()"返回了元素的整个路径就可以了?

xml sql sql-server sql-server-2008

11
推荐指数
2
解决办法
2万
查看次数

哪个更快:使用GROUP BY或子查询加入?

假设我们有两个表:'Car'和'Part',在'Car_Part'中有一个连接表.说我想看到所有车辆中都有123部分.我能做到这一点:

SELECT Car.Col1, Car.Col2, Car.Col3 
FROM Car
INNER JOIN Car_Part ON Car_Part.Car_Id = Car.Car_Id
WHERE Car_Part.Part_Id = @part_to_look_for
GROUP BY Car.Col1, Car.Col2, Car.Col3
Run Code Online (Sandbox Code Playgroud)

或者我可以做到这一点

SELECT Car.Col1, Car.Col2, Car.Col3 
FROM Car
WHERE Car.Car_Id IN (SELECT Car_Id FROM Car_Part WHERE Part_Id = @part_to_look_for)
Run Code Online (Sandbox Code Playgroud)

现在,我内心的一切都想要使用第一种方法,因为我是由善良的父母抚养长大的,他们向我灌输了对次级查询和对集合理论的热爱的清教徒仇恨,但有人建议我做那么大GROUP BY比子查询更糟糕.

我应该指出我们在SQL Server 2008上.我还应该说实际上我想根据Part Id,Part Type以及其他可能的东西进行选择.所以,我想要做的查询实际上是这样的:

SELECT Car.Col1, Car.Col2, Car.Col3 
FROM Car
INNER JOIN Car_Part ON Car_Part.Car_Id = Car.Car_Id
INNER JOIN Part ON Part.Part_Id = Car_Part.Part_Id
WHERE (@part_Id IS NULL OR Car_Part.Part_Id = @part_Id)
AND (@part_type IS NULL …
Run Code Online (Sandbox Code Playgroud)

sql-server join group-by subquery sql-server-2008

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

为什么Guid.ToString()会颠倒字节顺序?

我们将一些Guid存储在MS SQL数据库中.有一些遗留代码可以执行Guid.ToString(),然后将它们传递给a,varchar(64)并且有一些较新的代码使用唯一标识符参数传递它们.当您使用MS SQL Management studio查看结果时,它们看起来有所不同.前三个块的字节顺序相反,但最后一个块保持不变.为什么?

.net sql-server

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

为什么在C#中添加多个双精度时,顺序会影响舍入?

考虑以下C#代码:

double result1 = 1.0 + 1.1 + 1.2;
double result2 = 1.2 + 1.0 + 1.1;

if (result1 == result2)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

result1应该始终等于result2对吗?问题是,事实并非如此.result1是3.3,result2是3.3000000000000003.唯一的区别是常数的顺序.

我知道双打的实现方式可能会出现舍入问题.我知道如果我需要绝对精度,我可以使用小数.或者我可以在if语句中使用Math.Round().我只是一个想要了解C#编译器正在做什么的书呆子.有人能告诉我吗?

编辑:

感谢所有到目前为止建议阅读浮点运算和/或谈论CPU如何处理双精度的固有不准确性.但我觉得我的问题的主旨仍然没有答案.因为没有正确地说出来,这是我的错.我这样说吧:

分解上面的代码,我希望发生以下操作:

double r1 = 1.1 + 1.2;
double r2 = 1.0 + r1
double r3 = 1.0 + 1.1
double r4 = 1.2 + r3
Run Code Online (Sandbox Code Playgroud)

假设上述每个加法都有一个舍入误差(编号为e1..e4).因此r1包含舍入误差e1,r2包括舍入误差e1 + e2,r3包含e3,r4包含e3 + e4.

现在,我不知道舍入错误究竟是如何发生的,但我希望e1 + e2等于e3 + e4.显然它没有,但这对我来说似乎有些不对劲.另一件事是,当我运行上面的代码时,我没有得到任何舍入错误.这就是让我觉得C#编译器做的奇怪而不是CPU的原因.

我知道我问了很多,也许任何人都可以给出的最佳答案是去做CPU设计的PHD,但我只是想我会问.

编辑2

从原始代码示例中查看IL,很明显,编译器不是CPU正在执行此操作:

.method private hidebysig static void Main(string[] args) cil managed
{
.entrypoint
    .maxstack 1
    .locals …
Run Code Online (Sandbox Code Playgroud)

.net c# compiler-construction precision rounding

7
推荐指数
2
解决办法
683
查看次数

类级变量上的 Python 装饰器作为反射的元数据?

我有一个 python 类(实际上是 Google App Engine 模型),如下所示:

class MyClass(ParentClass):
    variable_one = PropertyClass(...)
    variable_two = PropertyClass(...)
Run Code Online (Sandbox Code Playgroud)

我打算构建一个系统,它可以描述该类的两个实例之间的差异,这两个实例代表不同时间点的实体的两个版本。最终它会产生一个像这样的字符串

"Variable One changed from 'foo' to 'bar', Variable Two changed from empty to 'baz'"
Run Code Online (Sandbox Code Playgroud)

因此,我需要在某个地方存储“variable_one”应显示为“Variable One”等事实。来自 C# 的背景,我的本能是使用属性,例如:

class MyClass : ParentClass
{
    [DisplayName("Variable One")]
    public PropertyClass variable_one;

    [DisplayName("Variable Two")]
    public PropertyClass variable_two;
}
Run Code Online (Sandbox Code Playgroud)

首先,Python 的等价物似乎是装饰器:

class MyClass(ParentClass):
    @display_name("Variable One")
    variable_one = PropertyClass(...)

    @display_name("Variable Two")
    variable_two = PropertyClass(...)
Run Code Online (Sandbox Code Playgroud)

然而,装饰器实际上是在进行函数柯里化,并且由于类变量定义只是将 PropertyClass 的一个实例分配给variable_one 和variable_two,所以看起来这不是有效的python。无论如何,我不知道该怎么写。

一种选择似乎是扩展 PropertyClass...

class MyClass(ParentClass):
    variable_one = MyPropertyClass("Variable One", ...)
    variable_two = MyPropertyClass("Variable …
Run Code Online (Sandbox Code Playgroud)

python reflection decorator python-decorators

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

线程没有从Thread.Sleep()唤醒

我们有一个用C#编写的Windows服务.该服务产生一个执行此操作的线程:

private void ThreadWorkerFunction()
{
  while(false == _stop) // stop flag set by other thread
  {
    try
    {
      openConnection();

      doStuff();

      closeConnection();
    }
    catch (Exception ex)
    {
      log.Error("Something went wrong.", ex);

      Thread.Sleep(TimeSpan.FromMinutes(10));
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

当数据库消失后,我们将Thread.Sleep放入了几次,然后我们回到了3Gb日志文件中,这些文件充满了数据库连接错误.

这几个月一直运行良好,但最近我们已经看到一些实例,其中log.Error()语句记录了一个"System.InvalidOperationException:这个SqlTransaction已经完成;它不再可用"异常然后永远不会回来.该服务可以保持运行数天,但不会记录任何其他内容.

做过一些阅读之后,我知道Thread.Sleep并不理想,但为什么它永远不会回来?

.net multithreading

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

你可以在SQLServer 2k5中的链接服务器表视图上有一个外键吗?

我有一个带有链接服务器的SQLServer到另一个其他数据库.我在该链接服务器上创建了一个视图

create view vw_foo as
select
[id],
[name]
from LINKEDSERVER.RemoteDatabase.dbo.tbl_bar
Run Code Online (Sandbox Code Playgroud)

我想谈谈以下内容

alter table [baz] 
add foo_id int not null
go

alter table [baz] with check 
add constraint [fk1_baz_to_foo] 
  foreign key([foo_id]) 
  references [dbo].[vw_foo] ([id])
go
Run Code Online (Sandbox Code Playgroud)

但是这会产生错误:"外键'fk1_baz_to_foo'引用对象'dbo.vw_foo',它不是用户表."

如果我尝试使用以下内容将外键直接放在表上

alter table [baz] with check 
add constraint [fk1_baz_to_bar] 
  foreign key([foo_id]) 
  references LINKEDSERVER.RemoteDatabase.dbo.tbl_bar ([id])
Run Code Online (Sandbox Code Playgroud)

然后我收到以下错误:

对象名称"LINKEDSERVER.RemoteDatabase.dbo.tbl_bar"包含的前缀数量超过最大数量.最大值为2.

有什么方法可以达到同样的效果吗?

sql sql-server sql-server-2005 foreign-keys linked-server

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

在ASP.NET Web安装项目中,我可以在IIS中禁用匿名访问吗?

我有一个非常简单的ASP.NET Web应用程序和一个Web安装项目,它将项目输出和内容文件部署到IIS中的虚拟目录.

我想要的是MSI自动禁用IIS中该虚拟文件夹的匿名访问.

我怀疑它可以通过在自定义动作DLL中编写一些代码来完成,这是可以接受的,但有没有办法在Web设置项目的设置中执行它?

.net iis installer

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

从XML FLWOR查询返回计算的元素名称

我在SQLServer 2008 R2中有以下XML数据

DECLARE @data XML
SET @data = '<root attr1="val1" attr2="val2" attr3="val3"/>'
Run Code Online (Sandbox Code Playgroud)

我想从root获取属性名称列表,并将其作为元素列表输出,如下所示:

<root>
  <attr1>val1</attr1>
  <attr2>val2</attr2>
  <attr3>val3</attr3>
</root>
Run Code Online (Sandbox Code Playgroud)

我一直在玩FLWOR查询以获得我想要的东西.到目前为止我有这个:

SELECT @data.query('
for $attr in /*/@*
return <test>{fn:string($attr)}</test>
')
Run Code Online (Sandbox Code Playgroud)

这很好,几乎是我需要的,但当我尝试这样做时......

SELECT @data.query('
for $attr in /*/@*
return <{fn:local-name($attr)}>{fn:string($attr)}</{fn:local-name($attr)}>
')
Run Code Online (Sandbox Code Playgroud)

它不开心.除了硬编码元素名称之外,它似乎不喜欢任何其他东西.

如何返回具有计算名称的元素?

xml sql-server xquery flwor

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