同事肯定他在文件中检查:foo_oustanding.dpr但不能确定何时/何(我们有很多的"工具"和"实用"附属分支机构,很多项目的分支,等等.
我需要一种方法来在整个存储库中搜索这个文件.我可以检查整个源代码树到我的HD,但这需要几个小时.有更快的方法吗?我尝试了Repo浏览器(Tortoise)它似乎没有我也考虑过从一开始就倾倒日志.但这看起来很傻.
我可以随意使用:
我正在考虑使用DropBox将用户数据与delphi应用程序同步.它似乎解决了很多关于安全性,权限等的问题......我看到有一些用于C#,python等的API样本.有没有人用Delphi完成它,如果有的话,有样本可用吗?
我有这种情况....客户端发起的一个服务器之间的SOAP 1.1通信,比方说,成千上万的客户端.客户端是外部的,通过我们的防火墙进入,通过证书,https等进行身份验证.它们可以在任何地方,通常有自己的防火墙,NAT路由器等......它们真的是外部的,而不仅仅是远程公司办公室.他们可能在企业/校园网络,DSL /电缆,甚至拨号.
客户端使用Delphi(2005年+ 2007年的SOAP修复),服务器是C#,但从架构/设计的角度来看,这无关紧要.
目前,客户端将新数据推送到服务器,并在15分钟的轮询循环中从服务器提取新数据.服务器当前不推送数据 - 客户端点击"messagecount"方法,以查看是否有新数据要提取.如果为0,则再睡15分钟并再次检查.
我们试图将其降低到7秒.
如果这是一个内部应用程序,只有一个或几个客户端,我们会写一个无声的"监听器"肥皂服务,并将数据推送到它.但由于它们是外部的,所以坐在自己的防火墙后面,有时甚至是NAT路由器后面的专用网络,这是不切实际的.
所以我们在更快的循环中进行轮询.每10秒检查一次消息数量的10K客户端将是1000 /秒的消息,这些消息大多只会浪费带宽,服务器,防火墙和身份验证器资源.
所以我试图设计一些比自我造成的DoS攻击更好的东西.
我认为让服务器向客户端发送soap消息(推送)是不切实际的,因为这需要在客户端配置太多配置.但我认为还有其他我不了解的选择.如:
1)客户端是否有办法通过Soap 1.1发出GetMessageCount()请求,并获得响应,然后可能"保持在线"大约5-10分钟以获得额外响应以防新数据到达?即服务器显示"0",然后一分钟后响应一些SQL触发器(服务器是Sql Server上的C#,顺便说一句),知道该客户端仍然"在线"并发送更新的消息计数为"5" "?
2)是否有一些其他协议可以用来"ping"客户端,使用从他们上一次GetMessageCount()请求收集的信息?
3)我甚至都不知道.我想我正在寻找一些魔术协议,其中客户端可以发送一个GetMessageCount()请求,其中包括"哦顺便说一句,如果答案在下一个小时内发生变化,请在此地址ping我... ".
此外,我假设任何这些"保持线路开放"方案都会严重影响服务器规模,因为它需要同时保持数千个连接打开.我认为这也可能会影响防火墙.
那里有什么东西吗?还是我几乎坚持投票?
TIA,
克里斯
更新2010年4月30日:
已经证明拥有7秒通知既不容易也不便宜,特别是在没有超出HTTPS/SOAP /防火墙的企业标准的情况下,我们可能会推出一个两阶段的解决方案.Phase1将让客户端轮询"按需",GetMessageCount通过SOAP执行,这里没什么特别的.将有一个"刷新"按钮来提取新数据(这在这里是合理的,因为用户通常有理由怀疑新数据已准备就绪,即他们只是改变了在线系统中的结构颜色,因此他们知道点击在查看桌面上的运输清单之前刷新,现在他们看到描述中的颜色.)(这不是一个服装/时尚应用程序,但你明白了).使用此处讨论的技术,使用两个aps始终保持同步的概念,从主机推送的实时更新仍然在桌面上.但我希望它能够推出另一个版本,因为我们可以提供85%的功能,而无需这样做.但是,我希望我们能够做一个概念证明,并证明它可以工作.我会回来发布未来的更新.感谢大家对此的帮助.
我在.bpl中有一个单元,我需要一个我写的新函数的字符串列表.我希望stringlist在应用程序的生命周期内保持不变,这样每个调用都可以建立在之前调用的内容之上.
所以它在单元内全局声明,我在Initialization部分初始化它,如下所示:
var
ProductLookup : TStrings;
...
function foo : boolean;
begin
result := (ProductLookup.IndexOfName('bar') >=0); //blow up here. It's nil. Why?
end;
....
initialization
ProductLookup := TStringList.Create; // This should get run, but doesn't.
finalization
FreeAndNil(ProductLookup);
end.
Run Code Online (Sandbox Code Playgroud)
当我对它进行单元测试时,一切都很好.但是当它从主应用程序运行时,由于字符串列表为零而导致访问冲突.所以现在我在foo函数中检查nil并在必要时创建.但我不知道为什么初始化对我不起作用.我在初始化中放了一个调试消息,当它作为BPL加载时它不会运行,但如果我直接编译到我的dUnit exe中,它会运行.有任何想法吗?Delphi2005.
我有一个通用单元,可以记录到GExperts Debugger和/或OutputDebugString.我将在控制台应用程序中使用它,所以我希望它能够通过输出到stdout writeln().
主可执行文件已经有{$ APPTYPE CONSOLE},但我不认为这对我有帮助.将从几个地方调用日志记录例程:
将构建BPL和DLL而不能查看{$ APPTYPE CONSOLE}指令,因此我不能使用IFDEF条件编译.BPL和DLL需要能够以任何方式进行,具体取决于主应用程序是否是常规的winapp或控制台应用程序.
我遇到的一个丑陋的解决方案是使用可执行文件的名称.例如:
if (UpperCase(ExtractFileName(ParamStr(0))) = 'MYCONSOLEAPP.EXE') then ...
Run Code Online (Sandbox Code Playgroud)
但我讨厌这样做,因为我可以有其他控制台应用程序......
我宁愿只有一个神奇的函数AmIAConsoleApp:boolean; 有什么相似的吗?我在这个项目上使用Delphi2005.
更新:我看到我对这个问题有点重复,但我想调查德尔福人,看看是否有更好的方法.
我们正在使用带有Delphi2007补丁的Delphi2005,还试验了DelphiXE SOAP库.但是我遇到了麻烦......我们的应用程序已经消耗了一年的内部服务.该服务使用document/literal约定,并由多个平台上的几个系统使用(java,.Net和我们的 - Delphi2005).现在我们需要成为出版商而不仅仅是消费者.所以我们正在构建服务器服务.WSDL出错了.我使用"官方"WSDL作为文档/文字,当我尝试将其作为服务提供时,它以RPC样式出现.即使我已将HTTPSoapPascalInvoker.Converter的选项设置为[soLiteralParams,soDocument].现在我做了一些搜索,我发现这样的陈述:"http://www.experts-exchange.com/Programming/Languages/Pascal/Delphi/Q_22664248.html ]
这句话已经有几年了.有谁知道它是否仍然适用?
如果有必要,我可以将项目的这一部分移动到Delphi2010或XE,但我不愿意(在我们的自动构建过程中抛出一个扳手).包括SOAP库是可以的,我们已经这样做了.
因此,如果有人知道是否可以在2005年,2010年或XE中编写一个Win32 Delphi Web服务来生成符合document/literal的WSDL,我会非常非常高兴.
您好我正在编写一个应用程序,有各种表单及其相应的数据模块.我写道,他们通过在use classes中提到彼此使用(一个在实现中,另一个在接口中以避免交叉引用)这种方法是错误的吗?为什么或为什么不以这种方式使用?谢谢
我有以下代码(RAD Studio XE2,Windows 7 x64):
program letters;
{$APPTYPE CONSOLE}
{$DEFINE BOO}
const
ENGLISH_ALPHABET = 'abcdefghijklmnopqrstuvwxyz';
begin
{$IFDEF BOO}
writeln;
{$ENDIF}
write(ENGLISH_ALPHABET[1]:3);
readln;
end.
Run Code Online (Sandbox Code Playgroud)
当{$DEFINE BOO}指令关闭时,我有以下(预期)输出(为了便于阅读,空格被替换为点):
..a
Run Code Online (Sandbox Code Playgroud)
当指令打开时,我有以下(意外)输出:
// empty line here
?..a
Run Code Online (Sandbox Code Playgroud)
而不是预期的
// empty line here
..a
Run Code Online (Sandbox Code Playgroud)
当我改为const ENGLISH_ALPHABET时const ENGLISH_ALPHABET: AnsiString,预期的输出打印没有问题字符.当:3格式化被删除或改变:1,没有问号.当输出重定向到文件时(通过AssignFile(Output, 'boo.log')命令行或从命令行),再没有问号.
这种行为的正确解释是什么?
我正在使用Splunk来解析一些日志,这些日志中嵌入了我们的"hub"和"comp"ID,在消息正文中.我需要使用字段提取RegEx将它们拉出来:HHHH-CCCC,其中数据如下所示:
Hub:[HHHH] Comp: [HHHH]
Run Code Online (Sandbox Code Playgroud)
这是一个示例记录:
RecordID:[00UJ9ANUHO5551212] TrackingID:[1234ANUHO5551212] Hub:[0472] Comp:[N259]发生了一些事件,日志在这里:: [\ server\share\0472\N258\blah\blah\blah\somefile.txt ],没有例外.
从那以后,我想回来:
0472-N259
Run Code Online (Sandbox Code Playgroud)
我正在努力学习(重新学习!30年前我学会了这些东西!)捕获小组,并想出了这个:
(?<=Hub:\[)([A-Z0-9]{4})
Run Code Online (Sandbox Code Playgroud)
从那里我可以得到4个角色的集线器,但它不会让我这样做:
(?<=Hub:\[)([A-Z0-9]{4}) (?<=Comp:\[)([A-Z0-9]{4})
Run Code Online (Sandbox Code Playgroud)
我有点亲近,但是我很沮丧,现在是时候回家了,所以我想也许可以帮助我一夜之间.百分之百的最佳答案(请解释解决方案).我保证在这个问题符合条件时回来奖励.答案不一定是splunk形式(with <fieldname>),但这也很有帮助.
如果RegEx可以粘贴到http://gskinner.com/RegExr/中,那么我可以进一步试验.
delphi ×8
delphi-2005 ×2
database ×1
datamodule ×1
delphi-2009 ×1
delphi-xe2 ×1
dropbox ×1
io ×1
protocols ×1
regex ×1
side-effects ×1
soap ×1
soap-client ×1
splunk ×1
svn ×1
tortoisesvn ×1
web-services ×1