小编Art*_*his的帖子

在业力环境中使用Blob中的importsScripts

我正在研究一个使用业力和茉莉花的小项目.我的目标浏览器是chrome 32.

我试图在我通过blob实例化的web worker中导入脚本,如下所示:

describeAsyncAppliPersephone("When the application project to DOM", function()
{
    it("it should call the function of DomProjection in the project associated with its event", function()
    {
        var eventSentBack = {
            eventType: 'testReceived',
            headers: { id: 14, version: 4 },
            payLoad: { textChanged: 'newText' }
        };
        var isRendered = false;
        var fnProjection = function(event, payload)
        {
            isRendered = true;
        }

        var bootstrap = [
            { eventType: 'testReceived', projection: fnProjection },
            { eventType: 'test2Received', projection: function() { } }
        ]; …
Run Code Online (Sandbox Code Playgroud)

javascript web-worker jasmine karma-runner

13
推荐指数
1
解决办法
3470
查看次数

使用Moq进行单元测试

假设我有一个包含多个函数的普通类:

public class MyClass
{
    public int GetTotal(int myValue, string myString)
    {
        if (myValue > 10)
            return GetTotal(myValue);
        else
            return GetTotal(myString);
    }

    public int GetTotal(int myValue)
    {
        return myValue * 25 / 12 + 156;
    }

    public int GetTotal(string myString)
    {
        return myString.Length * 25 / 48 + 27;
    }
}
Run Code Online (Sandbox Code Playgroud)

我想单元测试我的第一个函数并"模拟"其他函数,int GetTotal(int myValue)并且int GetTotal(string myString),为了只测试main函数内的代码.我使用Moq作为模拟框架.是否有一些技巧可以让我从我想测试的函数中获取代码并模拟对其他函数的内部调用?或者我是否应该调用这样的第二个对象来模拟一切?

public class MyCalculator
{
    public int GetTotal(int myValue)
    {
        return myValue * 25 / 12 + 156;
    } …
Run Code Online (Sandbox Code Playgroud)

c# unit-testing moq mocking

6
推荐指数
1
解决办法
4129
查看次数

索引如何减慢select语句的速度?

我很难找到为什么在表的外键上添加索引会减慢我的同事的观点.此视图由具有外连接和内连接的多个打包视图组成.我试图逐一删除它们以找出问题所在,但我不能说,它似乎不是来自特定的视图,而是来自它们的更多.

我知道索引可以减慢插入速度或者它们在硬盘驱动器上占用大小,但我从来没有读过他们可能负责减慢视图的任何地方.事实就是我这样做:

DBCC FREEPROCCACHE
DBCC DROPCLEANBUFFERS
GO

select top 20 * from  MyView
Run Code Online (Sandbox Code Playgroud)

索引需要20秒而没有索引需要9秒.

CREATE NONCLUSTERED INDEX [IX_MyField] ON [dbo].MyTable
(
    [MyField] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, 
  IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON,
  ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)

sql sql-server indexing performance

6
推荐指数
1
解决办法
4987
查看次数

匹配列表的前两个元素

我有一个清单:

[objA; objB; objC; objD]

我需要做以下减少:

obj - > obj - > obj

即:

objA objB - > objB'

然后收回原始列表,以便我得到:

[objB'; objC; objD]

我正在尝试执行以下操作:

let rec resolveConflicts = function
    | [] -> []
    | [c] -> resolveConflict c
    | [x;y] -> resolveConflict x
               |> List.filter getMovesRelatedtoY
               |> List.append y
               |> resolveConflict 
    | [x;y::tail] -> 
               let y' = resolveConflict x
                        |> List.filter getMovesRelatedtoY
                        |> List.append y
               resolveConflicts y'::tail
Run Code Online (Sandbox Code Playgroud)

这种语法不正确,可能是我甚至没有使用正确的工具......我对任何合适的解决方案持开放态度,以便我可以学习.

至于为什么,我过滤列表并将一个追加到另一个,只是每个冲突都是一个移动列表.

f#

6
推荐指数
1
解决办法
1524
查看次数

使用VS 2012在Build上生成T4

我正在尝试使用VS2012在我的项目的每个版本上生成代码.

我的解决方案中有3个项目:

  • 项目1有一些课程
  • 项目2具有通用模板
  • project 3具有读取json文件的模板,然后调用通用模板表单项目2以生成其文件.

当我点击构建/转换所有T4模板时,没有问题,这一代进展顺利.

但我正在尝试配置我的构建以在每个构建上自动包含此步骤.

我已将此代码添加到我的csproj中:

<Import Project="$MsBuildToolsPath)\Microsoft.CSharp.Targets" />
<PropertyGroup>
   <TransformOnBuild>true</TransformOnBuild>
   <OverWriteReadOnlyOutputFiles>true</OverWriteReadOnlyOutputFiles>
</PropertyGroup>
<Import Project="$(MSBuildExtensionPath32)\Microsoft\VisualStudio\v11.0\TextTemplating\Microsoft.TextTemplating.targets"/>
Run Code Online (Sandbox Code Playgroud)

我已经在我的电脑上找到了自己的路径" \ Microsoft\VisualStudio\v11.0\TextTemplating\Microsoft.TextTemplating.targets ".我从它的例子是:get-visual-studio-to-run-a-t4-template-on-every-build

问题来自我正在使用的这一行:<#@ include file ="$(SolutionDir)\ xxx\yyy\zzz\mytemplate.tt">

我收到错误:

无法解析文件的包含文本:D:\ Projects\pppp\qqq\eeee\$(SolutionDir)\ xxx\yyy\zzz\mytemplate.tt

由于模板在"手动"(构建/转换所有T4模板)生成时运行良好,我想知道在构建时生成它的问题可能是什么.

任何的想法?

.net c# t4

5
推荐指数
1
解决办法
4075
查看次数

LINQ 2 SQL查询不适用于函数调用

我很确定这个问题已经被多次询问了,我再次提出要求,但我做了一些研究,不幸的是我没有在互联网上找到我的乐趣......

我有一个像这样的IQueryable:

triggers = triggers.Where(t => GetIdFromName(t.Name) == filter.Id.ToString());
Run Code Online (Sandbox Code Playgroud)

函数GetIdFromName获取名称的一部分以检索Id:

public string GetIdProfiloFromName(string name)
        {
            return name.Substring(name.IndexOf(NameFirstSeparator)+1,name.IndexOf(NameSecondSeparator)-name.IndexOf(NameFirstSeparator)-1);
        }
Run Code Online (Sandbox Code Playgroud)

我知道这不好,但它是迄今为止我能做到的最好的.我的问题是使用这两个语句不允许使用Linq to sql.应用程序抛出错误,但这没关系:

triggers = triggers.Where(t => t.Name.Substring(t.Name.IndexOf(NameFirstSeparator) + 1, t.Name.IndexOf(NameSecondSeparator) - t.Name.IndexOf(NameFirstSeparator) - 1) == filter.Id.ToString());
Run Code Online (Sandbox Code Playgroud)

我怀疑GetIdFromName函数应该给出一些不同于字符串的东西,但我真的很想知道是什么以及如何......

谢谢你的启发,

约恩

[编辑]到目前为止我所理解的更新:

我不能做我想做的事,因为为了做到这一点,我需要做一些这样的事情:

static Expression<Func<Trigger,string,  bool>> IsId = (a,b) => a.name.Substring(a.name.IndexOf(NameFirstSeparator) + 1, a.name.IndexOf(NameSecondSeparator) - a.name.IndexOf(NameFirstSeparator) - 1)==b;
Run Code Online (Sandbox Code Playgroud)

但这不会进入

triggers = triggers.Where(func<Trigger,bool>);
Run Code Online (Sandbox Code Playgroud)

我可以设法做到这一点,但我必须从我的数据库中获取所有结果才能在内存中执行我的测试.

非常感谢,你让我对此变得非常清楚!!

c# linq-to-sql

3
推荐指数
1
解决办法
250
查看次数

让力学!在计算表达式中

我目前正在研究神话般的fsharpforfunandprofit网站的计算表达系列,我对计算系列的第4课"包装类型"有疑问.我已经尝试了进一步阅读,但有一个重要的概念,我没有抓住.

实际上,我确实理解bind的定义:

member Bind : M<'T> * ('T -> M<'U>) -> M<'U>
Run Code Online (Sandbox Code Playgroud)

但有一件事我不明白是在使用它时在计算表达式中使用它的魔力!:

例如:

let product'' = 
    dbresult {
        let! custId = getCustomerId "Alice"
        let! orderId = getLastOrderForCustomer "" // error!
        let! productId = getLastProductForOrder orderId 
        printfn "Product is %s" productId
        return productId
        }
printfn "%A" product''
Run Code Online (Sandbox Code Playgroud)

getCustomerId"Alice"给我回M <'T>,但是custId 已经是打开过的'T,我无法看到这个魔术怎么工作......

它是隐藏在let中的代码的一部分!Fsharp核心组件内的指令?有人可以向我解释这是怎么回事!从包装中取出T'?

谢谢你的解释

f# computation-expression

3
推荐指数
1
解决办法
124
查看次数

F# 中的 Seq 和 IQueryable

我正在使用 F# 阅读 Web 云和移动解决方案,并尝试关注作者正在构建的网站。但是我有一些问题,我无法解决。我理解我正在做的事情的逻辑,但看起来缺少一些代码来使它工作。我已经阅读了第 19 页。

我有以下存储库模块:

module Repository =
    let get (source : IQueryable<_>) queryFn=
        queryFn |> Seq.toList

    let getAll ()= 
        fun s -> query { for x in s  do
                         select x }
Run Code Online (Sandbox Code Playgroud)

这个想法是在 queryFn 中使用 getAll 从源中获取所有项目。但是我在两者之间有一个演员问题。

这是使用它的控制器:

[<HandleError>]
type GuitarsController(context : IDisposable, ?repository ) =
    inherit Controller()


    let fromRepository =
        match repository with
        | Some v -> v
        | _ -> (context :?>  FsMvcAppEntities).guitars
                |> Repository.get



    new() = new GuitarsController(new FsMvcAppEntities())

    member this.Index() =
        getAll() …
Run Code Online (Sandbox Code Playgroud)

f#

2
推荐指数
1
解决办法
1652
查看次数

每个州的一个命令,或一个命令来统治它们

我正在努力分析我正在研究的问题.我处理清洁应用程序,其中安排清洁,然后由一些企业完成,最后由房屋所有者控制.

当企业完成其任务时,它必须向应用程序发送命令,告诉:

  • 工作完成了(StartDate,EndDate)
  • 这项工作完全不是我们的错(评论)
  • 工作没有完成,但这是业主的错(ReasonId)

这些中的每一个都可能使用不同的信息.所以我想使用3个不同的命令来建模它,而不是只有一个并添加一个状态.

但是复杂程度要高一级,因为企业可能会执行3种主要的清理工作,并且可能会对这些命令添加不同的内容(例如:要清理的座位数,或区域和描述) ).

就这一点,它让我已经处理了9个案例.我觉得将所有这些分离是正确的方法,因为它可以在未来实现更大的灵活性.

但我是否正确地认为这3个是不同的东西,如果它们不仅仅是一个大命令:

  • 我告诉你我们做了什么(StateOfWork,StartDate,EndDate,Comment,ReasonId,NbSeat,AreaQuantity,AreaDescription ......)

我完全不喜欢把物体弄半满的想法,因为它涵盖了太多东西......

感谢您的阅读和您的想法,

domain-driven-design cqrs

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

在f#中声明一个泛型函数

我试图在F#中编写我的第一个泛型函数,看起来我在这里缺少一些概念:

module Assert =
    let ThrowsException<'e : exn>  functionUnderTest  =
    try 
        let result = functionUnderTest
        printfn "fails"
    with 
    | :? 'e  ->  printfn  "succeeds"
    | _  -> printfn "fails"
Run Code Online (Sandbox Code Playgroud)

stdin(18,28):错误FS0010:模式中出现意外符号':'.预期的">"或其他令牌.

我希望能够使用我的函数来测试是否引发了异常.

let myFunction=HttpClient.postDocRaw "http://notexisting.com/post.php" "hello=data"
Assert.ThrowsException System.Net.WebException myFunction
Run Code Online (Sandbox Code Playgroud)

我想实现这个测试工具,所以如果有人有解决方案,这很好,但此外,我正在学习F#,我想知道在哪里出错我试图编写这样的函数.

最终代码:

module Assert =
    let ThrowsException<'e when 'e :> exn>  functionUnderTest  =
        try 
           let actual = functionUnderTest()
           printfn "succeeds"
        with 
        | :? 'e  ->  printfn  "succeeds"
        | _  ->  Assert.Fail()


[<TestClass>]
type HttpClientTest() = 
[<TestMethod>]
    member x.PostDataWrongUrl() = 
        Assert.ThrowsException<System.Net.WebException>  (fun() -> …
Run Code Online (Sandbox Code Playgroud)

f#

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

在F#中创建一个动作以使用ac#方法

我想从Owin实现的HttpListener中使用这个方法:

public static IDisposable Create(AppFunc app, IDictionary<string, object> properties)
Run Code Online (Sandbox Code Playgroud)

AppFunc有这样的签名:

IDictionnary<string,Object> -> Task
Run Code Online (Sandbox Code Playgroud)

我想创建一个任务,但它需要一个动作,我不知道如何在F#中做到这一点.到目前为止我管理的最好的是在这个问题中使用代码:

module CsharpAction

open System

type Wrapper<'T>(f:'T -> unit) =
      member x.Invoke(a:'T) = f a

let makeAction (typ:Type) (f:'T -> unit) = 
    let actionType = typedefof<Action<_>>.MakeGenericType(typ)
    let wrapperType = typedefof<Wrapper<_>>.MakeGenericType(typ)
    let wrapped = Wrapper<_>(f)
    Delegate.CreateDelegate(actionType, wrapped, wrapped.GetType().GetMethod("Invoke"))
Run Code Online (Sandbox Code Playgroud)

program.fs

let yymmdd1 (date:DateTime) = date.ToString("yy.MM.dd")
    let printSuccess = fun() -> printfn "Success %s" (yymmdd1 DateTime.Now )
    let actionTask = CsharpAction.makeAction (typeof<string>) (printSuccess)
    let mutable properties = Dictionary(dict …
Run Code Online (Sandbox Code Playgroud)

c# f#

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