即我有:
Environment.SpecialFolder.ApplicationData
Environment.SpecialFolder.CommonApplicationData
Environment.SpecialFolder.LocalApplicationData
我不清楚这些是在Windows XP和/或Windows Vista中指出的.
到目前为止,我发现ApplicationData指向XP中当前用户的ApplicationData文件夹和Vista中的漫游应用程序数据文件夹.
我还想知道是否有关于何时使用的一般指导原则.
由于我的Mac具有不区分大小写的文件系统案例,因此在本地运行测试时不会捕获相关的拼写错误,但是在运行Linux的构建服务器上它们会失败.
例如:在Lion上运行时require('./mymodule')
会发现./myModule.js
,但在Linux上运行时则不会.
因为我想让测试在本地失败以便不破坏服务器上的构建,所以我正在寻找一种方法来使node.js需要更严格,因为如果文件名是不精确(即套管有差异).
有谁知道这样做的方法?
编辑:
由于这个问题似乎没有很好的解决方案,因此我创建了valiquire.
此工具验证在整个nodejs项目中找到的所有需求,同时确保外壳正确.
是否有一个vim插件,脚本或功能,允许扩展vim搜索,以便在我连续输入大写字母时匹配骆驼字的单词?
这是一个澄清的例子:
让我们说我在寻找WordInQuestion
.
我希望能够只是键入/wiq
才能找到它.
作为一个额外的奖励,如果我能通过getWordInQuestion
键入找到/gwiq
这意味着我要找的单词的第一个字母可能是小写,那将是很好的.
我有一个SQLite数据库.
我创建了表格并填充了大量数据.
然后我通过删除并重新创建表来清除数据库.我确认所有数据都已删除,并且使用SQLite Administrator查看表是空的.
问题是数据库文件(*.db3)的大小在清除后保持不变.
这当然是不可取的,因为我希望在我清除它之后重新获得数据占用的空间.
有没有人做出类似的观察和/或知道发生了什么?
可以做些什么呢?
我通过Prism指导工作,并认为我掌握了他们的大多数通信工具.
命令非常简单,因此很明显DelegateCommand仅用于将View与其模型连接起来.
当涉及交叉模块通信时,特别是何时使用EventAggregation而不是复合命令时,它有点不太清楚.
实际效果是相同的,例如
两者都按照"发射并忘记"的方式工作,即他们在触发事件/执行命令后不关心其订户的任何响应.
我很难看到使用中的实际差异,虽然我知道两者(引擎盖下)的实现是非常不同的.
那么我们应该想一想它的实际含义 - 事件?是什么事情发生(事件发生)?用户没有像"完成网页请求"那样直接请求的内容?
和命令?这是否意味着用户点击了某些东西,从而向我们的应用程序发出命令,直接请求服务?
是吗?或者是否有其他方法可以确定何时使用其中一种通信工具而不是另一种.该指南虽然是我读过的最好的文件之一,却没有给出具体的解释.
因此,我希望参与/使用棱镜的人可以帮助揭示这一点.
我有一个课程,通过PRISMs事件聚合器订阅一个事件.
由于这里提到的模拟事件聚合器有点困难,我只是实例化一个真实聚合器并将其传递给被测系统.
在我的测试中,我然后通过该聚合器发布事件,然后检查我的测试系统如何对它做出反应.由于事件将在生产期间由FileSystemWatcher引发,我想通过订阅UIThread来使用自动分派,因此我可以在引发事件后更新我的UI.
问题是,在测试期间,除非我没有订阅UIThread,否则事件永远不会在被测系统中被注意到.
我正在使用MSpec进行测试,我通过TDD.Net从VS2008内部运行.添加[RequiresSta]
到我的测试类没有帮助
有没有人有一个解决方案,这使我免于在测试期间更改ThreadOption(例如通过属性 - 这是一个丑陋的黑客)???
我试图复制一些C#代码,它创建IObservable
一个Button.Click
事件.我想将此代码移植到F#.
这是原始的C#代码,它编译时没有错误:
Observable.FromEvent<RoutedEventHandler, RoutedEventArgs>(
h => new RoutedEventHandler(h),
h => btn.Click += h,
h => btn.Click -= h))
Run Code Online (Sandbox Code Playgroud)
这是我在F#中做同样失败的尝试:
Observable.FromEvent<RoutedEventHandler, RoutedEventArgs>(
Func<EventHandler<RoutedEventArgs>, RoutedEventHandler>(fun h -> RoutedEventHandler(h)),
Action<RoutedEventHandler>(fun h -> btn.Click.AddHandler h),
Action<RoutedEventHandler>(fun h -> btn.Click.RemoveHandler h))
Run Code Online (Sandbox Code Playgroud)
除了声明的第二行,一切都很愉快.
F#编译器抱怨,fun h -> RoutedEventHandler(h)
因为它不希望除了h
作为RoutedEventHandler
构造函数的参数.
另一方面,C#编译器似乎没有接受的问题 h => new RoutedEventHandler(h)
有趣的是,在两个代码示例(C#和F#)中,类型h
都是EventHandler<RoutedEventArgs>
.
我从F#编译器获取的错误消息是:
错误2此表达式应该具有类型obj - > RoutedEventArgs - > unit但这里有类型EventHandler
RoutedEventHandler
我在PresentationCore中找到的签名是:
public delegate void RoutedEventHandler(object sender, RoutedEventArgs e);
正如您所看到的,它确实需要一个object …
假设我创建了一个类型如下:
data RequestAck =
RequestAck { ackOK :: Word32, ackMsgCode :: Word32 }
Run Code Online (Sandbox Code Playgroud)
我可以看到它是2*4字节大,并使其在某处保持不变.
唯一的问题是,一旦我在类型中添加了一个字段,我就必须记得更新我的常量.
是否有一个功能可以为我提供给定类型的大小,例如t -> Int
?
接近我想要的功能是
gsize :: Data a => a -> Int
在Data.Generics.Schemes模块中,但我不想让我的类型成为一个实例Data
.
那里有更通用的解决方案吗?
可以肯定的是,我正在寻找一个对静态类型进行操作的函数,例如,我不想传递实例,而是传递类型本身.
自从我开始以测试/行为驱动的方式开发以来,我欣赏能够模拟每个依赖项.
由于像Moq这样的模拟框架在被告知模拟界面时效果最好,我现在几乎为每个创建b/c的类实现一个接口,最有可能我最终必须在测试中模拟它.好吧,无论如何,编程到接口是很好的做法.
有时,我的类依赖于.Net类(例如FileSystemWatcher,DispatcherTimer).在这种情况下,拥有一个接口会很棒,所以我可以依赖于IDispatcherTimer,以便能够传递一个模拟并模拟其行为,以查看我的被测系统是否正确反应.
不幸的是,上面提到的两个类都没有实现这样的接口,所以我不得不求助于创建适配器,除了继承原始类并且符合接口之外什么也不做,然后我可以使用它.
以下是DispatcherTimer和相应接口的适配器:
using System;
using System.Windows.Threading;
public interface IDispatcherTimer
{
#region Events
event EventHandler Tick;
#endregion
#region Properties
Dispatcher Dispatcher { get; }
TimeSpan Interval { get; set; }
bool IsEnabled { get; set; }
object Tag { get; set; }
#endregion
#region Public Methods
void Start();
void Stop();
#endregion
}
/// <summary>
/// Adapts the DispatcherTimer class to implement the <see cref="IDispatcherTimer"/> interface.
/// </summary>
public class DispatcherTimerAdapter : DispatcherTimer, IDispatcherTimer
{
}
Run Code Online (Sandbox Code Playgroud)
虽然这不是世界末日,但我想知道,为什么.Net开发人员没有花时间让他们的类从get开始实现这些接口.这让我很困惑,因为现在微软内部的良好实践有很大的推动力. …
我只是在阅读 R. Martin和M. Martin的C#中的敏捷原则,模式和实践,并在他们的书中建议将所有接口保存在一个单独的项目中,例如.接口.
举个例子,如果我有一个包含所有自定义Gui类的Gui项目,我会将它们的接口保留在Interfaces项目中.具体来说,我在Gui中有一个CustomButton类,我会在Interfaces中保留ICustomButton 接口.
优点是,任何需要ICustomButton的类都不需要引用Gui本身,而只需要更轻量级的Interfaces项目.
此外,如果Gui项目中的一个类发生更改并因此导致它被重建,则只有直接引用CustomButton的项目才需要重新编译,而引用ICustomButton的项目可能保持不变.
我理解这个概念,但看到一个问题:
可以说我有这个界面:
public interface ICustomButton
{
void Animate(AnimatorStrategy strategy);
}
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,它指的是AnimatorStrategy,它是一个具体的类,因此会坐在不同的项目中,我们称之为动画.现在接口项目需要引用动画.另一方面,如果Animation使用Interfaces中定义的接口,则需要引用它.
循环依赖 - "我们来了".
我看到,这个问题的唯一解决方案是,接口中定义的所有方法都接受本身作为接口的输入.试图实现这一点,很可能会产生多米诺骨牌效应,并且很快就需要为最基本的类实现接口.
我不知道我是否愿意在开发中处理这种开销.
有什么建议?