小编Joh*_*ren的帖子

C++匿名变量

为什么这不起作用?

 0. #define CONCAT(x, y) x ## y
 1. 
 2. #define VAR_LINE(x) \
 3.     int CONCAT(_anonymous, __LINE__) = x
 4. 
 5. #define VAR_LINE2(x) \
 6.     int _anonymous ## x = 1
 7.
 8. int main()
 9. {
10.     VAR_LINE(1);
11.     VAR_LINE(1);
12.     VAR_LINE(1);
13.     VAR_LINE2(__LINE__);
14. }
Run Code Online (Sandbox Code Playgroud)

上述宏观扩张的结果

int _anonymous__LINE__ = 1;
int _anonymous__LINE__ = 1;
int _anonymous__LINE__ = 1;
int _anonymous13 = 1;
Run Code Online (Sandbox Code Playgroud)

如果我不必将该__LINE__宏写为参数,那将会很方便.

我认为这个问题非常清楚.我希望能够生成匿名变量,以便在同一范围内声明多个变量时,此宏不会因重定义错误而失败.我的想法是使用预定义的__LINE__宏,因为不会像这样在同一行上声明变量.但宏观扩张困扰我,你能帮忙吗?

更新:正确答案

感谢Luc Touraille.但是,建议的解决方案存在一个小问题.操作数和##运算符之间必须有空格(显然标准说明不然,但如果运算符和操作数之间没有空格,则PS3风格的GCC不会正确扩展宏).

#define _CONCAT(x,y) x ## y
#define CONCAT(x,y) …
Run Code Online (Sandbox Code Playgroud)

c++ c-preprocessor

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

动画和逻辑

我有一个问题不一定特定于任何平台或API,但更具体到动画之间代码中的交互.

游戏就是一个很好的例子.假设玩家死了,并且在删除对象之前必须完成死亡动画.对于许多情况来说,这是典型的,在这种情况下,某些动画必须在继续执行通常会遵循的动作之前完成.你会怎么做呢?

我的问题是关于动画的控制和逻辑.您如何设计一个能够驱动动画但同时实现自定义行为的系统?

通常出现的问题是游戏逻辑和动画数据变得相互依赖.也就是说,动画必须回调代码或以某种方式包含动画序列持续时间的元数据.更常见的问题是,当一个动画必须触发一些其他代码时,比如在1.13s之后产生一个自定义精灵,这往往会导致代码和动画的深度嵌套.带有计时器的炸弹就是逻辑和动画的例子,两者都互动,但我想让它们尽可能分开.

但是你要做些什么来保持动画和代码两个不同的东西?

最近我一直在尝试mgrammar,我在想,DSL可能是最好的选择.这将允许动画或动画制作者以一种可能安全的方式表达某些事物,然后进入内容管道......

animation

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

解耦视图,演示文稿和ASP.NET Web窗体

我有一个ASP.NET Web窗体页面,演示者需要填充控件.这种交互对页面生命周期有点敏感,我想知道是否有一个技巧,我不知道.

我想要对整个事情保持实用,但不要牺牲可测试性.

目前我有这个:

public interface ISomeContract
{
    void InstantiateIn(System.Web.UI.Control container); 
}
Run Code Online (Sandbox Code Playgroud)

这个契约依赖于System.Web.UI.Control,我需要能够使用ASP.NET Web Forms编程模型.但是视图和演示者都不了解ASP.NET服务器控件.

我该如何解决这个问题?如何在我的具体视图中使用ASP.NET Web窗体编程模型而不在合同程序集中使用System.Web.UI.Control依赖项?

为了澄清一点,这种类型的界面都是关于UI组合(使用MEF).它在整个框架中是众所周知的,但它实际上只是从具体视图中调用.具体视图仍然是唯一知道ASP.NET Web窗体的东西.但是,这些公共方法InstantiateIn(System.Web.UI.Control)存在于我的合同程序集中,并且暗示了对ASP.NET Web窗体的依赖.

我一直在考虑一些双重调度机制甚至访问者模式来尝试解决这个问题,但我还不知道我想去哪个方向,我真的想对此事进行一些投入.

c# asp.net mvp dependency-injection mef

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

使用继承时,构造函数和原型对象之间有什么区别吗?

请考虑以下JavaScript代码段:

function foo() {
  this.bar = function() { };
}

// or... (if we used an empty constructor function)

foo.prototype.bar = function() { };
Run Code Online (Sandbox Code Playgroud)

我这样做有什么不同:

function baz() {
}

baz.prototype = new foo();
Run Code Online (Sandbox Code Playgroud)

在这两种情况下baz最终都有一名成员,bar但有什么区别?为什么我会在不同的地方这样做?

javascript

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

MapReduce使用SQL Server作为数据源

我目前正在调查使用MapReduce来维护SQL Server中的增量视图构建的可能性.

基本上,使用MapReduce创建物化视图.

我有点卡住了.考虑如何划分我的map输出.现在,我并没有真正的BigData情况,最大约50 GB,但我有很多复杂性和各种隐含的性能问题.我想看看我的MapReduce/NoSQL方法是否会出现问题.

关于MapReduce的事我现在遇到的问题是分区.由于我使用SQL Server作为数据源,因此数据局部性并不是我的问题,因此我不需要在整个地方发送数据,而是每个工作者都应该能够检索数据的分区基于map定义.

我打算通过使用LINQ来完全映射数据,也许像实体框架一样,只是为了提供一个熟悉的界面,这在某种程度上除了这一点,但它是我正在探索的当前路线.

