有没有人有一个很好的算法来计算轴最小值和最大值?
在为给定的一组数据项创建图表时,我希望能够给出算法:
算法应该返回
刻度应该是规则的间隔应该是"合理的"尺寸(例如1,3,5,甚至可能是2.5,但不是更多的sig figs).
可选值的存在将使此偏斜,但如果没有该值,则最大项目应出现在前两个刻度线之间,最低值位于底部两个之间.
这是一个与语言无关的问题,但是如果有一个C#/.NET库,那将会粉碎;)
设置了ReferenceDataRequest后,我将它发送到EventQueue
Service refdata = _session.GetService("//blp/refdata");
Request request = refdata.CreateRequest("ReferenceDataRequest");
// append the appropriate symbol and field data to the request
EventQueue eventQueue = new EventQueue();
Guid guid = Guid.NewGuid();
CorrelationID id = new CorrelationID(guid);
_session.SendRequest(request, eventQueue, id);
long _eventWaitTimeout = 60000;
myEvent = eventQueue.NextEvent(_eventWaitTimeout);
Run Code Online (Sandbox Code Playgroud)
通常情况下我可以从队列中获取消息,但我现在遇到的情况是,如果我在应用程序的同一次运行中(通常在第十个左右)发出大量请求,我会看到一个TIMEOUTEventType
if (myEvent.Type == Event.EventType.TIMEOUT)
throw new Exception("Timed Out - need to rethink this strategy");
else
msg = myEvent.GetMessages().First();
Run Code Online (Sandbox Code Playgroud)
这些是在同一个线程上进行的,但是我假设我正在消耗并且不释放的某个地方有某些东西.
有人有任何线索或建议吗?
关于SO对BLP的API的引用并不多,但希望我们可以开始纠正这种情况.
情况是我正在对远程服务器进行WCF调用,该服务器将XML文档作为字符串返回.
大多数时候这个返回值是几K,有时几十K,非常偶尔几百K,但很少可能是几兆(第一个问题是我无法知道).
正是这些罕见的场合引起了悲伤.我得到一个开始的堆栈跟踪:
System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
at System.Xml.BufferBuilder.AddBuffer()
at System.Xml.BufferBuilder.AppendHelper(Char* pSource, Int32 count)
at System.Xml.BufferBuilder.Append(Char[] value, Int32 start, Int32 count)
at System.Xml.XmlTextReaderImpl.ParseText()
at System.Xml.XmlTextReaderImpl.ParseElementContent()
at System.Xml.XmlTextReaderImpl.Read()
at System.Xml.XmlTextReader.Read()
at System.Xml.XmlReader.ReadElementString()
at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderMDRQuery.Read2_getMarketDataResponse()
at Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer2.Deserialize(XmlSerializationReader reader)
at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle)
at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
Run Code Online (Sandbox Code Playgroud)
我已经阅读了,因为大对象堆刚刚变得过于分散,所以即使在调用之前快速检查StringBuilder.EnsureCapacity只会导致OutOfMemoryException被提前抛出(因为我猜测需要什么) ,它可能实际上并不需要那么多,所以我的检查引起的问题比它解决的问题多得多.有些意见认为我无能为力.
我问过自己的一些问题:
该DatePattern字符串需要的东西的SimpleDateFormatter 会接受.
不幸的是,这意味着,开箱即用,这不包括能够将边界设置为周数.有一些方法可以在C#中获得这个值,但是我们可以扩展SimpleDateFormatter或提供不同的实现IDateFormatter并使用它(甚至在自定义中RollingFileAppender)并不明显.
那么我们怎样才能让Log4Net RollingFileAppender每周滚动一次?
我正在将分支上的修改合并到trunk(使用TortoiseSVN 1.7.10,Build 23359 - 64 Bit).
当我运行merge info命令时,例如
svn mergeinfo https://url/code/branches/project.2.5/@{2012-12-11} https://url/code/trunk -R --show-revs=eligible
Run Code Online (Sandbox Code Playgroud)
我找回了一个标有星星的修订版
r12345*
Run Code Online (Sandbox Code Playgroud)
如果我检查trunk上的svn:mergeinfo属性,那个修订版号看起来好像是合并的,例如
/code/branches/project.2.5:10000-15000
Run Code Online (Sandbox Code Playgroud)
因此,如果我理解正确,该修订已合并,那为什么它仍然被认为是合格的?
(对于上下文,我有一个日常任务,监视所有分支和报告,当他们中的任何一个有任何未完成的合并,所以我可以跟踪任何有可能与主干发散得太厉害的分支.我想知道我是否可以忽略此修订或是否需要特别注意.)
结果中的星号是什么意思?
我们是NuGet的热心用户,无论是内部构建还是第三方软件包.
我们最近开始在一些构建项目中启用NuGet Package Restore选项,以减少我们提交源代码控制的二进制文件的数量,但我们遇到了一个问题.
我们看到Visual Studio需要很长时间才能启动,一旦它启动(可能需要半个多小时),后续构建同样耗费时间.在发生这种情况时,您可以看到许多子NuGet进程在进程资源管理器中出现和死亡.
我们发现如果packages.config文件中引用的软件包版本不能从任何已配置的软件包源获得(可能是内部软件包的旧版本,而且有人帮助我们清理了我们的本地软件包) ,似乎NuGet和Visual Studio进入某种无限(或至少是长期运行的)重试循环.
如果我们从命令行运行NuGet install命令,则会返回错误
>.nuget\NuGet.exe install project\packages.config -o packages
Unable to find version '1.0.0.1' of package 'my.internal.package'.
Run Code Online (Sandbox Code Playgroud)
但看起来Visual Studio/NuGet没有正确使用它.
nuget.targets文件中吗?)我有一个字典,我想像SQL查询中的IN子句一样使用它.
我有一个Linq-To-SQL查询,我想使用此Dictionary的Keys来检查查询行中的字段.
例如
bool result = DataContext.Table.Any(res => MyDictionary.ContainsKey(res.field1));
Run Code Online (Sandbox Code Playgroud)
实际上这类似于
exists(select * from Table where field1 in (select id from DictionaryKeys))
Run Code Online (Sandbox Code Playgroud)
这里DictionaryKeys将是一个扩张的钥匙到他们自己的表.
不幸的是我得到了
System.NotSupportedException was unhandled
Message="Method 'Boolean ContainsKey(System.String)' has no supported translation to SQL."
Source="System.Data.Linq"
Run Code Online (Sandbox Code Playgroud)
我理解错误,但我正在努力将问题考虑到另一个解决方案.
编辑:我正在连接到SQL 2005.看起来这是一个连接提供程序问题,因为Marc的建议转换为List对我不起作用.
有任何想法吗?
我在iTunes Connect中使用了新的测试版功能.我将一个版本(98)上传到iTunes Connect,设置了一些内部测试人员并下载了该版本.
现在我已经使用新版本(版本99)更新了版本,并且已经上传到iTunes Connect,但是我无法看到如何激发系统将这个新版本推送给用户及其TestFlight应用程序.
我在几个设备上设置了测试人员(包括我的开发人员ID以及另一个ID),我仍然只能看到build 98.
在iTunes Connect屏幕上,构建98被列为非活动状态(这是正确的,因为它已被构建99取代),但构建99仅显示"邀请测试者",但我邀请了所有我想邀请的人.

它表示用户将"自动接收新版本",但需要多长时间?我希望它会立竿见影.有没有办法激发iTunes Connect发送更新通知,以便我的用户可以测试新版本?
c# ×4
.net ×1
.net-3.5 ×1
algorithm ×1
bloomberg ×1
blpapi ×1
charts ×1
collections ×1
eventqueue ×1
graph ×1
linq-to-sql ×1
log4net ×1
merge ×1
nuget ×1
svn ×1
testflight ×1
wcf ×1