问题列表 - 第5581页

Enum vs Lookup表vs Enum反射vs状态模式

我将构建的软件将涉及"应用程序"在不同状态之间切换很多.某些任务可以完成,具体取决于应用程序所处的状态.我正在考虑使用枚举作为状态

public class Application
{
  public int Id {get;set;}
  public Status {get;set;}
}
public enum Status
{
  [Description("New")]New = 1, [Description("Closed")]Closed = 2
}
Run Code Online (Sandbox Code Playgroud)

但后来我想也许在数据库中使用查找表是好的,因为状态会经常更新/重新排序

table status (id int pk, desc string, sort_order int)
table application (id int pk, status_id int fk)
Run Code Online (Sandbox Code Playgroud)

在我的情况下,我需要做的事情

if (application.Status == Status.New)
{ //do something }
else if (application.Status == Status.Closed)
{ //do other things }
Run Code Online (Sandbox Code Playgroud)

我认为以上情况更易于使用枚举.但是,当涉及到更新状态排序顺序或描述时,这将非常困难.

我应该使用反射根据查找表中的值动态创建枚举吗?或者我应该使用状态模式?我看到enum relfection的问题是性能影响.并且状态模式可以产生大量冗余代码.

你怎么看?提前致谢!

reflection enums state design-patterns

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

如何从自定义任务中获取 MSBuild 属性的值?

有没有办法从自定义任务访问 MSBuild 属性的值?

我知道我可以将它们全部发送,但最好不要:) 我正在尝试从TFS构建中执行此操作。

或者有什么方法可以访问当前正在运行的“构建脚本”?也许就像一个对象模型,然后从那里得到我需要的东西?

msbuild tfs properties

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

处理贫血域模型的技术

我已经阅读了一些有关贫血领域模型和关注点分离的问题.在贫血域对象上执行/附加域逻辑的最佳技术是什么?在我的工作中,我们有一个非常贫穷的模型,我们目前正在使用"帮助程序"类来执行域对象上的数据库/业务逻辑.例如:

public class Customer
{
    public string Name {get;set;}
    public string Address {get;set;}
}

public class Product
{
    public string Name {get;set;}
    public decimal Price {get;set;}
}

public class StoreHelper
{
    public void PurchaseProduct(Customer c, Product p)
    {
         // Lookup Customer and Product in db
         // Create records for purchase
         // etc.
    }
}
Run Code Online (Sandbox Code Playgroud)

当应用程序需要购买时,它将创建StoreHelper,并在域对象上调用该方法.对我而言,客户/产品知道如何将自己保存到存储库是有意义的,但您可能不希望在域对象上使用Save()方法.对于像Customer.Purchase(Product)这样的方法也有意义,但这就是将域逻辑放在实体上.

以下是我遇到的一些技巧,不确定哪些是好/坏:

  1. Customer和Product继承自"Entity"类,它以通用方式提供基本的CRUD操作(可能使用ORM).
    • 优点:每个数据对象将自动获得CRUD操作,但随后绑定到数据库/ ORM
    • 缺点:这不能解决对象上的业务操作问题,并且还将所有域对象绑定到可能不合适的基本实体
  2. 使用帮助程序类来处理CRUD操作和业务逻辑
    • 将DAO用于"纯数据库"操作是否有意义,并为更具体业务的操作分离业务助手?
    • 为此使用非静态或静态辅助类更好吗?
    • 优点:域对象不依赖于任何数据库/业务逻辑(完全贫血)
    • 缺点:不是非常OO,在应用程序代码中使用帮助器不太自然(看起来像C代码)
  3. 使用Double Dispatch技术,其中实体具有保存到任意存储库的方法
    • 优点:更好地分离关注点
    • 缺点:实体附加了一些额外的逻辑(虽然它是分离的)
  4. 在C#3.0中,您可以使用扩展方法将CRUD /业务方法附加到域对象而不触及它
    • 这是一种有效的方法吗?什么是利弊?
  5. 其他技术?

处理此问题的最佳技巧是什么?我对DDD很新(我正在阅读埃文斯的书 - 所以也许这会打开我的眼睛)

domain-driven-design business-logic

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

在C#中生成随机小数

如何获得随机的System.Decimal?System.Random不直接支持它.

.net c# random decimal

59
推荐指数
5
解决办法
5万
查看次数

为什么em而不是px?

我听说你应该使用em而不是像素来定义样式表中的大小和距离.所以问题是为什么在css中定义样式时我应该使用em而不是px?有一个很好的例子可以说明这一点吗?

css em units-of-measurement

743
推荐指数
10
解决办法
36万
查看次数

Java语音识别

是否有任何人有任何开源的经验,或相对便宜的java语音识别API?我几乎都在寻找能够将口语转化为文本的东西.

从sun上的java语音识别页面来看,它似乎已经相当死了.我的要求至少在linux上运行.

谁能推荐一些东西?纯Java将是一个奖励,否则可以考虑基于Linux的解决方案.因为这是一个家庭项目......越便宜越好.

  • 编辑

CMU Sphinx As Amit指出CMU Sphinx http://cmusphinx.sourceforge.net/html/cmusphinx.php 我的问题是大量的单词错误率.训练似乎本身就是一个项目,我希望本周末能有一些力量去尝试.

IBM ViaVoice
2004年有一些关于Via Voice被开源的新闻公告.似乎新闻发布还为时过早,而且从未发生过.VIA Voice 在某些时候发布用于Linux,但似乎他们停止了.似乎留在IBM网站上的所有内容都是嵌入的ViaVoice.

IBM Websphere Voice
我想象这就是为什么ViaVoice(桌面)似乎停止了.IBM创建了这个商业解决方案,这个解决方案不仅仅需要分配一条腿和一条腿.只需使用它就可以使用你剩下的那些,至少在我使用websphere和他们的IDE之后.

Nuance
看起来他们仍然可以为linux创建产品.但我认为他们迷失了,并跟随IBM进入服务器市场.我不确定这个,他们的网站在查找有用的信息方面不那么友好.

开放思想/言论自由
这些人不断改变他们的项目名称.可能有些资金匮乏的公司一直在威胁他们,但我不知道.该项目看起来有点死.

我本周末可能会尝试训练狮身人面像,看看它是否想成为朋友.更糟糕的是,我会考虑使用微软的语音解决方案.它在过去对我有用,但它不是一个很棒的Linux解决方案.我可以通过葡萄酒使用它,但后来我将有两个独立的服务器......凌乱凌乱.

哦,对于语音/语音SpeechTechMag来说,这似乎是个好地方.他们有一个"年度参考",其中包含一些公司名单,这些公司以某种方式将自己与语音/语音联系起来.

java linux speech-recognition

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

仅使用Javascript(无服务器端)将textarea内容下载为文件

我被要求制作一个"下载"按钮,在文件的同一页面上下载textarea的内容,浏览器的"另存为..."对话框显示出来.复制/粘贴可以很好地完成工作,但这是一个"要求".

现在,我只是将textarea的内容发布到服务器上,然后将它们Content-disposition: attachment打回来.有没有办法用客户端Javascript来做到这一点?

html javascript download content-disposition

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

在尝试内联模型时,<class>在Django中没有<class>的外键

我需要能够创建一个带有20个奇怪的多项选择问题的测验类型应用程序.

我有3种型号:Quizzes,Questions,和Answers.

我想在管理界面中创建一个测验,并内联测验和答案元素.

目标是单击"添加测验",然后转移到包含20个问题字段的页面,每个字段有4个答案字段.

这是我目前的情况:

class Quiz(models.Model):
    label = models.CharField(blank=true, max_length=50)

class Question(models.Model):
    label = models.CharField(blank=true, max_length=50)
    quiz = models.ForeignKey(Quiz)

class Answer(models.Model):
    label = models.CharField(blank=true, max_length=50)
    question = models.ForeignKey(Question)

class QuestionInline(admin.TabularInline):
    model = Question
    extra = 20

class QuestionAdmin(admin.ModelAdmin):
    inlines = [QuestionInline]

class AnswerInline(admin.TabularInline):
    model = Answer
    extra = 4

class AnswerAdmin(admin.ModelAdmin):
    inlines = [AnswerInline]

class QuizAdmin(admin.ModelAdmin):
    inlines = [QuestionInline, AnswerInline]

admin.site.register(Question, QuestionAdmin)
admin.site.register(Answer, AnswerAdmin)
admin.site.register(Quiz, QuizAdmin)
Run Code Online (Sandbox Code Playgroud)

当我尝试添加测验时出现以下错误:

class 'quizzer.quiz.models.Answer'> has no ForeignKey to …
Run Code Online (Sandbox Code Playgroud)

python django django-admin

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

使用JavaScript获取字符串中的第一个整数

我在循环中有一个字符串,对于每个循环,它都填充了如下所示的文本:

"123 hello everybody 4"
"4567 stuff is fun 67"
"12368 more stuff"
Run Code Online (Sandbox Code Playgroud)

我只想检索字符串中文本的第一个数字,当然,我不知道长度.

提前致谢!

javascript string string-formatting

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

如何使用十六进制编辑器无损解码地连接2个jpeg?

我正在尝试编写一个程序(在java中的概率),无需先解码就可以无损地连接多个jpeg.

我以为我会开始简单,尝试使用十六进制编辑器追加相同大小的2个jpegs,使用相同的设置压缩.

首先,我提取jpeg B的图像数据并将其附加到jpeg A.通过修改标题中指定的尺寸,我得到一个新的可识别图片(y轴上附加的jpeg A + jpeg B),可以进行显示.然而,尽管来自jpeg B的图像数据清晰可辨,但它似乎丢失了大量的颜色信息并且显然是不正确的.

所以我的问题是我错过了哪些步骤?我不认为我需要更改任何其他维度特定的标题值,所以也许我需要霍夫曼解码来自两个jpeg的图像数据,然后将它们附加在一起,然后重新编码该批次?

我花了一些时间阅读jpeg规格和标题等,但说实话,我已经超出了我的深度,可以用指针或两个指针!

非常感谢您的帮助.


感谢所有的建议.是的,这绝对是可能的,我应该在我原来的问题中提到jpegtran.我基本上试图复制jpegtran功能的这个方面,但在我自己的程序中使用它.我想我应该看一下jpegtran源代码,但我对C一无所知,而且对一般的编程知之甚少,所以逆向工程源代码说起来容易做起来难!

jpeg

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