现在,我如何拆分数据?我有一个主键,我mapreduce在表达式目录树(AST的,如果你不熟悉LINQ)的术语的定义.

  • 首先,我如何设计一种方法来分割整个输入并对初始问题进行分区(我认为我应该能够利用SQL Server中的窗口聚合,例如ROW_NUMBERTILE).

  • 其次,更重要的是,我如何确保逐步增加?也就是说,如果我添加或更改原始问题,我该如何有效地确保最小化需要进行的重新计算量?

我一直在寻找CouchDB的灵感,他们似乎有办法做到这一点,但我如何利用SQL Server利用这些优点呢?

sql-server couchdb sql-server-2005 mapreduce

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

使用windbg进行内存泄漏调试,无需用户堆栈跟踪

我有一个完整的内存转储,但在这个例子中我没有用户堆栈跟踪数据库,我有最新的符号和原始二进制文件与转储一起,通常,我已经能够使用在!heap -p -a address分配时查看调用堆栈但如果没有用户堆栈跟踪数据库,这将无法工作.

我的问题是,是否有另一种方法(虽然不那么直接的方法)来获得这种内存泄漏的来源.

        LFH Key                   : 0x0000005c2dc22701
Termination on corruption : ENABLED
          Heap     Flags   Reserv  Commit  Virt   Free  List   UCR  Virt  Lock  Fast 
                            (k)     (k)    (k)     (k) length      blocks cont. heap 
-------------------------------------------------------------------------------------
00000000002e0000 00000002 3125248 3122792 3125248    282   378   197    0      7   LFH
0000000000010000 00008000      64      4     64      1     1     1    0      0      
0000000000530000 00001002    1088    416   1088     51    10     2    0      0   LFH
0000000000490000 00001002     512    284    512      5     5     1    0      0   LFH
0000000000af0000 …
Run Code Online (Sandbox Code Playgroud)

windows memory-leaks memory-dump windbg

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

ASP.NET MVC,部分视图和数据

任何人都可以详细说明为什么你在动态菜单之类的每个动作上定义ViewData ["MenuData"]的原因?

我有一个简单的局部视图,它呈现一个菜单,我在一个母版页中渲染这个菜单.这对我来自ASP.NET WebForms是直观的,但是我填充菜单的唯一方法是传递ViewData ["MenuData"],但是我必须在每个控制器动作中执行此操作.它确实感觉有点愚蠢,我每次都必须定义这个视图数据.

在可测试性和ASP.NET MVC方面,我该如何处理?

dynamic-data asp.net-mvc-2

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

为ASP.NET设计异步任务库

ASP.NET运行时用于可以并行运行的短工作负载.我需要能够安排可能会或可能不会运行更长时间的定期事件和后台任务.

鉴于以上情况,我有以下问题需要处理:

  • AppDomain可能因更改而关闭(Web.config,bin,App_Code等)
  • IIS定期回收AppPool(每天)
  • IIS本身可能会重新启动,或者服务器可能会崩溃

我不相信在ASP.NET中运行此代码不是正确的做法,因为它将允许更简单的编程模型.但这样做会要求外部服务定期向应用程序发出请求,以便应用程序保持运行状态,并且所有后台任务都经过精心编程.如果发生意外错误,他们必须能够暂停和恢复他们的工作.

我目前的思路是这样的:

如果所有作业都在数据库中注册,则应该可以将数据库用作簿记机制.在出现错误的情况下,数据库将包含在给定的下一个机会时恢复操作所需的所有状态.

在这个问题上,我真的会对一些反馈/建议表示赞赏.我一直在考虑运行Windows服务并使用一些RPC解决方案,但它对我没有同样的吸引力.而且我会遇到很多部署问题,并且会将任务和代码交叉到多个应用程序中.由于我的业务需求,这不是最好的.

asp.net

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

如何设计业务逻辑层

完全清楚,我不希望这个问题有解决方案。解决这个问题的很大一部分显然是解决问题。但是,我在架构良好的 n 层应用程序方面没有很多经验,我不想最终得到一个不守规矩的 BLL。

在撰写本文时,我们的业务逻辑在很大程度上是一个混合的麻线球。具有相同业务逻辑的星系间依赖关系被多次复制。我现在的重点是从我们称为数据访问层的东西中提取业务逻辑,以便我可以定义可以订阅的众所周知的事件。我想我想支持事件驱动/反应式编程模型。

我希望有某些可实现的目标告诉我如何以非常适合业务逻辑的方式设计这些类集合。如果有什么东西可以区分好的 BLL 和坏的 BLL,我想听听更多关于它们的信息。

作为一名经验丰富的程序员但相当谦虚的架构师,我向我的社区成员寻求建议。

编辑1:

所以验证逻辑进入业务对象,但这意味着业务对象需要将验证错误/逻辑传达回 GUI。这让我想到将业务操作作为对象而不是对象来实现,以提供更多关于操作必要性的元数据。我不是代码克隆的忠实粉丝。

architecture oop n-tier-architecture

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

是否有一种规范的方法可以从特定的数据命名空间中获取所有标识?

说我有:user/name:user/gender安装为数据模式。

(pprint (d/q '[:find ?ident :where
               [?e :db/ident ?ident]
               [_ :db.install/attribute ?e]] (d/db conn)))
Run Code Online (Sandbox Code Playgroud)

找到所有 db.install/attributes

 #{[:db/code] [:user/gender] [:fressian/tag] [:db/unique] [:user/name] [:db/fn] 
 [:db/noHistory] [:db/fulltext] [:db/lang] [:db/valueType] [:db/doc]
 [:db/isComponent] [:db.install/function] [:db/cardinality] [:db/txInstant] [:db/index]}
Run Code Online (Sandbox Code Playgroud)

但是,我只想列出 :user 命名空间中的项目

[:user/gender] [:user/name]
Run Code Online (Sandbox Code Playgroud)

我应该向查询添加什么,或者是否有自动执行的功能?

clojure datomic

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