小编Gro*_*fit的帖子

SignalR和加入组

我正在看SignalR正在进行的项目,它似乎完全是我想要的.然而,我仍然有点困惑的一点是团体和加入.

我将首先尝试描述实现的上下文.因此,现有系统中的用户将希望召开关于给定主题的会议,然后创建具有给定名称/标识符的房间,然后他们将邀请其他人进入该房间,然后它将基本上像私人聊天室.

所以我假设的步骤是作为主机,创建一个房间并加入它,然后发出邀请,这将要求用户点击哪个会以某种方式告诉服务器加入哪个房间.

现在我从文档中看到有一个Join和Disconnect方法可以挂钩将某人放入一个组,但是看起来Join除了查询字符串之外没有与之关联的上下文,所以我有点困惑至于什么触发了Join,正如我所期望的那样,它将是客户端上的一个手动触发的方法,通过一些对象提供关于放入它们的空间的上下文,因为你可以拥有数百个私人房间.

那么如何为Join方法提供一些上下文和断开连接,让他们知道您要求加入的空间,就好像它不是手动触发的,如何设置查询字符串,如果是手动触发,为什么可以你不发送自定义对象.即

public Task Join()
{
    var groupName = Context.QueryString["some-room-identifier"];
    return Groups.Add(Context.ConnectionId, groupName);
}
Run Code Online (Sandbox Code Playgroud)

VS

public Task Join(string groupName)
{
    return Groups.Add(Context.ConnectionId, groupName);
}
Run Code Online (Sandbox Code Playgroud)

所以我错过了一些东西,或者是否有某种方法可以为加入的用户提供上下文,以便将它们放在正确的位置?

.net asp.net signalr

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

将数组传递给自定义MSBuild任务

我认为这很简单但后来意识到我无法在任何地方找到任何信息.

我有这样的自定义任务:

public class MyCustomTask : Task
{
    [Required]
    public string[] SomeStrings {get;set;}

    public override bool Execute()
    {
        // Do something with strings...
    }
}
Run Code Online (Sandbox Code Playgroud)

匹配的MSBuild东西基本上是这样的:

<UsingTask TaskName="MyCustomTask" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildBinPath)\Microsoft.Build.Tasks.v4.0.dll">
    <ParameterGroup>
      <SomeStrings ParameterType="System.String[]" Required="true" />
    </ParameterGroup>
    <Task>
    ... 
    </Task>
</UsingTask>

<Target Name="DoSomething">
    <MyCustomTask SomeStrings="????" />
</Target>
Run Code Online (Sandbox Code Playgroud)

不知道在SomeStrings参数中放什么,想想也许它会理解我是否做了"xxx,xxx,xxx"所以任何人都可以对此有所了解.基本场景很像标记,所以我需要一个字符串列表然后一些比较字符串,所以我需要传入2个列表/数组,但只是难倒.

c# msbuild msbuild-task

6
推荐指数
2
解决办法
7803
查看次数

城堡温莎3与构造函数参数作为字符串

我以前从未使用过Windsor但是已经使用过其他DI框架,而且我现在有一个相当奇怪的问题.

我有一个工厂类,它的构造函数中包含一个字符串,但每当我尝试解析该对象时,我得到一个异常说:

Handler for System.String was not found.

<Message>Handler for System.String was not found.</Message>
<StackTrace>at Castle.MicroKernel.Resolvers.DefaultDependencyResolver
     .TryGetHandlerFromKernel(DependencyModel dependency, CreationContext context) 
     in d:\60b7fa65294e7792\src\Castle.Windsor\MicroKernel\Resolvers\DefaultDependencyResolver.cs:line 403
at Castle.MicroKernel.Resolvers.DefaultDependencyResolver.ResolveCore(CreationContext context, ComponentModel model, DependencyModel dependency) in d:\60b7fa65294e7792\src\Castle.Windsor\MicroKernel\Resolvers\DefaultDependencyResolver.cs:line 270</StackTrace>
<Type>Castle.MicroKernel.Handlers.HandlerException</Type>
</InnerException>
<Message>Missing dependency.
Component SomeExampleFactory has a dependency on System.String, which could not be 
resolved.
Make sure the dependency is correctly registered in the container as a service, or 
provided as inline argument.</Message>
Run Code Online (Sandbox Code Playgroud)

