问题列表 - 第47319页

域驱动设计 - 数据解析属于何处

在我正在开发的这个应用程序中,域名围绕着电器.该实体有几个专门版本.可以将设备提交给应用程序,这可以通过使用数据传输对象的Web服务进行.

虽然这很有效,但我现在正在考虑从几种基于文本的文件格式导入设备.考虑此工作流程:

  1. 目录观察者服务看到添加了新的设备文件
  2. 该服务使用我的应用程序中的应用程序服务来提交该文件描述的设备

现在,应用程序服务可以有一个具有以下名称和签名的方法:ApplianceService.Register(string fileContents).我认为目录观察者服务将使用此服务方法并将其传递给文件的全部内容.然后,应用程序服务将协调解析.解析文件的内容并将其转换为完整的设备实体涉及几个步骤.现在,我的问题是:

问题:这是正确的,还是解析逻辑应该存在于目录观察器服务中?每种类型的文件格式是一种域的一部分,但话又说回来,其实并非如此.在将文件从任一格式解析为实体之后,实体将永远不会知道它曾使用该格式表示过.如果解析逻辑应该存在于观察者服务中,我会将新设备作为数据传输对象传递给注册服务.

我想我关心的是设备在进入我的应用程序之前应该如何表示(使用应用程序层作为入口点).从Web服务提交设备时,我会传递一系列设备数据传输对象.这与获取可能奇怪格式化的文件并将其解析为数据传输对象不同,因为从Web服务请求到数据传输对象的映射非常简单,而不是那么复杂.

对此的任何想法都非常受欢迎.

parsing domain-driven-design separation-of-concerns

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

在C中使用typedef时,是否使用指向struct的指针

为了在C中定义新的数据类型,例如链表的类型,
可以使用以下定义之一

struct list_node {
    int x;
    struct list_node * next;
};

//1
typedef struct list_node list1;
//2
typedef struct list_node *list2;
Run Code Online (Sandbox Code Playgroud)

从我所看到的,通常的做法是第一个定义.

问题是第二个定义是否也是可接受的做法.在哪种情况下,如果有人应该比第一个更喜欢第二个?如果我们使用的变量是struct list_node的指针,那么可以对两种类型执行相同的操作吗?第一个有什么好处?

c struct pointers typedef list

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

使用gem分享Rails应用程序之间的模型

