问题列表 - 第3240页

表示稀疏整数集?

什么是以紧凑和快速的方式表示稀疏整数集(真正的C内存地址)的好方法.我已经知道像位向量和行程编码这样的显而易见的事情了.但我想要比每组元素一个词更紧凑的东西.我需要添加和删除元素并测试成员资格.我不需要其他的集合操作,比如union.

多年前我读过一个这样的图书馆,但后来忘记了它的名字.我认为它是由HP发布的,并且有一个女人的名字.

algorithm set

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

WCF wsHttpBinding通过防火墙的有趣问题

我在互联网托管服务提供商中部署了一个Web应用程序.此Web应用程序使用部署在我公司应用程序服务器的IIS服务器上的WCF服务,以便能够访问公司的数据库,网络人员允许我出于安全原因通过防火墙公开此WCF服务.图表看起来像这样.

[主页] --->(Internet)---> |防火墙<Public IP>:<Port-X >| ---> [带WCF服务的IIS <Comp. Network Ip>:<Port-Y>]

我还想使用wsHttpBinding来利用其安全功能,并加密敏感信息.

尝试后,我收到以下错误:

异常详细信息:System.ServiceModel.EndpointNotFoundException:由于EndpointDispatcher上的AddressFilter不匹配,无法在接收方处理带有To'http://:/service/WCFService.svc'的消息.检查发送方和接收方的EndpointAddresses是否一致.

做一些研究我发现wsHttpBinding使用WS-Addressing标准,并且阅读了这个标准,我了解到SOAP标头已经增强,包括'MessageID','ReplyTo','Action'和'To'等标签.

所以我猜测,因为客户端应用程序端点指定防火墙IP地址和端口,并且服务使用与防火墙IP不同的内部网络地址进行回复,然后WS-Addressing将触发上述消息.我认为这是一个非常好的安全措施,但在我的方案中它并不是很有用.