该类看起来像:

public interface IDummyFactory
{
    void DoSomething();
}

public class DummyFactory : IDummyFactory …
Run Code Online (Sandbox Code Playgroud)

.net dependency-injection castle-windsor

6
推荐指数
2
解决办法
8553
查看次数

使用带有多个html页面的phonegap和jquery移动设备的正确方法

我有一个使用jquery mobile的应用程序,它包含几个html页面,每个页面都有一些jquery页面元素.在桌面浏览器上它一切正常但是当我在我的Android设备上加载它(运行2.3)时,第一页看起来很好,但每当你点击一个链接时(比如说来自index.html - > logged-in-menu.html jquery移动设备似乎没有启动,也没有应用任何样式.如果我从当前页面返回到index.html,那么index.html将保持原样.

那么在不同的html页面之间移动是否有正确的方法?我没有得到任何浏览器错误,所以一切似乎都工作正常,但没有应用jqm的样式或功能.

只是所有人都在同一页面上,链接使用data-ajax ="false",因此它们会导致完整的页面刷新(因为这是必需的),应用程序无法作为单个页面应用程序工作,因此将所有内容放入一个大的html中文件不是一个选项.

jquery jquery-mobile cordova

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

使用环境d.ts模块的Typescript ES6模块语法

所以我们假设我有一个50个文件模块,每个模块包含:

export class <SomeClassName> { /* content */ }

然后,我创建一个根文件,通过重新导出所有文件来简化使用.所以它看起来像:

export * from "./src/some-class-1";
export * from "./src/some-class-2";
export * from "./src/some-class-3";
// etc
Run Code Online (Sandbox Code Playgroud)

然后,我通过TSC运行它来执行一个"常用"模块,目标是"es5",带有描述符输出.

到现在为止还挺好.我有我package.json的名字my-module目标输出index.js作为我的模块的入口点.所以我现在决定在另一个打字稿项目中使用这个模块.

所以我为它做了npm安装(让我们假装)npm install my-module并且它全部拉入,所以我现在有生成的d.ts文件,我有实际的commonjs模块,所以我可以使用它.一切似乎都很好.

然后是问题所在.然后我决定使用该模块:

import {SomeClass1} from 'my-module'

它在TS世界中爆炸,它不知道与什么my-module有关,好像我们回去看看输出的index.js,它不包含环境模块.

所以这就是问题,通用模块通常在包含模块名称时使用package.json作为参考点,但是TS使用d.ts文件.所以我认为好吧,我需要将我的重新导出包装index.ts在一个模块中,所以我尝试:

export module "my-module" { /* all other re-exports */ }

但事实证明,您只能为环境模块使用字符串模块名称,并且您只能将它们放在d.ts文件中,但是我的d.ts文件是从现有代码库生成的.

所以这是我的困境,我可以手动进入并declare module "my-module为我的d.ts 添加一个包装器,但它不是非常自动化,或者我喜欢使用ES6语法的博客文章做并相对引用文件最终会有很多import {blah} from "../node_modules/my-module/dist/index"希望我们都同意的是有点傻.

所以我找不到任何其他可以在自动化世界中工作的方法,因为当你使用ES6语法时,关于这个主题的所有博客文章和文档都使用相对文件导入,而不是从整个事物编译和共享时的导入通过d.ts文件.

那么有没有办法将我的再出口包装在文本模块名称中?或者至少告诉index.d.ts包含环境模块?(记住它会为项目中的每个文件输出一个d.ts文件,但我们只关心通过index.d.ts导入模块,因为它会重新导出所有内容).

typescript tsc

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

带有ES3输出的Typescript ES7描述符?

在查看问题后,似乎TS 应该支持ES3和装饰器,我有一个场景,我在typescript中有一个使用装饰器和目标ES5的现有代码库,但我现在需要显然支持需要ES3的IE6.

现在根据:https: //github.com/Microsoft/TypeScript/issues/4681

似乎应该支持ES3,但是如果我输出到目标ES3,我得到:

error TS1241: Unable to resolve signature of method decorator when called as an expression. Supplied parameters do not match any signature of call target.

我得到0个错误,一切都在ES5中运行,所以你需要做任何事情才能让它在ES3中运行,或者它是否只是不受支持?

以下是该问题的云9示例:

https://ide.c9.io/grofit/knockout-decorators-es3-example

只需gulp在命令行上运行,如果将tsconfig目标更改为es5,它将起作用.

javascript typescript

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

Ninject的OnActivation何时被解雇?

我确信这是一个愚蠢的问题,因为我假设答案是"当对象由Ninject实例化时"......但我想仔细检查......

为了给出更多关于我为什么问这个问题的背景,我有一个实现NinjectHttpApplication的asp mvc应用程序.但是在OnApplicationStarted覆盖中,我需要在Ninject中绑定的单例实例上激活方法.

问题是内核是暴露的,但不应该用作服务定位器,所以我可以从中获取对象并调用DoSomeSetup(); 方法,但这似乎是一个失败.据我所知,NinjectHttpApplication实例不是DI,因为Global.asax文件直接使用它,所以我不能将它直接用于应用程序.

这给我留下了另外一个选项,即添加OnActivation(x => x.DoSomeSetup()); 调用绑定,但是这个对象只在某些地方使用,所以它不像第一次加载页面时控制器需要它,所以如果OnActivation等待创建第一个实例,它可能不会发生一会儿.

希望那不要太混乱:)

