小编Bar*_*klı的帖子

Husky 4.x+ 不适用于 Visual Studio Git

Husky用 4.0.0 改变了它的路径处理。在此更改后,它会在从 Visual Studio提交时引发以下错误:

husky > pre-commit (node v12.12.0)/c/path/to/repo/node_modules/.bin/lint-staged: 
line 5: cygpath: command not foundinternal/modules/cjs/loader.js:797 throw err;

^Error: Cannot find module 'C:\lint-staged\bin\lint-staged.js' 
 at Function.Module._resolveFilename (internal/modules/cjs/loader.js:794:15) 
 at Function.Module._load (internal/modules/cjs/loader.js:687:27)
 at Function.Module.runMain (internal/modules/cjs/loader.js:1025:10) 
 at internal/main /run_main_module.js:17:11 { code: 'MODULE_NOT_FOUND', requireStack: []}

husky > pre-commit hook failed 
(add --no-verify to bypass)
Run Code Online (Sandbox Code Playgroud)

但是,从 CLI提交时,它按预期工作。鉴于错误消息'C:\lint-staged\bin\lint-staged.js'作为文件路径,我假设 Visual Studio 以不同方式处理路径。

我试图找到一种方法来在 Visual Studio 中完成这项工作。我在企业环境中,所以我希望有一种方法可以在存储库中包含此配置(而不是需要手动本地设置)。

我的 package.json 中包含了 husky 配置

...
"husky":{
    "hooks":{ "pre-commit": "lint-staged"}
},
"lint-staged":{
    "!(*.min.*)js": "eslint …
Run Code Online (Sandbox Code Playgroud)

git husky visual-studio-2019

14
推荐指数
1
解决办法
8500
查看次数

通过值将shared_ptr传递给lambda会泄漏内存

我有以下代码:

void MyClass::onOpenModalBtnClicked() {
    uiManager->load(L"data/ui/testmodal.json");
    std::shared_ptr<UIElement> modal = uiManager->getElementById("loginModal");

    if(modal) {
        modal->getElementById("closeButton")->onClicked = [modal]() {
            modal->hide();
        };
    }
}
Run Code Online (Sandbox Code Playgroud)

这个工作正常,点击按钮时模态关闭,onClickedstd::function.

我的应用程序开头也有这个:

#if defined(DEBUG) | defined (_DEBUG)
    _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
#endif
Run Code Online (Sandbox Code Playgroud)

这会在应用程序终止时打印出内存泄漏.

使用上面的代码我得到了很多内存泄漏,如果我将代码更改为以下代码,它们都会消失:

void MyClass::onOpenModalBtnClicked() {
    uiManager->load(L"data/ui/testmodal.json");
    std::shared_ptr<UIElement> modal = uiManager->getElementById("loginModal");

    if(modal) {
        modal->getElementById("closeButton")->onClicked = [this]() {
            uiManager->getElementById("loginModal")->hide();
        };
    }
}
Run Code Online (Sandbox Code Playgroud)

我假设传递in shared_ptr值会使ref计数增加1,然后这个引用永远不会超出范围,或者在报告mem泄漏后它超出范围.所以我在使用shared_ptr之后尝试在lambda中调用reset但是后来我得到了这个编译错误:

Error 1 error C2662: 'void std::shared_ptr<_Ty>::reset(void) throw()' : cannot convert 'this' pointer from 'const std::shared_ptr<_Ty>' to 'std::shared_ptr<_Ty> &'

所以问题是如何使用捕获modal而不是那些内存泄漏?

编辑: 所以我通过添加 …

c++ lambda shared-ptr

13
推荐指数
1
解决办法
9350
查看次数

std :: function在VS2012中没有编译

我正在尝试编译从这里获取的以下代码,但我收到编译错误.有没有人有任何想法可能是错的?

代码

#include <iostream>
#include <functional>

struct Foo {
    Foo(int num) : num_(num) {}
    void print_add(int i) const { std::cout << num_+i << '\n'; }
    int num_;
};


int main()
{
    // store a call to a member function
    std::function<void(const Foo&, int)> f_add_display = &Foo::print_add;
    Foo foo(314159);
    f_add_display(foo, 1);
}
Run Code Online (Sandbox Code Playgroud)

编译错误:

Error   1   error C2664: 'std::_Func_class<_Ret,_V0_t,_V1_t>::_Set' : 
cannot convert parameter 1 from '_Myimpl *' to 'std::_Func_base<_Rx,_V0_t,_V1_t> *' 
Run Code Online (Sandbox Code Playgroud)

谢谢.

c++ visual-c++ c++11 visual-studio-2012

10
推荐指数
1
解决办法
4227
查看次数

如何将错误对象传递给socket.io回调

我正在使用socket.io回调

客户代码:

socket.emit('someEvent', {data:1}, function(err, result) {
    console.log(err.message); 
});
Run Code Online (Sandbox Code Playgroud)

服务器代码:

socket.on('someEvent', function(data, callback) {
    callback(new Error('testing error'));
});
Run Code Online (Sandbox Code Playgroud)

使用上面的代码,客户端总是打印出来undefined.如果我将服务器端代码更改为以下内容,则可以看到错误消息.

socket.on('someEvent', function(data, callback) {
    callback({message:'testing error'});
});
Run Code Online (Sandbox Code Playgroud)

我可以将自己的自定义对象传递给客户端,只是没有错误对象.有任何想法吗?

javascript node.js socket.io

10
推荐指数
1
解决办法
2442
查看次数

转到visual studio中的定义代码不起作用

我试图在https://code.visualstudio.com/docs/languages/javascript后为nodejs项目设置visual studio代码

我在我的根文件夹中创建了一个包含内容的jsconfig.json文件

{
  "compilerOptions": {
    "target": "ES5", //tried ES6 as well
    "module": "commonjs"
  }
}
Run Code Online (Sandbox Code Playgroud)

此文件告诉VS Code您正在编写符合ES5的代码,并且您要使用的模块系统是commonjs框架.通过设置这些选项,您可以开始编写引用其他文件中的模块的代码.例如,在app.js中我们需要./routes/index模块,它导出一个Express.Router类.如果在路由上调出IntelliSense,则可以看到Router类的形状.

虽然它似乎不适用于vscode 0.9.1.我在自己的模块上没有智能感知.转到定义也不起作用.

https://code.visualstudio.com/docs/runtimes/nodejs#_great-code-editing-experiences

有没有办法去定义工作?

node.js visual-studio-code

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

本地计时器对象事件处理程序

我在类函数中有以下代码:

public function foo():void
{
    var timer:Timer = new Timer(10000,1);
    timer.addEventListener(TimerEvent.TIMER_COMPLETE,onTimerComplete);
    timer.start();
}

public function onTimerComplete(e:TimerEvent):void
{
  // do stuff
}
Run Code Online (Sandbox Code Playgroud)

上面的代码大部分时间都可以工作,但我担心的是如果计时器被垃圾收集会发生什么?是否有可能onTimerComplete永远不会触发,因为没有其他对计时器的引用?

我知道计时器有一个内部处理程序列表,但不会让它不被GC控制.

apache-flex flash actionscript-3

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

将指针存储在std :: vector中会破坏它的连续内存存储的优势

std::vector将它的元素连续存储在内存中而不是std::list.这样可以std::vector在遍历元素时提供更好的性能,因为在迭代a时,所有内容都整齐地打包在内存中std::list.

问题是大多数时候我将智能指针存储在向量中用于多态或用于与代码的其他部分共享这些对象.由于现在每个对象都是动态分配的,我假设它们最终位于不同的内存位置.这是否打败了使用a std::vector并基本上将其变成类似的东西的目的std::list?有什么办法可以解决这个问题吗?

c++ containers

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

MongoDB文本搜索按多个字段过滤

我有以下文件结构。

{
   content: 'cat dog bird',
   uid: <another_unique_id>
   cid: <another_unique_id>
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试搜索此集合,并希望通过uid和/或过滤结果cid。我要运行的一些查询:

1) db.mycollection.find({uid: '1', cid: '2', $text: {$search: 'cat'}});         
2) db.mycollection.find({cid: '2', $text: {$search: 'cat'}});
3) db.mycollection.find({uid: '1', $text: {$search: 'cat'}});
4) db.mycollection.find({$text: {$search: 'cat'}});
//etc...
Run Code Online (Sandbox Code Playgroud)

