这基于自1970年以来的计算毫秒数,C#产生的日期不同于Javascript Date.getTime()的JavaScript和C#版本.
对于所有这些计算,假设它们在中央标准时间内完成,因此比UTC低6小时(此偏移将在稍后再次出现).
据我所知,JavaScript Date对象基于Unix Epoch(1970年1月1日午夜).所以,如果我这样做:
//remember that JS months are 0-indexed, so February == 1
var d = new Date(2014,1,28);
d.getTime();
Run Code Online (Sandbox Code Playgroud)
我的输出将是:
1393567200000
这表示自Unix Epoch以来的毫秒数.这一切都很好.在链接的问题中,人们要求将此功能转换为C#,而"天真"的实现通常看起来像这样:
//the date of interest in UTC
DateTime e = new DateTime(2014, 2, 28, 0, 0, 0, DateTimeKind.Utc);
//the Unix Epoch
DateTime s = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
//the difference between the two
TimeSpan t = (e - s);
var x = t.TotalMilliseconds;
Console.WriteLine(x); …Run Code Online (Sandbox Code Playgroud) 我正在研究F#中的一个小方面项目,其中涉及将现有的C#代码移植到F#,我似乎在两种语言之间处理正则表达式的方式有所不同(我发布这个以希望找到我是只是做错了什么).
这个次要功能只使用此处概述的正则表达式技巧来检测代理对.这是当前的实现:
let isSurrogatePair input =
Regex.IsMatch(input, "[\uD800-\uDBFF][\uDC00-\uDFFF]")
Run Code Online (Sandbox Code Playgroud)
如果我然后针对已知的代理对执行它,如下所示:
let result = isSurrogatePair "?"
printfn "%b" result
Run Code Online (Sandbox Code Playgroud)
我进入false了FSI窗口.
如果我使用等效的C#:
public bool IsSurrogatePair(string input)
{
return Regex.IsMatch(input, "[\uD800-\uDBFF][\uDC00-\uDFFF]");
}
Run Code Online (Sandbox Code Playgroud)
和相同的输入值,我(正确)true回来.
这是一个真正的问题吗?我只是在F#实现中做错了吗?
作为一名后端开发人员,我更有说服力,但我有一个令我难过的造型问题.我在这里发布了我的场景样本.
我正在创建一个基于按钮单击显示/隐藏的div,以显示特定项目的详细信息.那部分工作正常,但这个布局并不完全.
这是基本布局:
<div id="signaturePopup">
<label id="signatureTitle">View Signature</label>
<div id="signatureImage">
<!--Contains img-->
</div>
<div id="signatureFooter">
<div id="signatureStatus">
<!-- Contains another img -->
</div>
<label id="signatureUserDetails">Added via JS</label>
<!-- This is the problematic control-->
<input id="closeSignature" type="button" value="Close" />
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
随附CSS:
#signatureTitle {
text-transform: uppercase;
font-size: 16px;
}
#signatureFooter {
bottom: 0;
position: absolute;
}
#signatureFooter > div, #signatureFooter > label, #signatureFooter > input {
display: inline;
}
#signatureFooter > input {
right: 0;
align:
}
#signatureImage > …Run Code Online (Sandbox Code Playgroud) 我正在努力使这个正则表达式模式完全正确,如果有人有更好的选择,我对正则表达式之外的其他选项持开放态度.
情况:我基本上是要针对C#中的文本列解析T-SQL"in"子句.所以,我需要采用这样的字符串值:
"'don''t', 'do', 'anything', 'stupid'"
并将其解释为值列表(稍后我会处理双引号):
"don''t""do""anything""stupid"我有一个适用于大多数情况的正则表达式,但是我很难将它概括为可以接受任何字符或我的组中的双引号单引号: (?:')([a-z0-9\s(?:'(?='))]+)(?:')[,\w]*
我对正则表达式很有经验,但很少(如果有的话)发现需要环顾四周(因此降低了对我的正则表达式经验的评估).
所以,换句话说,我想要一串逗号分隔的值,每个值都用单引号括起来,但可以包含加倍的单引号,并输出每个这样的值.
编辑 这是我当前正则表达式的一个非工作示例(我的问题是我需要处理我的分组中的所有字符,当我遇到单引号后没有第二个单引号时停止):
"'don''t', 'do?', 'anything!', '#stupid$'"
我将从我们希望拥有的行为开始:
我们最初的研究使它看起来像带有 Azure 逻辑应用程序的 BizTalk 很适合这个,但现在我正在研究概念证明,我遇到了障碍,即:
我已经能够创建一个逻辑应用程序,公开一个端点,用一个 JSON 主体调用它,并让逻辑应用程序解析该 JSON 并有条件地执行操作,一旦我弄清楚如何做所有这些,它就很漂亮感人的。
所以我的问题有两个方面:
我正在尝试通过一个我以前没有见过的场景,并且正在努力想出一个算法来正确实现它.我的部分问题是对正确术语的朦胧回忆.我相信我需要的是标准"组合"问题的变体,但我很可能会离开那里.
场景
给定一个示例字符串"100"(让我们称之为x),生成x该交换的所有组合中的一个0(零)字符o(小写o).所以,对于简单的例子"100",我希望这个输出:
"100""10o" "1o0""1oo"这将需要支持具有不同0字符数的不同长度的字符串,但假设永远不会有超过5个实例0.
我有这个非常简单的算法,适用于我的样本,"100"但更长时间/更复杂的分崩离析:
public IEnumerable<string> Combinations(string input)
{
char[] buffer = new char[input.Length];
for(int i = 0; i != buffer.Length; ++i)
{
buffer[i] = input[i];
}
//return the original input
yield return new string(buffer);
//look for 0's and replace them
for(int i = 0; i != buffer.Length; ++i)
{
if (input[i] == '0')
{
buffer[i] = …Run Code Online (Sandbox Code Playgroud) 我们有一些逻辑来为我们的ASP.NET Web窗体应用程序计算每个用户的昂贵价值.目前它位于Page_Load每个页面上的标题用户控件中,如下所示:
//note that we are not awaiting this
Task.Factory.StartNew(() => CacheManager.GetExpensiveValue(UserId));
Run Code Online (Sandbox Code Playgroud)
然后在静态中CacheManager.GetExpensiveValue(int userID):
private static object locker = new object();
lock (locker)
{
if (!AlreadyDone(userID))
{
var expensiveValue = ReallyExpensiveMethod(userID);
//our static cache wrapper class that uses an ObjectCache object
OurCache.Add(userID, expensiveValue);
}
else
{
return OurCache.Get(userID);
}
}
Run Code Online (Sandbox Code Playgroud)
这是有效的,但是当ReallyExpensiveMethod()花了很长时间(我也在努力提高其背后的逻辑性能)时,用户将lock在页面之间导航时阻止它.
我的问题是,我怎么能重组这个不导致阻塞?我已经考虑过使用ConcurrentDictionary,字典中的值是Task包装器,ReallyExpensiveMethod()而键是UserID以防止重复工作,但我不确定这是否真的让我到处都是.
我们目前在这个应用程序中没有使用任何异步逻辑,而且我确信这些功能不会引入需要添加Async="true"到应用程序中每个页面的更改,因为此标头逻辑位于每个页面中.
我正在玩StructuredFormatDisplay,我假设我可以使用多个属性Value,但似乎并非如此.这个问题(和接受的答案)一般都谈到定制,但给出的例子只使用一个属性.在使用此属性时,MSDN没有帮助.
这是我的例子:
[<StructuredFormatDisplay("My name is {First} {Last}")>]
type Person = {First:string; Last:string}
Run Code Online (Sandbox Code Playgroud)
如果我然后尝试这个:
let johnDoe = {First="John"; Last="Doe"}
Run Code Online (Sandbox Code Playgroud)
我最终得到了这个错误:
<StructuredFormatDisplay exception: Method 'FSI_0038+Person.First}
{Last' not found.>
这个错误似乎暗示它只捕获了我提到的第一个属性,Value但我很难说有信心.
我已经发现我可以通过声明我的类型来解决这个问题:
[<StructuredFormatDisplay("My name is {Combined}")>]
type Person = {First:string; Last:string} with
member this.Combined = this.First + " " + this.Last
Run Code Online (Sandbox Code Playgroud)
但我想知道是否有人可以解释为什么我不能使用多个属性,或者如果可以的话,我缺少什么语法.
我在源头做了一些挖掘并发现了这个评论:
在此版本的F#中,唯一有效值的格式为PreText {PropertyName} PostText
但是我无法找到实际实现该限制的地方,所以也许更熟悉代码库的人可以简单地指出我实施这个限制的地方并且我承认失败.
我们正在追踪我们的应用程序中看似与moment.js格式相关的错误.
这是有问题的电话(在Chrome,FF和Edge中复制,供参考):
moment('2016-03-13T23:59:59.999-06:00').format('YYYY-MM-DD')
Run Code Online (Sandbox Code Playgroud)
我们的期望:
2016年3月13日
我们得到了什么:
2016年3月14日
这似乎与夏令时有关,因为这是我们能够重现这个错误行为并且当天DST翻转的唯一日期(到目前为止).
如果我们将UTC偏移切换到-05:00那么它可以正常工作.
这是一个简单的JSBIN来演示
这里发生了什么?我们怎么解决这个问题呢?
突然之间,无需部署或进行任何其他环境更改,我们就得到了
磁盘空间不足。在System.Security.Cryptography.CryptographicException.ThrowCryptographicException(mscorlib,版本= 4.0.0.0,文化=中性,PublicKeyToken = b77a5c561934e089)在System.Security.Cryptography.X509Certificates.X509Utils._LoadCertFromBlob(mscorlib,版本= 4.0.0.0,文化=中性,PublicKeyToken = b77a5c561934e089)在System.Security.Cryptography.X509Certificates.X509Certificate.LoadCertificateFromBlob(mscorlib,版本= 4.0.0.0,文化=中性,PublicKeyToken = b77a5c561934e089)在System.Security.Cryptography.X509Certificates.X509 Certificate2..ctor(系统,版本=4.0.0.0,文化=中性,PublicKeyToken=b77a5c561934e089)在[我们的代码]
有了这一行:
var certificateByes = Convert.FromBase64String(clientCertificateBody);
factory.Credentials.ClientCertificate.Certificate = new X509Certificate2(certificateByes);
Run Code Online (Sandbox Code Playgroud)
我正在努力了解在 Azure Web 应用程序的上下文中这会如何突然发生变化。我们上次部署是在 11 月 20 日,昨天开始抛出。这个基本功能已经使用了几个月,没有出现任何问题。
我们之前确实在这方面遇到过麻烦,我们正在读取的字符串是从密钥库中检索的,但同样,这里没有任何改变。
我在这里和这里读到了不同类型的错误,但我们的错误消息是不同的,而且这几个月来一直运行良好。
这是否与应用程序运行的时间或填充某些临时存储位置的其他缓存问题有关?