所以我想在两个Rails应用程序之间共享模型,而不喜欢子模块解决方案(过去烧毁了我).我正在考虑使用宝石来解决这个问题并使其基本起作用:

  1. 使用珠宝商创建一个宝石(my_models)
  2. 使用Gemfile中的某些内容创建一个rails应用程序,如: gem 'my_models', :path => '../my_models'所以你可以避免不断包装gem等.
  3. 使用霰弹枪不断重新加载所有类(否则你无法在不重新启动服务器/控制台的情况下编辑my_models文件.

所以有几个问题:

  1. 霰弹枪很慢,Rails有没有更好的方法每次只重新载入一颗宝石?
  2. 如果我的my_models ActiveRecord模型有依赖关系,我将它们放在my_models gems中,这会导致我常规应用程序中的依赖性噩梦吗?
  3. 还有什么我想念为什么这可能是一个坏主意?

gem ruby-on-rails

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

jQuery - 如何限制文本框的输入值

我想将TextBox中的输入限制为'Y'或'N'(任何情况).怎么能在jQuery中完成.

javascript jquery jquery-ui jquery-plugins

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

Scala参数化类型问题,返回相同类型的实例

在下文中,我将仅提供我的Scala代码的非常简化版本.足以显示问题.不必要的代码块将减少到....

有效的部分

我创建了一个矢量库(也就是说,用于建模数学矢量,而不是意义上的矢量scala.collection.Vector).基本特征如下:

trait Vec[C] extends Product {
  def -(o:Vec[C]):Vec[C] = ...
  ...
}
Run Code Online (Sandbox Code Playgroud)

我已经为特定的载体创建了许多子类型,比如Vec2二维向量,或Vec2Int专门用于二维Int向量.

子类型缩小了某些操作的返回类型.例如,Vec2Int从另一个向量中减去a 将不会返回泛型Vec[Int],但更具体Vec2Int.

另外,我已经在非常特定的子类型中声明了这些方法,例如Vec2Intas final,从而允许编译器选择那些用于内联的方法.

这非常有效,我已经为矢量计算创建了一个快速且可用的库.

在此基础上,我现在想要创建一组类型来模拟基本的几何形状.基本的形状特征如下:

trait Shape[C, V <: Vec[C]] extends (V=>Boolean) {
  def boundingBox:Box[C,V]
}
Run Code Online (Sandbox Code Playgroud)

在哪里BoxShapen维盒子的子类型.

不起作用的部分

现在,我试图定义框:

trait Box[C, V <: Vec[C]] extends Shape[C,V] {
  def lowCorner:V
  def highCorner:V
  def boundingBox = this
  def diagonal:V = highCorner - lowCorner …
Run Code Online (Sandbox Code Playgroud)

generics scala scala-2.8

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

仅从命令行打印perl中的匹配行

我正在尝试从文件中提取所有IP地址.到目前为止,我只是在使用

cat foo.txt | perl -pe 's/.*?((\d{1,3}\.){3}\d{1,3}).*/\1/'
Run Code Online (Sandbox Code Playgroud)

但是这也会打印不包含匹配项的行.我可以通过grep管道来解决这个问题,但这似乎应该是不必要的,并且如果正则表达式完全匹配,可能会导致错误.

有没有更简单的方法来实现这一目标?

perl

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

Visual C++ 2010 Express:如何使用Qt?

我对让Qt使用Visual Studio Express感到困惑.大多数在线搜索都出现了使用以下指令编译Qt的说明:

  • 安装MSVC2005或MSVC2008
  • 安装最新的Platform SDK(@ MSDN:"适用于Windows Server 2003 R2的Platform SDK")
  • 从Platform SDK,您至少需要安装base + internet选项
  • 然后,下载并将最近的快照或预览版本解压缩到D:\ Qt\4.xx
  • 打开加载了MSVC设置的控制台(请参阅MSVC工具菜单)并转到Qt目录
  • 键入"configure -platform win32-msvc2005",不带引号
  • 这将构建您需要的项目文件
  • 在那之后,它就像运行"nmake"和喝大量咖啡一样简单

然后,将D:\ Qt\4.xx\bin和D:\ Qt\4.xx\lib添加到路径环境变量中,您将能够在系统的任何位置使用此版本的Qt.后者可以添加到MSVC选项中的库部分.

(来自http://www.qtcentre.org/threads/11710-Visual-Studio-2005-Express)

但是,当我访问Qt(http://qt.nokia.com/downloads)的下载页面时,Visual Studio的下载标记为:"Qt libraries 4.7.1 for Windows(VS 2008,228 MB)"

我很困惑,我真的还需要建立吗?或者它已经建成了吗?

c++ qt qt4 visual-studio-express visual-c++-2010

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

如何调试崩溃的android本机库?

我正在运行本机库(C++)的junit测试,本机库进程崩溃,logcat显示:

I/ActivityManager(  161): Force stopping package xxxxx uid=10043
I/ActivityManager(  161): Start proc xxxxx for added application xxxx: pid=1656 uid=10043 gids={1015}
I/TestRunner( 1656): started: testAddressBook(xxxxx.AddressBookTest)
F//system/bin/app_process( 1656): stack corruption detected: aborted
I/ActivityManager(  161): Process xxxxx (pid 1656) has died.
Run Code Online (Sandbox Code Playgroud)

其中xxxxx是进程名称.

我尝试按照http://source.android.com/porting/debugging_native.html上的说明操作,但说明令人困惑:

如果崩溃,请与aproto连接并在设备上运行logcat

什么是aproto?我找不到它.也不是"堆叠"工具.

任何建议表示赞赏!

-Henry

debugging android native

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

检查元素是否处于fadeIn或fadeOut状态('action')

我需要停止(取消)当前.fadeIn(5000)并从一开始就开始相同的fadeIn,一旦点击一个按钮(否则下一个fadeIn将仅在5000之后开始).如果div正在积极褪色以及如何取消它(我假设我可以只是.hide()),我如何检查?

jquery

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

是否有tcl的部分排序命令?

就像C++ std::partial_sort那样.lsort不够强大.

sorting tcl

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