我试图根据给定路径中包含的所有目录中的模式删除文件.我有以下但它就像一个无限循环.当我取消循环时,不会删除任何文件.我哪里错了?
def recursive_delete (dirPath, pattern)
if (defined? dirPath and defined? pattern && File.exists?(dirPath))
stack = [dirPath]
while !stack.empty?
current = stack.delete_at(0)
Dir.foreach(current) do |file|
if File.directory?(file)
stack << current+file
else
File.delete(dirPath + file) if (pattern).match(file)
end
end
end
end
end
# to call:
recursive_delete("c:\Test_Directory\", /^*.cs$/)
Run Code Online (Sandbox Code Playgroud) 我正在努力学习如何进行单元测试和模拟.我理解TDD和基本测试的一些原理.但是,我正在考虑重构下面的代码,这些代码是在没有测试的情况下编写的,并且我试图了解它是如何更改以使其可测试的.
public class AgentRepository
{
public Agent Select(int agentId)
{
Agent tmp = null;
using (IDataReader agentInformation = GetAgentFromDatabase(agentId))
{
if (agentInformation.Read())
{
tmp = new Agent();
tmp.AgentId = int.Parse(agentInformation["AgentId"].ToString());
tmp.FirstName = agentInformation["FirstName"].ToString();
tmp.LastName = agentInformation["LastName"].ToString();
tmp.Address1 = agentInformation["Address1"].ToString();
tmp.Address2 = agentInformation["Address2"].ToString();
tmp.City = agentInformation["City"].ToString();
tmp.State = agentInformation["State"].ToString();
tmp.PostalCode = agentInformation["PostalCode"].ToString();
tmp.PhoneNumber = agentInformation["PhoneNumber"].ToString();
}
}
return tmp;
}
private IDataReader GetAgentFromDatabase(int agentId)
{
SqlCommand cmd = new SqlCommand("SelectAgentById");
cmd.CommandType = CommandType.StoredProcedure;
SqlDatabase sqlDb = new SqlDatabase("MyConnectionString");
sqlDb.AddInParameter(cmd, "AgentId", DbType.Int32, …Run Code Online (Sandbox Code Playgroud) 我正在努力将应用程序从MVC3升级到MVC4,并注意到我认为(希望?)会"正常工作"的东西.
码:
[OutputCache(Duration = 600, VaryByParam = "none")]
public ActionResult Index()
{
return View();
}
Run Code Online (Sandbox Code Playgroud)
这是ASP.Net的教科书缓存示例.每当浏览器点击页面时,它会检查缓存以查看是否存在某些内容,如果没有则生成视图,然后发送缓存的结果.
这很好用; 但是,在使用MVC4的Mobile视图功能时,我注意到上面的代码没有检查请求是否来自移动设备.因此,如果我在桌面上点击该路线,桌面视图将显示在我的手机上,直到缓存无效.反之亦然(如果我首先使用手机点击页面,则桌面将会看到移动视图).
是否有一个参数可以用来使我的工作像我希望的那样,或者我正在构建一个客户OutputCacheProvider?
我最近越来越多地潜入Node.js和托管服务,如Heroku和Nodejitsu,并一直试图找出如何最好地为postgres或mysql部署数据库更改.
我可以看到npm下的一些迁移项目; 然而,所有似乎都是真正的马车或只是不工作.我目前在npm上管理Monarch迁移项目,但它本身就是错误的,我开发此类实用程序的经验是使用其他更多程序的语言.
那么人们用什么来在这些环境中部署对数据库的更改呢?什么对人有用?
我正在寻找更好地了解当前情况/过程的样子.
在我的代码中,我有以下对象:
在我正在进行的项目中,ErrorManager需要使用ConfigManager实例提取配置信息,而ConfigManager使用ErrorManager时会发生错误.
目前,我在代码中执行以下操作:
ErrorManager _errorManager = new CustomErrorManager();
ConfigManager _configManager = new CustomConfigManager(_errorManager);
_errorManager.SetConfigurationManager(_configManager);
Run Code Online (Sandbox Code Playgroud)
有没有办法让我清理这个依赖关系的循环引用?
在我深入研究这个问题之前,我知道nDjango和MonoRail; 然而,这些项目似乎缺乏.
我想知道的是,如果在.Net世界中有一个解决方案,它具有以下功能,就像Rails在Ruby或Django中用于Python一样.我知道工具可以做多件事,但如果有一个统一的解决方案,我很好奇.
有很多选项可以涵盖这些方面中的一个或多个,但.Net中有哪些内容涵盖了所有这些方面?
谢谢
我一直困扰着一个问题大约一个星期,现在我只求助于“是否有可能提出问题”。
其他语言可以连接到使用.Net的WCF 4框架编写的Web服务吗?
WCF几年前首次出现时(在.Net v3.0 / winfx下),我能够使用basicHttpBindings将Java客户端连接到它。但是,尝试在最新,最好的版本下做同样的事情让我想知道是否有可能。我可以从Visual Studio随附的Cassini Web服务器创建WSDL,但总是被告知格式不正确。当我将其与来自ASMX服务的WSDL(有效)进行比较时,两者有很大的不同。
是否有人用WCF 4创建了Web服务,并能够使用非.Net语言甚至使用WSDL.exe之类的东西来连接到Web服务?
我有以下Sql查询返回我想要的结果类型:
SELECT b.ID, a.Name, b.Col2, b.COl3
FROM Table1 a
LEFT OUTER JOIN Table2 b on b.Col4 = a.ID AND b.Col5 = 'test'
Run Code Online (Sandbox Code Playgroud)
实质上,如果表2中没有条件'test',那么我希望列出等于Table1(a)的行,同时列出表2(b)中的数据或NULL.
我对LLBLGen比较陌生,并尝试过一些东西而且没有用.如果条件存在,我可以让它工作; 但是,当需求发生变化并导致我将查询重写为上述内容时,我感到很茫然.
以下是适用于现有产品的旧LLBLGen C#代码,但不适用于上述查询:
LookupTable2Collection table2col = new LookupTable2Collection();
RelationCollection relationships = new RelationCollection();
relationships.Add(LookupTable2Entity.Relations.LookupTable1EntityUsingTable1ID, JoinHint.Left);
IPredicateExpression filter = new PredicateExpression();
filter.Add(new FieldCompareValuePredicate(LookupTable2Fields.Col5, ComparisonOperator.Equal, "test"));
table2col.GetMulti(filter, relationships);
Run Code Online (Sandbox Code Playgroud)
表1中有3条记录.即使表2中的所有项都为NULL,我也需要返回3条记录,因为条件不存在.有任何想法吗?
我有以下代码:
$("#Table1 tbody").children().each(function(e){
$(this).bind('click',
function(){
// Do something here
},
false)
});
Run Code Online (Sandbox Code Playgroud)
Table1 html表有2列; 一个用于名称,一个用于<button>元素.
当我点击表格行时,它工作正常.当我点击按钮时,按钮代码触发; 但是,行代码也是如此.
如何过滤选择器以使按钮不会触发父元素的单击事件?
我有以下字符串:
This *is* a *test*!
Run Code Online (Sandbox Code Playgroud)
我想加粗由*字符包围的单词(在示例中为"is"和"test").
我有以下JavaScript代码:
var data = "This *is* a *test*!";
return data.replace(/\*(.*)\*/g, <b>$1</b>);
Run Code Online (Sandbox Code Playgroud)
返回字符串后,我得到以下内容:
This <b>is* a *test</b>!
Run Code Online (Sandbox Code Playgroud)
如何更改模式或基本代码以便按照我想要的方式进行更换?
c# ×2
javascript ×2
.net ×1
asp.net ×1
asp.net-mvc ×1
database ×1
dependencies ×1
deployment ×1
django ×1
jquery ×1
llblgenpro ×1
migration ×1
mocking ×1
node.js ×1
rake ×1
recursion ×1
regex ×1
replace ×1
ruby ×1
sql ×1
sql-server ×1
unit-testing ×1
wcf ×1