小编Joh*_*lph的帖子

精心设计的功能网络应用程序的源代码?

什么是精心设计的功能(而不是面向对象)Web应用程序的例子,使他们的源代码可用?我目前正在研究黑客新闻 来源,但我想看看其他一些非常重要的例子,最好是在clojure中.

对于MVC,有很多Rails和PHP应用程序,框架和教程要研究 - 函数式编程有什么用?

lisp functional-programming clojure arc-lisp

11
推荐指数
1
解决办法
781
查看次数

编译器魔术:为什么?

我刚才注意到给出以下代码:

if (x.ID > 0 && !x.IsCool)
Run Code Online (Sandbox Code Playgroud)

Microsoft C#3.0(VS2008 SP1)编译器将优化它:

if (!((x.Id <= 0) || x. IsCool))
Run Code Online (Sandbox Code Playgroud)

这是在启用优化的Debug构建中.为什么编译器会这样做?它在执行方面更快吗?

我用Reflector找到了(我实际上是在寻找不同的东西)

c# compiler-construction optimization

11
推荐指数
3
解决办法
1132
查看次数

为什么RSACryptoServiceProvider.Encrypt()输出不稳定?

直到今天,我仍然生活在使用RSA的RSA加密是确定性的印象中.毕竟,签名验证如果不是,应该如何工作?

令我惊讶的是,RSACryptoServiceProvider当使用相同的密钥加密相同的字节集时,.NET 没有稳定的输出:

[Fact]
public void Learning()
{
    const int keySize = 1024;

    System.Security.Cryptography.RSACryptoServiceProvider rsa = new System.Security.Cryptography.RSACryptoServiceProvider(keySize);

    var bytes = GenerateRandomDataWithLength( 36 );

    for (int i = 0; i < 4; i++)
        Assert.Equal( rsa.Encrypt( bytes, false ), rsa.Encrypt( bytes, false ) );
}

byte[] GenerateRandomDataWithLength( int length )
{
    Random r = new Random();

    byte[] data = new byte[length];
    r.NextBytes( data );

    return data;
}
Run Code Online (Sandbox Code Playgroud)

我已经浏览了PKCS规范,我确实理解了RSA背后的数学,所以我真的很想知道为什么我观察输出是不稳定的.

Mono的RSA实现具有稳定的输出.不稳定的输出Encrypt不会影响解密,这很可能并产生预期的数据.

.net cryptography rsa rsacryptoserviceprovider pkcs#1

11
推荐指数
1
解决办法
2697
查看次数

.NET内存模型,volatile变量和测试集:保证什么?

我知道.NET内存模型(在.NET Framework上;不是compact/micro/silverlight/mono/xna/what-have-you)保证对于某些类型(最值得注意的是原始整数和引用)操作保证是原子.

此外,我相信x86/x64测试和设置指令(和Interlocked.CompareExchange)实际上引用了全局内存位置,因此如果成功,另一个Interlocked.CompareExchange将看到新值.

最后,我相信volatile关键字是指令编译器尽快传播读写操作并不重新排序有关此变量的操作(对吗?).

这导致了一些问题:

  1. 我的信念是否正确?
  2. Interlocked.Read没有int的重载,只有longs(2个WORD,因此通常不会原子读取).我一直认为.NET内存模型保证在读取整数/引用时会看到最新的值,但是使用处理器缓存,寄存器等等.我开始意识到这可能是不可能的.那么有没有办法强制重新获取变量?
  3. volatile是否足以解决整数和引用的上述问题?
  4. 在x86/x64上,我可以假设......

如果有两个全局整数变量x和y,则初始化为0,如果我写:

x = 1;
y = 2;
Run Code Online (Sandbox Code Playgroud)

那个NO线程将看到x = 0和y = 2(即写入将按顺序发生).如果它们不稳定,这会改变吗?

.net synchronization volatile test-and-set memory-fences

10
推荐指数
1
解决办法
1567
查看次数

TFS如何合并工作?

我有一个发布分支(RB,从C5开始)trunk(C10)上的变更集,我现在想要合并到RB上.

