小编cas*_*rad的帖子

如何清理远程git仓库中的垃圾

我最近遇到了Bitbucket repo的大小限制.我跟着无数其他问题回答了如何清理你的git repo并最终使用BFG来删除一些糟糕的提交.

这很好用,但是,我注意到在运行git计数后,垃圾中有大量的空间.所以我运行了一个简单的git gc.然而,这没有什么可以清理垃圾.

经过一番挖掘后,我找到了以下命令:

git -c gc.reflogExpire=0 -c gc.reflogExpireUnreachable=0 -c gc.rerereresolved=0 \
-c gc.rerereunresolved=0 -c gc.pruneExpire=now gc "$@"
Run Code Online (Sandbox Code Playgroud)

运行此操作导致垃圾在本地清理.但是,我仍然有远程回购的问题.我现在需要让Bitbucket在我的远程仓库上运行此命令,还是有办法将此更改推送到存储库?

git bitbucket

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

Project子目录作为静态文件的根目录

ASP.NET MVC的新手,我使用Visual Studio 2013向导创建Web应用程序.它创建从哪里静态文件供应几个文件夹:Content,Scripts,等.

其他语言的框架(例如TurboGears)只有静态内容的显式目录,消除了提供页面源代码而不是处理它的风险,这是PHP站点的典型配置错误.

然而,ASP.NET很乐意在应用程序的根目录中提供任何内容,例如http://localhost:1740/Project_Readme.html,只要它具有正确的扩展名.只有Views文件夹受保护Web.config.

如何将应用程序配置为使用除项目根目录之外的其他目录来获取静态文件.例如,如果文件favicon.ico被放入子目录中Content,它应该可以访问http://localhost:1740/favicon.ico,但除了Content控制器返回之外,没有任何内容在目录之外.

在此目录中不应该执行任何操作,也就是说,如果将*.cshtml文件放入此目录,则应将文件的内容(源代码)作为传递text/plain.

最终的应用程序将mod_mono在Linux上运行.

asp.net-mvc routes

12
推荐指数
2
解决办法
2131
查看次数

即使我将 Expires 设置为 null,为什么 JWT 仍包含 EXP 声明?

我需要不朽的 JWT 令牌。当然,我可以为 Expires 设置一些大的值,但我更喜欢在我的令牌中根本没有 exp 声明。标准.net core CreateEncodedJwt允许在expires、notBefore、issuedAt中传递null。我为所有这些传递 null,并且我的令牌包含 exp 令牌(+1 小时)。到底是怎么回事?!

var securityKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes("FF804E8A-2A0E-4F94-A6F5-8325822F8DF5"));

var claims = new List<Claim>
{
    new Claim("type1", "value1"),
    new Claim("type2", "value2")

};

var token = new JwtSecurityTokenHandler().CreateEncodedJwt(
    issuer: null,
    audience: null,
    subject: new ClaimsIdentity(claims),
    notBefore: null,
    issuedAt: null,
    expires: null,
    signingCredentials: new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256));
Run Code Online (Sandbox Code Playgroud)

这是解析工具: https: //jwt.io

这是我的令牌:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0eXBlMSI6InZhbHVlMSIsInR5cGUyIjoidmFsdWUyIiwibmJmIjoxNTY1NDI5MzY2LCJleHAiOjE1NjU0MzI5NjYsImlhdCI6MTU2NTQyOTM2Nn0.U vJiOQNO_yMzdenf5jAotPHj7zrcEUApraezzcVSicA

里面是这样的:

{“类型1”:“值1”,“类型2”:“值2”,“nbf”:1565429366,“exp”:1565432966,“iat”:1565429366}

请帮助摆脱 nbf、exp、iat。提前致谢!

c# jwt asp.net-core

6
推荐指数
1
解决办法
2889
查看次数

子指令如何导致无效指针读取?

我有一个崩溃转储与此代码:

mov     r11,rsp
push    rdi
sub     rsp,0A0h
mov     qword ptr [rsp+30h],0FFFFFFFFFFFFFFFEh
Run Code Online (Sandbox Code Playgroud)

这是一个功能的序幕.所以,!analyze -vINVALID_POINTER_READ与指令sub.AMD指令集表示,sub如果参数不是内存指针,则指令不会产生任何异常.

而且,READ_ADDRESSffffffffffffffff的,但在寄存器窗口,我可以看到rsp12b3e0.这是64位操作系统中的32位应用程序.

我想知道这个错误的可能原因以及如何解决它.

UPD:

方法是Microsoft Visual Studio 9.0\VC\include\xtree中的std._Tree.insert(const value_type&_Val).

编译器是来自Visual Studio 2008安装的cl.exe,32位,版本15.00.30729.01.

命令行:

 /FD /EHsc /MD /GS- /Zc:wchar_t- /Yu"stdafx.h"/W3 /WX /nologo /c /Zi /TP /wd4250 /FI -Zm200 -MP -w34100 -w34189
Run Code Online (Sandbox Code Playgroud)

链接器来自同一来源,版本9.00.30729.01.

