我正在使用Visual Studio 2013 Ultimate构建一个F#控制台应用程序.目标框架是.Net 4.5
我的计算机上安装的FSharp.Core版本(大概是通过安装VS 2013)是4.3.1.0.
在NuGet上有两个版本的FSharp.Core,4.0.0发布于2012年4月12日,另一个版本的ID为Fsharp.Core.3 verison 0.0.2发布于2013年3月5日.
我正在寻找关于何时应该使用这些版本的指导,版本编号令我感到困惑,我本来希望在NuGet上找到最新的产品版本.
我错过了什么吗?
假设我有这两个功能:
let dowork n =
async {
do printfn "work %d" n
}
let work i = async {
do! Async.Sleep(2000)
printfn "work finished %d" i }
Run Code Online (Sandbox Code Playgroud)
我如何使用Async.Parallel同时运行它们并在继续之前等待两者完成?
我正在使用XAML和C#构建Windows应用商店(Metro)应用程序.我想演奏一个简单的音调,并能够控制持续时间和音高; 我们以前用Console.Beep做的事情.
我在没有外部库的情况下在C#中找到了Play动态创建的简单声音,但它引用了SoundPlayer(System.Media命名空间),这种类型的应用程序似乎不支持(除非我当然缺少某些东西).
有没有人有一个在metro应用程序中生成声音(不播放wav文件)的示例?
.NET 代码访问安全性已经存在了很长时间,但它似乎很少在现实世界中使用.
根据我的思维方式,这似乎是一个很好的概念,也是我在.NET之前没见过的概念.(它是否存在于其他语言中?)
我想知道是否有人在他们的项目中主动使用它,为什么?
对于那些没有使用它的人,除了"我们没有安全预算"或"我没有时间学习安全"之外还有正当理由吗?
最终实现目标的效果如何?
在对Orchard 1.0进行测试安装后,我决定使用常规SQL Server而不是SQLCE.如何更改提供商?而且,如何重新运行数据库设置?
假设我有这两个F#函数:
let sq x = x*x
let tm = DateTime.Now
Run Code Online (Sandbox Code Playgroud)
显然sq是纯粹的,因为它总是返回给定输入的相同值,而tm是不纯的,因为每次调用它时它将返回不同的值.
通常有一种方法可以确定F#中的特定函数是纯粹还是不纯,而不分析它的作用,换句话说,逐行读取它?
或者是否有一种方法来注释一个函数,告诉编译器在编写函数时该函数是纯函数还是不纯函数?
最后,当调用作为公共语言运行库(如DateTime)一部分的函数时,如何在不尝试的情况下判断它是纯粹的还是不纯的?
注意:"纯"是指维基百科的定义:http://en.wikipedia.org/wiki/Pure_function(permalink)
在计算机编程中,如果关于函数的这两个语句都成立,则函数可以被描述为纯函数:
在给定相同参数值的情况下,该函数始终评估相同的结果值.函数结果值不能依赖于程序执行过程中或程序的不同执行之间可能发生变化的任何隐藏信息或状态,也不依赖于来自I/O设备的任何外部输入.
对结果的评估不会导致任何语义上可观察到的副作用或输出,例如可变对象的突变或输出到I/O设备.
我想在F#中使用.NET CLR版本的String.Split.具体来说我想使用这段代码:
let main argv =
let s = "Now is the time for FOO good men to come to the aide of their country"
let sepAry = [|"FOO"; "BAR"|]
let z1 = s.Split sepAry
0 // return an integer exit code
Run Code Online (Sandbox Code Playgroud)
然而,由于(我相信)F#中的Split版本的实现方式与.Net 4.5中的版本不同,因此无法编译.我想要的.NET版本是:
Split(String [],StringSplitOptions)返回一个字符串数组,该数组包含此字符串中的子字符串,这些子字符串由指定字符串数组的元素分隔.参数指定是否返回空数组元素.
我知道我得到的是F#版本的Split,以前存在于PowerPack中,这就是为什么实现与CLR版本不同的原因.
得到我想要的最好的方法是什么?是否可以覆盖F#版本的Split并使用.Net版本?是否有可能扩展F#版本,如果是这样,如何?
Microsoft至少有两种不同的方法可以改进对并发操作的支持.
1)并发协调运行时(CCR)是Microsoft Robotics Studio和CCR&DSS Toolkit的一部分
2)Task Paralell Library(TPL)(.NET 4.0的一部分,现在是Beta 1版本)
我想知道是否有人对这两个不同的软件有经验并会比较和对比吗?
使用SQL Server我想在表中存储URL列表.另外,我要求我不希望任何URL出现在表中一次.
这表明我想将URL作为表的主键,但由于URL的长度,这在SQL Server中是不可能的.SQL Server有一个约束,即可以索引的字符字段的最大长度是900个字符,而根据规范的URL可能是无限的,并且实际上IE支持最多2k的URL,因此900太短.
我的下一个想法是使用HashBytes函数创建URL的哈希值,以用作要编制索引的列.在这种情况下,可能存在两个不同的URL可能散列到相同的值(不太可能但可能),因此我不能使用唯一索引.
针对该表的大部分处理将是插入,这是我想要优化的性能.
我的想法是拥有一个URL列和一个Hashvalue列,并在Hashvalue上创建一个非唯一索引.
然后我将创建一个Trigger for Insert,如果插入的Hashvale =现有的Hashvalue和Inserted URL =现有的URL,它将回滚插入.我希望查询优化器会使用索引来首先找到哈希值匹配的记录,然后不必进行全表扫描来尝试匹配URL.
我是在正确的轨道上还是有更好的方法来解决这个问题?
我有一个连接到Web服务器的C#程序,并显示SSL证书的到期日期.
我想知道的是如何确定连接是否正在使用Perfect Forward Secrecy [PFS]?
using System;
using System.Net;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
ServicePointManager.ServerCertificateValidationCallback += ServerCertificateValidationCallback;
ServicePointManager.CheckCertificateRevocationList = true;
var request = WebRequest.Create("https://www.microsoft.com/");
var response = request.GetResponse();
Console.WriteLine("Done.");
Console.ReadLine();
}
private static bool ServerCertificateValidationCallback(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
Console.WriteLine("Certificate expires on " + certificate.GetExpirationDateString());
return true;
}
}
}
Run Code Online (Sandbox Code Playgroud) f# ×4
.net ×2
c# ×2
asynchronous ×1
ccr ×1
f#-3.0 ×1
https ×1
orchardcms ×1
security ×1
sql-server ×1
ssl ×1
windows-8 ×1