引用WS-Addressing标准提交(http://www.w3.org/Submission/ws-addressing/)

"由于目前广泛使用的网络技术范围广泛(例如,NAT,DHCP,防火墙),许多部署无法为给定端点分配有意义的全局URI.允许这些"匿名"端点启动消息交换模式和接收回复时,WS-Addressing定义了以下众所周知的URI,供不能具有稳定,可解析的URI的端点使用 .http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous "

我如何配置我的wsHttpBinding端点来解决我的防火墙的IP并忽略或绕过SOAP消息头中"To"WS-Addressing标记中指定的地址?或者我是否必须在服务端点配置中更改某些内容?

非常感谢帮助和指导.

马尔科.

PS:虽然我找到了解决方法,但我当然使用basicHttpBinding完全没问题.

wcf firewall ws-addressing wshttpbinding

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

功能编程:不变性等

我最近问了一个关于函数式编程的问题,并收到了(好的!)答案,这些答案提出了更多问题(有时似乎是学习的情况).以下是几个例子:

  1. 一个答案提到了不可变数据结构的优点:每个线程都可以拥有自己的副本.现在,对我来说,这听起来更像是一个版本控制系统(使用类比),而不是锁定某人已经签出的代码,以便其他人无法修改,每个人都可以查看自己的副本.听起来不错.但是,在VCS中,您有"合并"更改的概念,如果两个人更改了相同的内容.似乎这个问题肯定会出现在多线程场景中......那么当线程看到最新数据时,如何完成"合并"呢?

  2. 这个答案讨论了在对象的循环中执行操作的情况,以及如何每次使用新对象而不是更新旧对象.但是,假设bankAccount正在非循环场景中进行更新 - 例如GUI银行系统.操作员单击"更改利率"按钮,该按钮将触发一个事件(例如,在C#中)执行类似操作bankAccount.InterestRate = newRateFromUser.我觉得我在这里很密集,但希望我的例子是有意义的:必须有某种方式来更新对象,对吧?其他一些事情可能取决于新数据.

无论如何,如果你能帮助我了解范式转变,我会很感激.我记得我的大脑经过类似的"愚蠢阶段",在学习OOP后,采用简单的程序性命令式编码方法.

language-agnostic concurrency functional-programming immutability

12
推荐指数
2
解决办法
3457
查看次数

有关C#短路评估的最佳实践是什么?

另一个帖子中的评论中的答案和随后的辩论促使我问:

在C#||中 和&&是逻辑运算符的短路版本 和&分别.

用法示例:

if (String.IsNullOrEmpty(text1) | String.IsNullOrEmpty(text2) | String.IsNullOrEmpty(text3))
{
    //...
}
Run Code Online (Sandbox Code Playgroud)

与:

if (String.IsNullOrEmpty(text1) || String.IsNullOrEmpty(text2) || String.IsNullOrEmpty(text3))
{
    //...
}
Run Code Online (Sandbox Code Playgroud)

在编码实践方面哪个更好用,为什么?

注:我不知道这个问题是相似的这个问题,但我相信它值得特定语言的讨论.

c#

16
推荐指数
2
解决办法
9138
查看次数

如何等到远程.NET调试器附加

今天我遇到了一个问题,我需要远程调试一个程序.该程序是从另一个系统启动的,所以我真的没有机会在命令行上与它进行交互.我可以轻松改变它的来源.

我需要做的是让程序正常启动,然后等待我用调试器连接它.我无法想出办法让我开心.我找到了错误,但没有调试器的帮助.

while(true) { }
Run Code Online (Sandbox Code Playgroud)

保持进程活着,然后我可以用调试器"设置下一个语句",但它看起来很尴尬和粗鲁.

Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)

看起来很奇怪,因为实际上没有一个控制台供我输入.(它也没有用.设置下一个语句然后运行会带你回到ReadLine()等待.)

那么我可以在.NET/CLR/C#程序中插入什么样的代码来说"在这里等到我可以用调试器附加"?

.net debugging remote-debugging breakpoints

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

为什么以下打印'资源暂时不可用'?

为什么以下代码打印'read():资源暂时不可用'80%的时间?这是EAGAIN代码,它与WOULD BLOCK相同,这意味着没有数据等待读取,但是select返回1表示有数据(在Linux中测试):

#include <time.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/errno.h>

int main(int argc, char** argv)
{
    int fd = open("/dev/lp0", O_RDWR | O_NONBLOCK);
    int ret = 0;
    int status = 0;
    char buffer[1024];
    char teststr[] = "This is a test\n";
    char XMIT_STATUS_OFFLINE[] = {0x10,0x04,0x02};
    char XMIT_STATUS_ERROR[] = {0x10,0x04,0x03};
    char XMIT_STATUS_ROLL[] = {0x10,0x04,0x04};
    char XMIT_STATUS_SLIP[] = {0x10,0x04,0x05};
    fd_set rfds;
    FD_ZERO( &rfds );
    FD_SET( fd, &rfds );
    struct timeval sleep;
    sleep.tv_sec = 5;
    sleep.tv_usec …
Run Code Online (Sandbox Code Playgroud)

c linux file-io select-function

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

调用批处理文件后,服​​务在WaitForExit处挂起

我有一个服务有时会调用批处理文件.批处理文件需要5-10秒才能执行:

System.Diagnostics.Process proc = new System.Diagnostics.Process(); // Declare New Process
    proc.StartInfo.FileName = fileName;
    proc.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
    proc.StartInfo.CreateNoWindow = true;
    proc.Start();
    proc.WaitForExit();
Run Code Online (Sandbox Code Playgroud)

当我在控制台中运行相同的代码时,该文件确实存在并且代码可以正常工作.然而,当它在服务内部运行时,它会挂起WaitForExit().我必须从Process中删除批处理文件才能继续.(我确定该文件存在,因为我可以在进程列表中看到它.)

我该如何修复这个挂断?

更新#1:

凯文的代码允许我获得输出.我的一个批处理文件仍然挂起.

"C:\ EnterpriseDB\Postgres\8.3\bin\pg_dump.exe"-i -h localhost -p 5432 -U postgres -F p -a -D -v -f"c:\ backupcasecocher\backupdateevent2008.sql"-t "\"public \".\"dateevent \"""DbTest"

另一个批处理文件是:

"C:\ EnterpriseDB\Postgres\8.3\bin\vacuumdb.exe"-U postgres -d DbTest

我检查了路径,postgresql路径很好.输出目录确实存在,仍然可以在服务外部运行.有任何想法吗?

更新#2:

而不是批处理文件的路径,我写了"C:\ EnterpriseDB\Postgres\8.3\bin\pg_dump.exe"并为其proc.StartInfo.FileName添加了所有参数proc.StartInfo.Arguments.结果没有变化,但我pg_dump.exe在进程窗口中看到了.同样,这只发生在服务中.

更新#3:

我已经与管理员组中的用户一起运行该服务,但无济于事.我恢复null了服务的用户名和密码

更新#4:

我创建了一个简单的服务来在事件日志中编写跟踪并执行包含"dir"的批处理文件.它现在将挂起proc.Start();- 我尝试将帐户从LocalSystem更改为User,我设置了admnistrator用户和密码,仍然没有.

.net c# service windows-services

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

执行"free(ppMapData [i])"时程序崩溃了什么?

我尝试制作如下的动态2D数组char:

char** ppMapData = (char**)malloc(sizeof(char*)*iMapHeight);
for (int i=0; i< iMapHeight; i++)
{
    ppMapData[i] = (char*)malloc(sizeof(char)*iMapWidth);
    //do something
}

// do something

for (int i=0; i<iMapHeight; i++)
    free(ppMapData[i]);
free(ppMapData);
Run Code Online (Sandbox Code Playgroud)

它看起来很好; 然而,当涉及到运行时,我的程序在调用的行崩溃free(ppMapData[i]).任何想法在这里有什么问题.非常感谢你.

c arrays memory-management

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

获取页面上的选定文本和选定节点?

当选择一个文本块(可能跨越许多DOM节点)时,是否可以使用Javascript提取所选文本和节点?

想象一下这个HTML代码:

<h1>Hello World</h1><p>Hi <b>there!</b></p>
Run Code Online (Sandbox Code Playgroud)

如果用户发起了一个从"World ..."开始的mouseDown事件,然后是一个mouseUp甚至就在"那里!"之后,我希望它会返回:

Text : { selectedText: "WorldHi there!" },
Nodes: [ 
  { node: "h1", offset: 6, length: 5 }, 
  { node: "p", offset: 0, length: 16 }, 
  { node: "p > b", offset: 0, length: 6 } 
]
Run Code Online (Sandbox Code Playgroud)

我已经尝试将HTML放入textarea但这只会让我获得selectedText.我没有尝试过该<canvas>元素,但这可能是另一种选择.

如果不是JavaScript,有没有办法使用Firefox扩展?

javascript xhtml firefox firefox-addon selection

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

Rails表单验证

我有一个Rails应用程序,允许用户通过填写​​一个扩展的表单来构建数据库查询.我想知道在Rails中检查表单参数的最佳实践.以前,我有我的results方法(表单提交的方法)执行以下操作:

if params[:name] && !params[:name].blank?
  @name = params[:name]
else
  flash[:error] = 'You must give a name'
  redirect_to :action => 'index'
  return
end
Run Code Online (Sandbox Code Playgroud)

但对于几个表格领域,每个人都看到这个重复,这很令人厌烦.我不能只是将它们全部放在某个循环中以检查每个字段,因为字段设置不同:

  • 一把钥匙: params[:name]
  • 一把钥匙和一把子钥匙: params[:image][:font_size]
  • 如果设置了另一个字段,则只期望填写一些表单字段

等等.这也是重复的,因为我flash[:error]为每个缺失/无效参数设置,并为每个参数重定向到相同的URL.我切换到使用一个before_filter检查所有必要的表单参数,只有一切都没问题才返回true.然后我的results方法继续,变量只是被分配为flat-out,不涉及检查:

@name = params[:name]
Run Code Online (Sandbox Code Playgroud)

在我的validate_form方法中,我有以下代码部分:

if (
  params[:analysis_type][:to_s] == 'development' ||
  params[:results_to_generate].include?('graph')
)
  {:graph_type => :to_s, :graph_width => :to_s,
   :theme => :to_s}.each do |key, sub_key|
    unless params[key] && params[key][sub_key]
      flash[:error] = "Cannot leave '#{Inflector.humanize(key)}' blank"
      redirect_to(url)
      return false
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

我只是想知道我是否会以最好的方式解决这个问题,或者在参数验证方面我是否遗漏了一些明显的东西.我担心这仍然不是最有效的技术,因为我有几个块,我分配一个值 …

forms validation ruby-on-rails

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