您是否可以使用CQRS(Command-Query Responsibility Segregation)架构模式来构建StackOverflow之类的站点?我对CQRS和DDD(领域驱动设计)相对较新,我正在探索这种模式,并试图对我熟悉的模式建模.虽然我可以看到CQRS对于像StackOverflow这样的网站的许多方面都很有用,但有一些方面我不确定是否可能(或者,至少,我无法立即弄清楚).特别:
我关心的是SO提供的即时反馈概念.CQRS可以提供这个吗?如果是这样,怎么办呢?那里有很好的例子说明如何处理这个问题吗?
如果它有帮助,我的环境是VS2010/C#/ SQL2008R2,但我对SQLite等其他选项持开放态度.我也在关注NCQRS和LOKAD的框架,以及Mark Nijhof的样本,并计划下载Greg Young的样本.我没有找到很多其他CQRS样本.
谢谢!
我决定在我的项目中添加单元测试,并以测试驱动的方式继续开发.我目前正在为ManageSieve客户端对象实现单元测试,我不确定测试该野兽的最佳方法是什么.
我的SieveClient对象依赖于对网络通信的其他两个对象:CocoaAsyncSocket和我自己的SaslConn目标,这是我周围的赛勒斯SASL库来处理身份验证方法包装.为了测试,我需要用模拟对象替换它们.我将使用OCMock框架.我不太清楚如何做到这一点,因为SieveClient对象需要自己创建这些对象.现在我覆盖该对象的(私有)setter,以便始终使用OCMocks partialMockForObject:方法安装我的模拟对象.但这对我来说不合适.有什么想法可以更好地解决这个问题?
我遇到的另一个问题是套接字本身.为了能够测试协议细节,我需要一种从套接字返回预定义测试数据的方法.我想我可以使用OCMock机制伪造套接字的返回值.但是由于CocoaAsyncSocket提供了许多不同的方法来从套接字读取数据,我必须准确地知道协议对象使用哪种顺序.我不希望我的单元测试依赖于我的协议对象的实现细节.那我该怎么办?手动为套接字类实现模拟对象?这似乎并不重要,所以我可能也需要进行单元测试.这是一个好主意吗?
我读过,如果有些东西很难测试,它的设计可能也不是很好.但我不知道我怎么能做得更好,因为困难的部分在于我必须做的插座交互.
如果您想查看代码,可以在Bitbucket找到它:SieveClient.m和SieveClient.h
所以我读到了依赖注入,我想我将使用它来将对象AsyncSocket和SaslConn对象放入我的SieveClient对象中.我将更改我的构造函数以接受这些对象并使用它们.由于这个类的用户通常不关心套接字和SASL对象,我将添加一个工厂方法(以方便构造函数的形式),只创建这些对象并将它们传递给构造函数.
但这只解决了我测试问题的第一个(也更容易)部分.
我正在尝试在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中实现这一目标?如何导出全局变量?
感谢您的反馈.
我正在使用HTML5 Geolocation API来查找我网站用户的经度和纬度.这有效,但现在我想在屏幕上显示"你目前在......".所以我需要将从Geolocation API获得的这些坐标转换为地名.
我尝试了一下谷歌地图API,但我没有让它运作.
有谁知道怎么做?
我花了一些时间,但还是要解决.我需要能够在字符串中匹配带有符号的单词(如c ++)的正则表达式.
我已经习惯了/\bword\b/,对于"通常"的话,它运作正常.但是一旦我尝试/\bC\+\+\b/它就行不通.它有些与加号相符合作用.
我需要一个正则表达式来检测输入字符串是否包含c ++单词.输入像,
"c++ developer"
"using c++ language"
Run Code Online (Sandbox Code Playgroud)
等等
PS.使用C#,.Net Regex.Match函数.
感谢帮助!
我遵循实体框架示例:
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.当我尝试以同样的方式添加另一个人时,我得到关于主键的错误:)
所以仍然没有......
有任何想法吗 ?
我写了一个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位).
我能做些什么呢?任何帮助?
谢谢.
我有一个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.normalized为n1.normalized LIKE n2.normalized,因为该字段可能包含SQL通配符.
我也对以不同方式建模数据的想法持开放态度,但如果可以的话,我宁愿避免为每种语言使用单独的表.
如果我有一个int和一个size_t变量,我可以比较它们:
int i=1;
size_t y=2;
if(i==y)
// do something..
Run Code Online (Sandbox Code Playgroud)
或者我必须输入其中一个?
如何在特定位置获取文件的文件创建或上次修改日期,例如/Users/MYUSER/Downloads/text.txt?
c# ×2
objective-c ×2
activerecord ×1
architecture ×1
c ×1
casting ×1
cocoa ×1
cqrs ×1
delphi ×1
dll ×1
export ×1
geolocation ×1
html5 ×1
javascript ×1
mysql ×1
ocmock ×1
php ×1
primary-key ×1
regex ×1
self-join ×1
sockets ×1
symbols ×1
unit-testing ×1