问题列表 - 第34217页

CQRS可以用于像StackOverflow这样的网站吗?

您是否可以使用CQRS(Command-Query Responsibility Segregation)架构模式来构建StackOverflow之类的站点?我对CQRS和DDD(领域驱动设计)相对较新,我正在探索这种模式,并试图对我熟悉的模式建模.虽然我可以看到CQRS对于像StackOverflow这样的网站的许多方面都很有用,但有一些方面我不确定是否可能(或者,至少,我无法立即弄清楚).特别:

  • 提出问题 当我创建一个问题时,我立即看到它并可以编辑它.在CQRS中,我发出类似'AskQuestion'的命令,并创建一个名为'QuestionAsked'的事件.最终,问题被推送到非规范化数据存储.但是,SO的经验是即时的.这可能与CQRS有关吗?
  • 投票 我的投票立即得到反映.在CQRS中,我想这些命令/事件最终会通过事件总线移动到读取存储.但SO立刻给了我信息.

我关心的是SO提供的即时反馈概念.CQRS可以提供​​这个吗?如果是这样,怎么办呢?那里有很好的例子说明如何处理这个问题吗?

如果它有帮助,我的环境是VS2010/C#/ SQL2008R2,但我对SQLite等其他选项持开放态度.我也在关注NCQRS和LOKAD的框架,以及Mark Nijhof的样本,并计划下载Greg Young的样本.我没有找到很多其他CQRS样本.

谢谢!

architecture cqrs

8
推荐指数
2
解决办法
1304
查看次数

如何对互联网协议实施进行单元测试?

我决定在我的项目中添加单元测试,并以测试驱动的方式继续开发.我目前正在为ManageSieve客户端对象实现单元测试,我不确定测试该野兽的最佳方法是什么.

我的SieveClient对象依赖于对网络通信的其他两个对象:CocoaAsyncSocket和我自己的SaslConn目标,这是我周围的赛勒斯SASL库来处理身份验证方法包装.为了测试,我需要用模拟对象替换它们.我将使用OCMock框架.我不太清楚如何做到这一点,因为SieveClient对象需要自己创建这些对象.现在我覆盖该对象的(私有)setter,以便始终使用OCMocks partialMockForObject:方法安装我的模拟对象.但这对我来说不合适.有什么想法可以更好地解决这个问题?

我遇到的另一个问题是套接字本身.为了能够测试协议细节,我需要一种从套接字返回预定义测试数据的方法.我想我可以使用OCMock机制伪造套接字的返回值.但是由于CocoaAsyncSocket提供了许多不同的方法来从套接字读取数据,我必须准确地知道协议对象使用哪种顺序.我不希望我的单元测试依赖于我的协议对象的实现细节.那我该怎么办?手动为套接字类实现模拟对象?这似乎并不重要,所以我可能也需要进行单元测试.这是一个好主意吗?

我读过,如果有些东西很难测试,它的设计可能也不是很好.但我不知道我怎么能做得更好,因为困难的部分在于我必须做的插座交互.

如果您想查看代码,可以在Bitbucket找到它:SieveClient.mSieveClient.h

编辑:依赖注入

所以我读到了依赖注入,我想我将使用它来将对象AsyncSocketSaslConn对象放入我的SieveClient对象中.我将更改我的构造函数以接受这些对象并使用它们.由于这个类的用户通常不关心套接字和SASL对象,我将添加一个工厂方法(以方便构造函数的形式),只创建这些对象并将它们传递给构造函数.

但这只解决了我测试问题的第一个(也更容易)部分.

sockets cocoa unit-testing objective-c ocmock

6
推荐指数
2
解决办法
1962
查看次数

从Delphi DLL导出全局符号

我正在尝试在Delphi中创建一个与Gecko 2.0兼容的DLL.

以前(Gecko 2.0之前版本)DLL需要导出NSGetModule()函数.这完美无瑕.

从Firefox 4开始,我的DLL正在加载(我已通过初始化部分中的断点验证了这一点),但我的NSGetModule()函数不再被调用.这是设计行为,因为从Gecko 2.0(Firefox 4)开始,二进制组件不应该导出NSGetModule()函数:

https://developer.mozilla.org/en/XPCOM/XPCOM_changes_in_Gecko_2.0#Binary_components

根据这些文档,我的DLL需要导出一个指向结构的NSModule数据符号.在Delphi术语中,我假设这是一个指向Delphi记录的全局变量.

在C++中,这是导出(全局)数据符号的方式:

define NSMODULE_DEFN(_name) extern "C" NS_EXPORT mozilla::Module const *const NSModule
Run Code Online (Sandbox Code Playgroud)

我的问题:我如何在Delphi中实现这一目标?如何导出全局变量?

感谢您的反馈.

delphi dll symbols export

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

将坐标转换为地名

