如何设置Karma来运行我的后端单元测试(用Mocha编写)?如果我将后端测试脚本添加到files = [],则说明require未定义.
我们开发商业应用程序.我们的客户要求提供自定义字段支持.例如,他们想要在Customer表单中添加一个字段.
存储字段值的已知设计模式和有关字段的元数据有哪些?
我现在看到这些选项:
选项1:将varchar类型的Field1,Field2,Field3,Field4列添加到我的Customer表中.
选项2:在customer表中添加一个XML类型的列,并将自定义字段的值存储在xml中.
选项3:添加CustomerCustomFieldValue表,其中包含varchar类型的列,并在该列中存储值.该表还有一个CustomerID,一个CustomFieldID.
CustomerID, CustomFieldID, Value
10001, 1001, '02/12/2009 8:00 AM'
10001, 1002, '18.26'
10002, 1001, '01/12/2009 8:00 AM'
10002, 1002, '50.26'
Run Code Online (Sandbox Code Playgroud)
CustomFieldID将是另一个名为CustomField的表中的ID,其中包含以下列:CustomFieldID,FieldName,FieldValueTypeID.
选项4:添加CustomerCustomFieldValue表,其中包含每个可能值类型的列,并在右列中存储值.与#3类似,但使用强类型列存储字段值.
CustomerID, CustomFieldID, DateValue, StringValue, NumericValue
10001, 1001, 02/12/2009 8:00 AM, null, null
10001, 1002, null, null, 18.26
10002, 1001, 01/12/2009 8:00 AM, null, null
10002, 1002, null, null, 50.26
Run Code Online (Sandbox Code Playgroud)
选项5:选项3和4使用特定于单个概念(客户)的表.我们的客户也要求以其他形式提供自定义字段.我们应该有一个系统范围的自定义现场存储系统吗?因此,我们不是拥有多个表,例如CustomerCustomFieldValue,EmployeeCustomFieldValue,InvoiceCustomFieldValue,而是拥有一个名为CustomFieldValue的表?虽然对我来说似乎更优雅,但这不会导致性能瓶颈吗?
你使用过这些方法吗?你成功了吗?你会选择什么方法?你知道我应该考虑的任何其他方法吗?
此外,我的客户希望自定义字段能够引用其他表中的数据.例如,客户可能想要向客户添加"收藏付款方式"字段.付款方式在系统的其他地方定义.这带来了"外键"的主题.我是否应该尝试创建约束以确保存储在自定义字段表中的值是有效值?
谢谢
======================
编辑07-27-2009:
谢谢您的回答.似乎方法列表现在非常全面.我选择了选项2(单个XML列).这是目前最容易实施的.我可能不得不折射更强烈定义的方法,因为我的要求会变得更复杂,并且支持的自定义字段的数量会变得更大.
我需要在分号上分割这样的字符串.但我不想拆分字符串('或')内的分号.我没有解析文件;只是一个没有换行符的简单字符串.
part 1;"this is ; part 2;";'this is ; part 3';part 4;this "is ; part" 5
结果应该是:
我想这可以用正则表达式完成,但如果没有; 我对另一种方法持开放态度.
我希望我的窗口只能在我的应用程序中的所有其他窗口之上.如果我设置窗口的TopMost属性,它将变为所有应用程序的所有窗口之上,我不希望这样.
我正在开发一个具有自己外观和感觉的网络应用程序.我想使用jQuery Mobile仅支持触摸事件.
当我链接jquery.mobile.min.js(没有链接css),然后我的页面布局被打破.
如何配置(初始化)jQuery Mobile以仅使用触摸事件支持?我是否会在jQuery文档就绪钩子中绑定事件,因为我没有任何与JQM页面相关的事件?
编辑
在jsfiddle中查看此示例:http://jsfiddle.net/redhotsly/JGgrw/.html包含一个<button>但jQuery Mobile在<span>其左侧创建了一个.如果检查生成的标记(F12),您将看到jQuery Mobile还在我的按钮中添加了一个CSS类.
编辑:
我需要一个解决方案,我不会修改JQM脚本.我需要使用CDN上的官方脚本.
当我的服务执行时,许多类将需要访问User.Current(这是我自己的User类).我可以安全地将_currentUser存储在[ThreadStatic]变量中吗?WCF是否重用其线程?如果是这种情况,它什么时候会清理ThreadStatic数据?如果使用ThreadStatic不安全,我应该把数据放在哪里?在OperationContext.Current中有一个地方可以存储那种数据吗?
编辑12/14/2009:我可以断言使用ThreadStatic变量是不安全的.WCF线程位于线程池中,并且ThreadStatic变量从不重新初始化.
我在rev 2048上有一个中央仓库的克隆.我想删除我当地仓库中的最后10个变更集,好像我两周前回来了.我想我可以删除我的本地仓库,"hg clone -rev 2038"但这样做会很长(克隆仓库需要几分钟).有没有办法只是"取消"一些变更集?
笔记:
在最近的一次代码审查中,我在一个类中发现了几行重复逻辑(少于15行).当我建议作者重构代码时,他认为代码更容易理解.在再次阅读代码后,我不得不同意提取重复的逻辑会稍微损害可读性.
我知道DRY是指南,而不是绝对的规则.但总的来说,你是否愿意以DRY的名义伤害可读性?
我有一个如下所示的目录结构:
C:\folderA\folderB\folderC\client1\f1\files
C:\folderA\folderB\folderC\client1\f2\files
C:\folderA\folderB\folderC\client2\f1\files
C:\folderA\folderB\folderC\client2\f2\files
C:\folderA\folderB\folderC\client3\f1\files
C:\folderA\folderB\folderC\client4\f2\files
Run Code Online (Sandbox Code Playgroud)
我想复制c:\ tmp \中的f1文件夹的内容来获取它
C:\tmp\client1\f1\files
C:\tmp\client2\f1\files
C:\tmp\client3\f1\files
Run Code Online (Sandbox Code Playgroud)
我试过这个:
Copy-Item -recur -path: "*/f1/" -destination: C:\tmp\
Run Code Online (Sandbox Code Playgroud)
但它复制内容而不正确复制结构.
我的应用程序有问题:在某些时候,SynchronizationContext.Current对主线程变为null.我无法在一个孤立的项目中重现同样的问题.我的真实项目很复杂; 它混合使用Windows窗体和WPF并调用WCF Web服务.据我所知,这些都是可以与SynchronizationContext交互的系统.
这是我孤立项目的代码.我真正的应用程序做了类似的事情.但是,在我的实际应用程序中,执行继续任务时,主线程上的SynchronizationContext.Current为null.
private void button2_Click(object sender, EventArgs e)
{
if (SynchronizationContext.Current == null)
{
Debug.Fail("SynchronizationContext.Current is null");
}
Task.Factory.StartNew(() =>
{
CallWCFWebServiceThatThrowsAnException();
})
.ContinueWith((t) =>
{
//update the UI
UpdateGUI(t.Exception);
if (SynchronizationContext.Current == null)
{
Debug.Fail("SynchronizationContext.Current is null");
}
}, CancellationToken.None,
TaskContinuationOptions.OnlyOnFaulted,
TaskScheduler.FromCurrentSynchronizationContext());
}
Run Code Online (Sandbox Code Playgroud)
什么可能导致主线程的SynchronizationContext.Current变为null?
编辑:
@Hans要求堆栈跟踪.这里是:
at MyApp.Framework.UI.Commands.AsyncCommand.HandleTaskError(Task task) in d:\sources\s2\Framework\Sources\UI\Commands\AsyncCommand.cs:line 157 at System.Threading.Tasks.Task.c__DisplayClassb.b__a(Object obj) at System.Threading.Tasks.Task.InnerInvoke() at System.Threading.Tasks.Task.Execute() at System.Threading.Tasks.Task.ExecutionContextCallback(Object obj) at System.Threading.ExecutionContext.runTryCode(Object userData) at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData) at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, …
c# ×2
wpf ×2
coding-style ×1
dry ×1
jquery ×1
karma-runner ×1
mercurial ×1
mocha.js ×1
node.js ×1
powershell ×1
python ×1
refactoring ×1
regex ×1
topmost ×1
wcf ×1
winforms ×1