小编Chr*_*vic的帖子

搜索维护的二进制差异/补丁工具或库

我正在寻找一个可执行文件(或者一个可以嵌入到 C# 中或通过托管 C++ 嵌入到 C# 项目中的库)来为两个文件夹及其内容创建二进制差异文件,以及一个用于应用这些补丁文件以及针对 Windows 的补丁工具。

这篇SO 帖子引用了各种工具,例如bsdiff/bspatch,它已经过时了。不过,此处提供的第 3 方可执行文件在尝试时不起作用。与原始版本不兼容的另一个变体如下。不幸的是,它依赖于 bzlib 和某些 Linux 头文件,并且我无法真正在 Visual Studio 下进行相应的设置。

不管怎样,所有工具和帖子都有大约 8-10 年的历史,我想知道目前维护了哪些工具和库,我可以看看。

windows binary diff patch

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

使用 fp-ts 重写一个用记录器包装的小函数

我想尝试使用 fp-ts 重写代码的某些部分,并考虑重构以下方法:

export const createApiServer = () => {
    logger.info("Starting World Server API");

    const apiServer = express()
        // 3rd party middleware
        .use(helmet())
        .use(bodyParser.json())
        .use(cors())
        // Root route
        .get("/", (_, result) => result.sendStatus(httpStatusCodes.OK))
        // 404 - Not Found
        .use((_, result) => result.sendStatus(httpStatusCodes.NOT_FOUND))
        // 500 - Internal Server Error
        .use(errorLoggerMiddleware)
        .use(errorResponseMiddleware);

    logger.verbose(`Initialized World Server API in ${process.uptime().toFixed(3)} seconds`);

    return apiServer;
};
Run Code Online (Sandbox Code Playgroud)

在阅读了IO副作用类型后,我尝试按如下方式使用它:

const info = (message: string) => new IO(() => log.info(message));
const verbose = (message: string) => new …
Run Code Online (Sandbox Code Playgroud)

typescript fp-ts

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

C stdlib/stdio的阴影函数

我正在写一个游戏,现在我能够通过类及其方法实现文件系统sqlite.为了让生活更容易我已经打算写像一些功能fopen,fclose,fread,rename,等能够影子基础功能,并直接把我的给我的文件系统调用,而不是原来的一个.对于前三个功能,一切都适合我使用这些原型:

File *fopen(String _Filename, String _Mode); // i have my own optimized File struct

void fclose(File *_File);

size_t fread(String *_DstBuf, size_t _ElementSize, size_t _Count, File *_File);

这工作正常,因为我要么返回另一个结构或参数除了a File*而不是a FILE*,但重命名函数似乎有点棘手!

int rename(String _OldFilename, String _NewFilename);

这几乎是相同的原型.除了我使用std::string(typedef'ed String)比const char*!知道我怎么能说服我的编译器使用我的函数或忽略stdio-one?

c++ file-io std stdio shadowing

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

C++强随机数生成器 - 必要吗?

我最新的项目是基于文本的RPG的开发,现在我需要一个随机数生成器,一个很好的计算器,可以在不同的情况下计算是否可以执行某些操作而不会出现问题.我们每个人都知道,基本功能std::srandstd::rand简单易用的算法来计算伪随机值.但是我希望有真实值而不是伪值.因此,我想问一下,使用比上述解决方案更好的解决方案是否会过分夸大并坚持基础; 如果没有,你会建议什么?如何实现这样一个"好的发电机"?

c++ random algorithm generator

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

F#类型和基本计算的动态评估

试着习惯F#我尝试了一些小例子,我的下一步是为逻辑计算/评估编写一些函数,现在我有了这个结构

type Expr =
    | True
    | False
    | Not of Expr
    | And of Expr * Expr
Run Code Online (Sandbox Code Playgroud)

它应该是显而易见的我想达到的目标:能够封装喜欢不同的功能Not,并And像一个计算中使用And(And(True, Not(False)), True),但目前我不明白(这是我第一次wrinting这种"复杂"的功能代码)如何使用这个结构并编写正确的方法,例如我可以编写用于评估

let evalLogic (expr : Expr) : bool =
    match expr with
    | True  -> true
    | False -> false
    | _     -> false (* eval the expression which is not "atomic" *)
Run Code Online (Sandbox Code Playgroud)

然后作为一种方法

let And (left : Expr , right : Expr ) : Expr =
    let value = evalLogic(left) && evalLogic(right)
    match …
Run Code Online (Sandbox Code Playgroud)

logic f# expression functional-programming expression-trees

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

编译器拒绝两个相同的模板特化

我使用两个辅助结构来处理智能指针和向量

template<typename T>
struct Pointer {
    typedef shared_ptr<T> type;
};

template<typename T>
struct Vector {
    typedef vector<T, allocator<T>> type;
};
Run Code Online (Sandbox Code Playgroud)

在这种情况下,表达是显而易见的

is_same<
    vector<
        shared_ptr<T>,
        allocator<shared_ptr<T>>>,
    Vector<
        Pointer<T>::type>::type>
::value
Run Code Online (Sandbox Code Playgroud)

收益真实.但是我现在有一个模板化的函数(实际上是一个oparator),在使用Vector<Pointer<T>::type>::type或通常时处理不同vector:

// (1) General version
template<typename T>
Foo& operator&(T& object);

// (2a) Specialized version
template<typename T>
Foo& operator&(vector<shared_ptr<T>, allocator<shared_ptr<T>>>& object);

// (2b) Specialized version which does not work
template<typename T>
Foo& operator&(typename Vector<typename Pointer<T>::type>::type& object);
Run Code Online (Sandbox Code Playgroud)

在我的代码中使用(2a)时调用此运算符按预期工作.然而,当我用(2b)替换(2a)时,编译器/链接器尝试将调用与(1)匹配,这对我产生链接错误,因为(1)没有定义/对于向量有效.为什么编译器对(2a)和(2b)的处理方式不同?

c++ templates stl typedef template-specialization

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