我试图找到两条路径之间的差异.我已经找到了一个解决方案,但我并不高兴,即使它有效.有没有更好/更简单的方法来做到这一点?
var firstPath = '/my/first/path'
, secondPath = '/my/first/path/but/longer'
// what I want to get is: '/but/longer'
// my code:
var firstPathDeconstruct = firstPath.split(path.sep)
, secondPathDeconstruct = secondPath.split(path.sep)
, diff = []
secondPathDeconstruct.forEach(function(chunk) {
if (firstPathDeconstruct.indexOf(chunk) < 0) {
diff.push(chunk)
}
})
console.log(diff)
// output ['but', 'longer']
Run Code Online (Sandbox Code Playgroud) 我有一些C#代码使用.NET框架中的Xml.Schema类来处理XML模式.各种简单类型限制在框架中被抽象为从Xml.Schema.XmlSchemaFacet派生的一大堆类.除非有一些我错过的东西,否则知道给定方面的哪个派生方面类型的唯一方法是推测性地将其转换为其中一个,在失败的情况下捕获结果的InvalidCastOperation.这样做会让我有一个非常难看的功能:
private void NavigateFacet(XmlSchemaFacet facet)
{
try
{
handler.Length((XmlSchemaLengthFacet)facet);
}
catch(InvalidCastException)
{
try
{
handler.MinLength((XmlSchemaMinLengthFacet)facet);
}
catch(InvalidCastException)
{
try
{
handler.MaxLength((XmlSchemaMaxLengthFacet)facet);
}
catch(InvalidCastException)
{
...
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我认为必须有更优雅的方法来做到这一点; 要么使用我从.NET框架中遗漏的一些属性,要么使用一些聪明的OO技巧.任何人都可以开导我吗?
我正在使用包含许多HTML资源的Visual Studio C++项目.它们由一个如下所示的方法加载:
LPCTSTR loadHTML(HMODULE hModule, LPCTSTR sResourceName)
{
HRSRC hResource = FindResource(hModule, sResourceName, RT_HTML);
if(!hResource)
return 0;
HGLOBAL hResourceData = LoadResource(hModule, hResource);
if(!hResourceData)
return 0;
return reinterpret_cast<LPCTSTR>(LockResource(hResourceData));
}
Run Code Online (Sandbox Code Playgroud)
大多数时候,这很好.但有时,它会返回与另一个资源连接的资源.当发生这种情况时,它在该构建中是一个持久性问题.我可以通过向相关资源添加一些空行然后重建项目来"修复"它.即使资源没有改变,它也会定期发生.
我很想知道为什么会发生这种情况.还有其他人遇到过吗?我的资源是否有一些特殊的东西导致问题?我的代码错了吗?
可悲的是,我不愿在这里发布示例资源; 它们很长,这是专有软件.
我已经阅读了一些关于Node.js 0.8中引入的集群模块的内容,但我不确定如何(或者我是否应该)将其应用于我在Express上运行的网站.我有一个漂亮的vanilla Express设置:由Hogan.js呈现的模板,由Stylus编译的CSS,没有websockets或花哨的中间件.
使用群集模块可以获得显着的性能提升吗?
如果是这样,如何最好地在标准Express项目中使用集群?
node.js ×2
.net ×1
c# ×1
express ×1
node-cluster ×1
refactoring ×1
resources ×1
try-catch ×1
visual-c++ ×1
winapi ×1
xsd ×1