小编aka*_*vel的帖子

作为委托的构造函数 - 它可能在C#中吗?

我有一个类如下:

class Foo
{
  public Foo(int x) { ... }
}
Run Code Online (Sandbox Code Playgroud)

我需要传递一个像这样的委托的方法:

delegate Foo FooGenerator(int x);
Run Code Online (Sandbox Code Playgroud)

是否可以直接将构造函数作为FooGenerator值传递,而无需键入:

delegate(int x) { return new Foo(x); }
Run Code Online (Sandbox Code Playgroud)

编辑:对于我个人使用,问题涉及.NET 2.0,但欢迎3.0 +的提示/响应.

c# constructor delegates

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

Kubernetes client-go:watch.Interface vs. cache.NewInformer vs. cache.NewSharedIndexInformer?

我需要我的 Go 应用程序来监控Kubernetes 集群中的一些资源并对它们的变化做出反应。基于大量的文章和例子,我似乎找到了一些方法;然而,我对 Kubernetes 比较陌生,而且它们的描述对我来说太复杂了,以至于我仍然无法理解它们之间的区别——因此,知道使用哪个,所以我不要出现一些意外的行为......具体来说:

  1. watch.Interface.ResultChan()- (通过收购如rest.Request.Watch()) -这似乎已经让我对变化做出反应发生在一个资源,通过提供Added/ Modified/Deleted事件;
  2. cache.NewInformer()— 当我实现 a 时cache.ResourceEventHandler,我可以将它作为最后一个参数传递:

    cache.NewInformer(
            cache.NewListWatchFromClient(clientset.Batch().RESTClient(), "jobs", ...),
            &batchv1.Job{},
            0,
            myHandler)
    
    Run Code Online (Sandbox Code Playgroud)

    -那么,该myHandler对象将接收OnAdd()/ OnUpdate()/OnDelete()电话。

    对我来说,这似乎或多或少相当于ResultChan我在上面的 (1.) 中得到的;一个区别是,显然现在我得到了资源的“之前”状态作为奖励,而ResultChan我只会得到它的“之后”状态。

    此外,IIUC,这实际上是以某种方式建立在watch.Interface上面提到的(通过NewListWatchFromClient)的基础上——所以我想它带来了一些价值,和/或修复了原始watch.Interface?

  3. cache.NewSharedInformer()并且cache.NewSharedIndexInformer()—— (呃,哇,现在这些都是一口……)我试图挖掘 godocs,但我觉得我不懂的术语完全超负荷,以至于我似乎无法掌握微妙之处(?)“常规”之间的差异NewInformerNewSharedInformerNewSharedIndexInformer...

有人可以帮助我理解 …

kubernetes kubernetes-go-client

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

适用于C标准库的全面开源测试套件

我正在寻找一个C标准库测试套件(主要用于不接触"外面的世界"的算法,因此strcpy(),memcmp(),itoa()和喜欢).

我尝试下载GCC源代码,但它们非常大,我很难找到任何我可以在那里重用的内容......

(很明显,问题是关于ANSI C标准库,而不是POSIX或者其他.另外,我希望测试相当便携.)

c open-source unit-testing libc standard-library

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

是否可以用Red编写Windows DLL?

我想为一些Windows应用程序编写一个插件,它必须是一个DLL.我真的很想尝试红色和红色/系统混合.但是在SO上询问Rebol&Red聊天室时,我对红色和红色/系统,红色/系统目前是否可能有不同的反应.什么是明确的答案?

red red-system

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

vim errorformat中一些高级模式的含义是什么?(%s,%+,%\\ @ =)

我试过阅读:help errorformat和谷歌搜索(主要是stackoverflow),但无法理解那里提到的一些模式:

  • %s- "指定要搜索的文本以找到错误行.[...]"
    • 嗯,首先,试着理解这句话,我在哪里把"文字搜索",在%s?之后?在它之前?或者,我不知道,这可能会污染整个模式吗?WTF?
    • 其次,这个模式实际上做了什么,它与模式中的常规文本有什么不同,比如某种类型set efm+=,foobar?这里的"foobar"对我来说也是"要搜索的文字"......:/
  • %+- 例如,我在一个问题中看到过类似的东西:%+C%.%#
    • 是否意味着整条线将附加到%m早期/后期多线模式中使用?如果是的话,那么如果没有%.%#(== regexp .*),但是,让我们说,%+Ccont.: %.%#- 那样的东西可以捕获cont.:字符串后的东西%m吗?
    • 还有,有什么之间的区别%C%.%#,并%+C%.%#%+G
    • 还有,有什么之间的区别%A%+A,或%E%+E
  • 最后,Python的示例以:help errorformat-multi-line下列字符结尾:%\\@=%m- WTF的%\\@=意思是什么?

我非常感谢帮助理解这些东西.

vim errorformat

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

预处理器#if语句的工具/解析器?

我的工作包含许多预处理许多C-的源文件#if,#elseif#else报表.

这些陈述经常检查a #define,例如

#if(Switch_TestMode == Switch_TestModeON)
/* code 1 */
#else
/*code 2 */
#endif
Run Code Online (Sandbox Code Playgroud)