我试图创建这样的复合索引

db.mycollection.ensureIndex({uid: 1, cid: 1, content: 'text'});
Run Code Online (Sandbox Code Playgroud)

但这仅适用于查询#1,如果我不提供其中一个字段,则会收到以下错误。

planner returned error: failed to use text index to satisfy $text query (if text index is compound, are equality predicates given for all prefix fields?)
Run Code Online (Sandbox Code Playgroud)

我尝试过的其他方法:

  1. uid/ cid= …

mongodb mongodb-query

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

时间:2019-05-11 标签:c++std::bind保持对象活着

这是代码,它非常简单。

class Foo
{
public:
    void print()
    {
        std::cout<<"Foo::print\n";
    }
}; 


Game::Game()
{
    {
        Foo foo;
        player.onclick = bind(&Foo::print,foo);

    }
    player.onclick();
}
Run Code Online (Sandbox Code Playgroud)

内部作用域完成后, foo 对象超出了作用域,但仍然调用了打印方法,我猜这是因为玩家持有对 foo 对象的引用?有没有办法阻止这种情况发生?我不希望对象在应该被销毁时保持活动状态并接收事件。

谢谢。

c++ c++11

4
推荐指数
1
解决办法
1922
查看次数

使用DirectXMath获得2点之间距离的最佳方法是什么

使用新的XMVECTOR和XMFLOAT3类,获得2点之间距离的最佳方法是什么?我找不到在XMVector*系列函数中执行此操作的函数,因此我想出了以下内容:

float distance(const XMFLOAT3& v1,const XMFLOAT3& v2)
{
    XMVECTOR vector1 = XMLoadFloat3(&v1);
    XMVECTOR vector2 = XMLoadFloat3(&v2);
    XMVECTOR vectorSub = XMVectorSubtract(vector1,vector2);
    XMVECTOR length = XMVector3Length(vectorSub);

    float distance = 0.0f;
    XMStoreFloat(&distance,length);
    return distance;
}
Run Code Online (Sandbox Code Playgroud)

这会比普通的Vector3类更快,只有3个浮点数用于x,y,z,然后使用sqrt,因为它使用内在优化?即:

float Distance(const Vector3& point1,const Vector3& point2)
{
    float distance = sqrt( (point1.x - point2.x) * (point1.x - point2.x) +
                            (point1.y - point2.y) * (point1.y - point2.y) +
                            (point1.z - point2.z) * (point1.z - point2.z) );
    return distance;
}
Run Code Online (Sandbox Code Playgroud)

c++ directx direct3d xna-math-library direct3d11

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