ninject

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

Teamcity powershell runner可在服务器上远程运行命令

我有一个奇怪的问题,每当我尝试远程调用我们的测试服务器时,TeamCity就会挂起.

目前构建步骤是:

  • 模板文件
  • 编译代码
  • 包项目
  • 将包发送到测试服务器
  • 在测试服务器上解压缩包

现在一切正常,直到最后一个阶段,解压缩远程服务器上的包.现在我想运行一个powershell命令来连接并运行命令然后退出.如果我从远程桌面使用PowerShell,并且提供的用户凭据是正确的,这一切都正常.

正在运行的示例如下:

$password = ConvertTo-SecureString "%PasswordVar%" -AsPlainText -Force
$credentials = New-Object System.Manager.Automation.PsCredential("%UsernameVar%", $password)
etsn -computername %TestServer1Var% -Credential $credentials
Run Code Online (Sandbox Code Playgroud)

当这称为TeamCity只是挂起时,它必须手动停止或它将永远保持在代理上的这一步骤.我试过不使用凭据,我试过不使用etsn并使用完整的命令名称,也尝试了其他远程命令方法,似乎没有任何工作.

那么有没有办法让TeamCity实际运行命令?或者找出导致它无限期地处理这一步骤的原因?

powershell teamcity remote-server

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

在快速响应对象上获取 cookie 数据?

我只是在做一些 API 测试,并且试图验证发送下来的 cookie 数据是否正确,但是我找不到任何有关从响应对象获取 cookie 的文档,只能从请求中获取 cookie。

那么有没有一种快速的方法可以像处理请求一样执行此操作req.cookies["myCookie"],我知道我可以获取标头并从那里获取 set-cookie,但尝试从那里手动解析 cookie 数据有点混乱。

cookies node.js express supertest

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

在npm3中使用devDependencies满足peerDependencies

因此,NPM 3已经删除了自动解析对等依赖关系,这很好,但是如果我在其他地方使用应用程序来开发插件/库,如果我在peerDependencies这里使用底层库这是正确的概念,则意味着如果有人想要要在该库上工作,他们需要手动解决所有依赖项.

因此,我没有让他们这样做,而是将相同的依赖项放入devDependencies以满足本地开发场景,这似乎是合乎逻辑的,因此任何使用它的人都需要明确地满足对等体,任何开发库的人都将获得免费的对等依赖性.这个devDependencies.

所以问题是,这有什么不对吗?因为我能找到关于如何以peerDependencies任何自动方式合理处理NPM3的信息.

===更新===

正如评论中所提到的,当我尝试这样做时,它与早期版本的npm不兼容,因此npm> = 3.0可以正常使用这种方法并且它自动满足标准,开发人员可以检查npm install并提高工作效率,如果你是在早期版本的NPM上做到这一点,它就会在未满足的同级依赖项中爆炸,似乎无法正常工作.

我发布这个,因为我希望这与早期版本的不兼容在某种程度上归结为我的无能,所以我既可以支持那些只想npm install在这个软件包上开发它的人的开发,也可以支持以前的版本.因此,如果您知道更好的方法或解决此问题或其他问题,请介绍一下.

javascript node.js npm

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