通常,这些预处理程序语句位于c-if语句中,这使得源代码对于人类来说几乎是不可读的.

#define用于此预处理程序#if语句的s 在额外文件中定义.

我现在的想法是有一个工具来检查这个#defined开关设置,然后只复制使用当前#define/switch设置应用的源代码行.

对于上面的例子,我想获得一个仅包含的新.c文件

/*code 2 */
Run Code Online (Sandbox Code Playgroud)

假定#defineSwitch_TestMode是不等于Switch_TestModeON.

是否有工具(免费软件||低成本)可以完成这项工作?或者我是否必须为此编写自己的预处理器解析器?

(我不可能使用执行此工作的特殊参数来运行编译器,因为我们公司正在创建另一家公司正在编译的C源代码.)

谢谢你的提示!

问候

托马斯

c c++ parsing preprocessor

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

一个目录(同一级别)中的多个存储库 - 是否可能?

我最初的问题是我有一个编写各种脚本的目录.它们中的每一个都独立于其他人,通常是一个文件长.我想对它们应用一些版本控制,但我有以下问题/要求:

  1. 不想每个小脚本存储在一个单独的目录中!
  2. 不想将它们全部存储在一个存储库 OTOH中,因为它们完全不相关,并且:
    • 其中一些可能会后来增长到更多的文件(然后他们将需要一个单独的目录),
    • 我有时想将其中一个复制到另一台机器上(我想克隆整个仓库).
  3. 从(分布式)版本控制机制中受益 - 至少:
    • "无限"的修订数量,
    • 能够在不同的计算机上克隆存储库,
    • 能够进行"原子"多文件提交.

可能吗?
我更喜欢在一些主流的分布式VCS中使用它(使用Mercurial的解决方案会更好,但我不是固定的).

编辑:解决方案必须是免费的(至少"在啤酒中")和跨平台(至少是Win32和Linux).

相关,但没有帮助:

version-control

7
推荐指数
2
解决办法
3635
查看次数

WinAPI调用访问没有驱动器号的USB存储?

我注意到,有些USB存储设备没有在Windows中注册为常规驱动器,因为它们甚至没有分配驱动器号.因此,我无法使用标准文件操作C API显然访问它们.

我可以使用什么WinAPI调用在这些奇怪的设备上执行一些正常的文件操作 - 所以:

  • 查找/枚举这些设备,
  • 浏览设备上的文件/目录树并获取一些文件统计信息(大小,修改日期等),
  • 读/写文件内容,
  • 创建/删除文件/目录?

此外,已知/调用这些类型的设备/协议的一般关键字是什么?

windows winapi usb-drive wpd

7
推荐指数
2
解决办法
3767
查看次数

Web 浏览器是否以不同的方式缓存具有子资源完整性 (SRI) 的资源?

我认为在资源上指定资源完整性哈希应该允许网络浏览器积极地缓存,并且基本上总是重用资源的本地副本。

是否在浏览器中实施(或至少“计划实施”)对 SRI 资源的更强缓存因此,例如点击“[刷新页面]”按钮仍然会使浏览器重用缓存的资源?或者不是?如果不是,那么是不是因为一些重要的原因?或者只是“还没有,但也许有一天”?

browser browser-cache subresource-integrity

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

如何编写一个使用字符串迭代器的trait方法,避免单态化(静态调度)?

我想定义一个具有操作字符串序列的方法的特征.同时,我想避免在特征中使用泛型方法,即静态调度,以便我可以将此特征用作特征对象.到目前为止,我给出的最佳解决方案是如下所示:

pub trait Store {
    fn query_valid_paths(&mut self, paths: &mut dyn Iterator<Item = &str>) -> Vec<String>;
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,它并不完美:

  1. 它开箱即用,仅适用于迭代器&str; 对于迭代器来说String,例如Vec<String>,我必须使用以下魔法map咒语来调用它,这真的很难看,而且在没有帮助的情况下我永远不会把它发明为新手:

    // `vec` is a std::vec::Vec<String>
    store.query_valid_paths(&mut vec.iter().map(|s| &**s));
    
    Run Code Online (Sandbox Code Playgroud)
  2. 它需要一个Iterator,但我喜欢,如果我可以采取IntoIterator.换句话说,我希望能够像这样调用它:

    store.query_valid_paths(&vec);
    
    Run Code Online (Sandbox Code Playgroud)

可能吗?

尝试失败1

基于关于使用字符串迭代器的函数的一个更简单的问题,我想像这样的东西可以工作:

pub trait Store {
    fn query_valid_paths<S>(&mut self, paths: impl IntoIterator<Item = S>) -> Vec<String>
    where
        S: AsRef<str>;
}
Run Code Online (Sandbox Code Playgroud)

但这似乎使它成为"通用方法",触发静态调度......

尝试失败2

我被提出了另一个关于Rust不和谐的想法,特别是:

pub trait Store {
    fn query_valid_paths_inner(&mut self, paths: &mut dyn …
Run Code Online (Sandbox Code Playgroud)

rust

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