我正在使用HTML5 Geolocation API来查找我网站用户的经度和纬度.这有效,但现在我想在屏幕上显示"你目前在......".所以我需要将从Geolocation API获得的这些坐标转换为地名.

我尝试了一下谷歌地图API,但我没有让它运作.

有谁知道怎么做?

javascript html5 geolocation google-maps-api-3

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

正则表达式将单词与+(加号)符号匹配

我花了一些时间,但还是要解决.我需要能够在字符串中匹配带有符号的单词(如c ++)的正则表达式.

我已经习惯了/\bword\b/,对于"通常"的话,它运作正常.但是一旦我尝试/\bC\+\+\b/它就行不通.它有些与加号相符合作用.

我需要一个正则表达式来检测输入字符串是否包含c ++单词.输入像,

"c++ developer"
"using c++ language" 
Run Code Online (Sandbox Code Playgroud)

等等

PS.使用C#,.Net Regex.Match函数.

感谢帮助!

c# regex

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

EF 4中的标识列

我遵循实体框架示例:

http://msdn.microsoft.com/en-us/library/bb399182.aspx

我有身份列的问题.

以下是创建数据库的代码的一部分:

CREATE TABLE [dbo].[Person](
    [PersonID] [int] IDENTITY(1,1) NOT NULL,
    [LastName] [nvarchar](50) NOT NULL,
    [FirstName] [nvarchar](50) NOT NULL,
    [HireDate] [datetime] NULL,
    [EnrollmentDate] [datetime] NULL,
 CONSTRAINT [PK_School.Student] PRIMARY KEY CLUSTERED 
(
    [PersonID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
GO
Run Code Online (Sandbox Code Playgroud)

在VS 2010中,我构建了.edmx,在模型中我看到Person StoreGeneratedPattern设置为Identity.

但是当我想创建Person时,通过: 替代文字

为什么我必须输入id,如果这个列是自动增量?

EDITŁ

我以为我找到了解决问题的方法:

var schoolContext = new SchoolEntities();

            schoolContext.AddToPeople(new Person() { LastName = "Gates", FirstName = "Bil" });

            schoolContext.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

因为它将Bill添加到了人,但是......因为PersonID不可为空,并且它插入了id为0.当我尝试以同样的方式添加另一个人时,我得到关于主键的错误:)

所以仍然没有......

有任何想法吗 ?

c# primary-key entity-framework-4

6
推荐指数
2
解决办法
5191
查看次数

php中的随机数生成器

我写了一个PHP脚本来生成1到99999999999999999999之间的随机值(即20 9).

脚本是这样的:

$maxq=20;
for($i=1;$i<=$maxq;$i++) {
    $min=pow(10,$i);
    $max=(pow(10,$i)*10)-1;
    echo $min."<br>";
    echo $max."<br>";
    echo mt_rand($min,$max)."<br>----<br>";
}
Run Code Online (Sandbox Code Playgroud)

但是在10位数之后,php会生成像1.0E + 19这样的科学符号,并且生成的随机数是一团糟.

我想是因为我的硬件模仿(操作系统:Win XP 32位).

我能做些什么呢?任何帮助?

谢谢.

php

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

使用ActiveRecord自行加入桌面

我有一个ActiveRecord调用Name,其中包含各种名称Languages.

class Name < ActiveRecord::Base
  belongs_to :language

class Language < ActiveRecord::Base
  has_many :names
Run Code Online (Sandbox Code Playgroud)

用一种语言查找名称很容易:

Language.find(1).names.find(whatever)
Run Code Online (Sandbox Code Playgroud)

但我需要找到匹配的对,其中语言1和语言2具有相同的名称.在SQL中,这需要一个简单的自联接:

SELECT n1.id,n2.id FROM names AS n1, names AS n2
  WHERE n1.language_id=1 AND n2.language_id=2
    AND n1.normalized=n2.normalized AND n1.id != n2.id;
Run Code Online (Sandbox Code Playgroud)

如何使用ActiveRecord执行此类查询?请注意,我需要找到一对名称(=匹配的两侧),而不仅仅是语言1中恰好与某些内容匹配的名称列表.

对于奖励积分,替换n1.normalized=n2.normalizedn1.normalized LIKE n2.normalized,因为该字段可能包含SQL通配符.

我也对以不同方式建模数据的想法持开放态度,但如果可以的话,我宁愿避免为每种语言使用单独的表.

mysql activerecord ruby-on-rails self-join

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

将int与size_t进行比较

如果我有一个int和一个size_t变量,我可以比较它们:

int i=1;
size_t y=2;
if(i==y)
// do something..
Run Code Online (Sandbox Code Playgroud)

或者我必须输入其中一个?

c casting

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

Objective-C:获取文件创建/上次修改日期?

如何在特定位置获取文件的文件创建或上次修改日期,例如/Users/MYUSER/Downloads/text.txt

objective-c

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