UPD:对于那些对使用64位调试器调试32位应用程序持怀疑态度的人,我运行了32位版本的调试器并得到了相同的结果.所以,我仍然认为这是sub指令.

UPD:澄清:该应用程序是为32位平台构建的.但处理器操作系统64位的.因此,在转储中我们可以看到具有32位值的64位寄存器,这并不奇怪.

windows assembly x86-64 crash-dumps

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

在C++/Qt中获取特定于平台的行尾字符

是否有任何东西可以为任何平台获得正确的行尾符号?我的意思是,\n如果我想将EOL编写到文件中,我可以用于Windows和Unix,但是\r\n如果我在二进制数据中进行搜索,这也是很重要的.

所以,我需要像Environment.NewLineC#这样的东西,它应该是一些类而不是技巧#ifdef Q_OS_WIN32....

用例是从QTextStream所有数据中读取并按新行拆分.无论如何,如果QTextStream或者QString::split足够聪明,可以\n在任何平台上正确处理,我想知道我问过的事情.

c++ qt cross-platform

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

VS2013更新3令人难以置信的慢 - devenv.exe !! IsAssertEtwEnabled有罪的线程

VS2013更新3速度非常慢,我正在撕裂我的头发.

从Process Explorer看,IsAssertEtwEnabled看起来像我的CPU和al一样有趣;所以有很多文件访问正在进行.

IsAssertEtwEnabled做了什么以及可能导致这种情况的原因是什么?

哦,在安全模式下一切正常.但是我已经禁用了所有扩展功能而无需卸载,但它仍然很慢.

干杯,

詹姆士

visual-studio visual-studio-2013

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

更快地解析代码文件

我为基于堆栈的语言编写了一个相当复杂的解析器,它将文件加载到内存中,然后通过比较令牌来查看它是否被识别为操作数或指令.

每次我必须解析一个新的操作数/指令我std::copy将内存从文件缓冲区转移到a std::string然后执行`

if(parsed_string.compare("add") == 0) { /* handle multiplication */} 
else if(parsed_string.compare("sub") == 0) { /* handle subtraction */ } 
else { /* This is an operand */ }
Run Code Online (Sandbox Code Playgroud)

不幸的是,所有这些副本都使解析速度变慢.

我应该如何处理这个以避免所有这些副本?我一直认为我不需要一个tokenizer,因为语言本身和逻辑非常简单.

编辑:我正在添加代码,我获取各种操作数和指令的副本

  // This function accounts for 70% of the total time of the program
  std::string Parser::read_as_string(size_t start, size_t end) {

    std::vector<char> file_memory(end - start);
    read_range(start, end - start, file_memory);
    std::string result(file_memory.data(), file_memory.size());
    return std::move(result); // Intended to be consumed
  }

  void Parser::read_range(size_t start, size_t size, …
Run Code Online (Sandbox Code Playgroud)

c++ string parsing c++11

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

获取随机打开的端口进行测试

我正在使用REST API服务运行一些集成测试.
问题是,有时硬编码端口在下次测试开始时不是空闲的.因为它是由先前的测试打开的,并且尚未被系统关闭.

我使用OWIN,应用程序在下一次测试开始时关闭.

你能否建议我一个很好的方法来确定系统上的自由端口,而无需提前打开并关闭它?或者说这是不可能的.

因为系统尚未释放它,就像它已经发生的那样.

.net c# windows networking owin

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

获取 C# 中的分配总数

有没有办法获得分配的总数(注意 - 分配的数量,而不是分配的字节数)?它可以是针对当前线程的,也可以是全局的,以更容易的为准。

我想检查特定函数分配了多少对象,虽然我知道调试 -> 性能分析器 (Alt+F2),但我希望能够从我的程序内部以编程方式进行。

// pseudocode
int GetTotalAllocations() {
    ...;
}    
class Foo {
    string bar;
    string baz;
}
public static void Main() {
    int allocationsBefore = GetTotalAllocations();
    PauseGarbageCollector(); // do I need this? I don't want the GC to run during the function and skew the number of allocations
    // Some code that makes allocations.
    var foo = new Foo() { bar = "bar", baz = "baz" };
    ResumeGarbageCollector();
    int allocationsAfter = GetTotalAllocations();
    Console.WriteLine(allocationsAfter - allocationsBefore); …
Run Code Online (Sandbox Code Playgroud)

c# garbage-collection allocation etw .net-core-3.1

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

如何在给定时间每天发出Qt信号?

我需要通知一些对象在新的一天开始清除它们的缓存.所以,我可以创建QTimer或类似的东西,并检查现在午夜+ 5ms与否的每一个ms,但这对我来说不是一个好主意.是否(在QT中)有任何标准机制可以在不分配任何新对象的情况下获得有关此事件的通知?自应用程序初始化(如qApp)以来静态或生存的东西?在这种情况下,你需要在00:00做什么,你会做什么?

UPD:我正在寻找足够快的解决方案.快速意味着我需要尽可能快地清除插槽中的容器,因为容器中的午夜数据变得无效.因此,有一些其他计时器每隔100毫秒拍摄一次,它试图从容器中获取数据.我需要在任何可能的访问尝试之前清除容器中包含无效数据.

time qt

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