该文件在C3处变化(两者共用),一个在RB上的CS 7中,一个在C9(中继)中,一个在C10中).因此,我更改的文件的历史记录如下所示:

    RB:       C5 -> C7
Trunk: C3 ->             C9 -> C10
Run Code Online (Sandbox Code Playgroud)

当我将C10从主干合并到RB时,我希望看到一个合并窗口显示我, C10 | C3 | C7因为C3是共同的祖先修订版,C10和C7分别是我的两个分支的提示.但是,我的合并工具告诉我C10 | C9 | C7.

我的合并工具配置为显示%1(OriginalFile)|%3(BaseFile)|%2(Modified File),所以这告诉我TFS选择C9作为基本修订版.

这完全出乎意料,完全违背了我在Mercurial或Git中使用的合并方式.我有什么问题或是TFS试图通过合并让我疯狂吗?

这是默认的TFS合并行为吗?如果是这样,您能否提供有关他们选择以这种方式实施的原因的见解?

我正在使用TFS 2008和VS2010作为客户端.

merge tfs branching-and-merging

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

在OSX/Linux上的MonoDevelop中进行NuGet包恢复

我正在尝试使用MonoDevelop下的NuGet包恢复来编译Visual Studio项目,但它不是开箱即用的.

NuGet应该在Mono上工作,甚至还有nuget.targets内置的支持,那么缺少什么?

monodevelop nuget xamarin

9
推荐指数
1
解决办法
2788
查看次数

在野外使用D.

我试图找到关于D的一些信息.我特别喜欢这种与C++的比较,以便对它的内容进行概述.现在我问自己:在这个领域使用D的频率是多少,以及C++有多少可行的替代方案?

c++ d c++11

8
推荐指数
1
解决办法
906
查看次数

Git设置远程跟踪分支

我想从新的远程存储库跟踪远程主分支.两者都已存在.

我怎么用git来解决这个问题?我似乎无法做对.我试过了:

git remote add otherRepo git://...
git branch -t myTrack otherRepo/master
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下错误:

fatal: Not a valid object name: 'otherRepo/master'.

git

8
推荐指数
1
解决办法
6418
查看次数

"=="运算符不像编译器生成的Equals()覆盖匿名类型

根据MSDN:

因为匿名类型上的Equals和GetHashCode方法是根据属性的Equals和GetHashcode定义的,所以同一匿名类型的两个实例只有在它们的所有属性相等时才相等.

但是,以下代码演示了编译器生成的实现Equals()不符合预期:

 DateTime start = new DateTime(2009,1,1);
 DateTime end = new DateTime(2010, 12,31);

 // months since year 0
 int startMonth = start.Date.Year * 12 + start.Date.Month - 1;
 int endMonth = end.Date.Year * 12 + end.Date.Month -1 ;

 // iterate through month-year pairs
 for (int i = startMonth; i <= endMonth ; i++)
 {
  var yearMonth = new { Year = (int)Math.Truncate(i/12d), Month = (i % 12) + 1};

  if (yearMonth.Year == 2009 &&  yearMonth.Month …
Run Code Online (Sandbox Code Playgroud)

.net c# compiler-construction anonymous-types

8
推荐指数
2
解决办法
376
查看次数

F#使用泛型类型作为模式鉴别器

如果还有另一种方法可以实现我在下面尝试做的事情,请告诉我.假设我有以下示例代码

type FooBar = 
  | Foo
  | Bar

let foobars = [Bar;Foo;Bar]

let isFoo item  = 
  match item with
  | Foo _ -> true
  | _ -> false

foobars |> Seq.filter isFoo
Run Code Online (Sandbox Code Playgroud)

我想编写isFoo的通用/高阶版本,它允许我根据所有其他类型的区分联合(在这种情况下为Bar)过滤我的列表.

像下面的东西,'可以是Foo或Bar

let is<'a> item  = 
  match item with
  | a _ -> true
  | _ -> false
Run Code Online (Sandbox Code Playgroud)

但是,此尝试会产生以下错误:

错误FS0039:未定义模式鉴别器"a"

f# pattern-matching discriminated-union

7
推荐指数
1
解决办法
2539
查看次数