是否有所有程序员都应该了解的开源库?我在想一些通用的,一种对标准的扩展,java.util它包含对各种应用程序都有用的基本函数.
我到处读到业务逻辑属于模型而不是控制器但是限制在哪里?我正在玩个人会计应用程序.
Account
Entry
Operation
Run Code Online (Sandbox Code Playgroud)
创建操作时,只有创建相应的条目并将其链接到帐户才有效,以便操作平衡,例如购买6件装:
o=Operation.new({:description=>"b33r", :user=>current_user, :date=>"2008/09/15"})
o.entries.build({:account_id=>1, :amount=>15})
o.valid? #=>false
o.entries.build({:account_id=>2, :amount=>-15})
o.valid? #=>true
Run Code Online (Sandbox Code Playgroud)
现在,在基本操作的情况下向用户显示的表格被简化以隐藏条目细节,帐户在用户请求的操作类型中选择默认值(初始帐户 - >权益到达,花费资产 - >费用,赚取收入 - >资产,借入负债 - >资产,支付债务资产 - >负债......)我想要从默认值创建的条目.
我还希望能够创建更复杂的操作(超过2个条目).对于第二个用例,我将有一个不同的形式,其中暴露了额外的复杂性.第二个用例使我无法在操作中包含借方和贷方字段并删除Entry链接.
哪种形式最好?像我一样在SimpleOperationController中使用上面的代码,或者在Operation类上定义一个新方法,这样我就可以调用Operation.new_simple_operation(params [:operation])
是不是打破了关注点的分离,实际上是从Operation类创建和操作Entry对象?
我不是在寻找关于我扭曲的会计原则的建议:)
编辑 - 似乎我没有太清楚地表达自己.我不太关心验证.我更关心创建逻辑代码应该去哪里:
假设控制器上的操作被称为花费,当使用花费时,params散列将包含:金额,日期,描述.借方和贷方账户将从被调用的操作中派生出来,但之后我必须创建所有对象.拥有它会更好吗?
#error and transaction handling is left out for the sake of clarity
def spend
amount=params[:operation].delete(:amount)#remove non existent Operation attribute
op=Operation.new(params[:operation])
#select accounts in some way
...
#build entries
op.entries.build(...)
op.entries.build(...)
op.save
end
Run Code Online (Sandbox Code Playgroud)
或者在操作上创建一个方法,使上面看起来像
def spend
op=Operation.new_simple_operation(params)
op.save
end
Run Code Online (Sandbox Code Playgroud)
这肯定会给一个更薄的控制器和一个更胖的模型,但随后该模型将创建和存储其他模型的实例,这是我的问题所在.
我已经开始搜索,但我仍然无法解释Django定义为"应用程序"的问题.
我是否应该为站点中的每个功能创建一个新的应用程序,即使它使用主项目中的模型?
你们有什么经验法则可以解决何时拆分新应用,何时将功能与"主项目"或其他应用保持在一起?
我想在C#中创建一个自定义控件.但是每当我必须完全重绘我的控件时,它就会闪烁,即使我使用双缓冲(首先绘制到图像,然后进行blitting).
当我必须完全重绘时,如何消除闪烁?
我们使用IIS管理器在IIS 6(Windows Server 2003)中创建新站点.在IIS 6中创建这些站点时,ASP.NET版本默认为ASP.NET 1.1.我们希望它默认为ASP.NET 2.0.这对我们来说是个问题的原因是,当你在服务器上使用任何站点并将ASP.NET版本从ASP.NET 1.1切换到ASP.NET 2.0时,所有网站都会回收.
IIS元数据库中是否有一个设置来控制这个或通过脚本创建站点的方法,该脚本正确设置ASP.Net版本,以便我们可以在设置每个站点时避免重置IIS?
我正在开发一个需要在服务器上快速渲染简单3D场景的应用程序,然后通过HTTP将它们作为JPEG返回.基本上,我希望能够通过执行以下操作,在HTML页面中简单地包含动态3D场景:
<img src="http://www.myserver.com/renderimage?scene=1&x=123&y=123&z=123">
Run Code Online (Sandbox Code Playgroud)
我的问题是用于渲染的技术.在桌面应用程序中,我很自然地使用DirectX,但我担心它可能不适合服务器端应用程序,它将为数十甚至数百个用户串联创建映像.有人对这个有经验么?是否有适合此应用的3D API(最好是免费提供)?从头开始编写软件渲染器会更好吗?
我对使用DirectX或OpenGL的主要担心是它是否能在虚拟化服务器环境中运行良好,以及它是否适用于典型的服务器硬件(我无法控制).
在C#中将WAV文件转换为WMA(反之亦然)的最佳解决方案是什么?我实际上已经使用Windows Media Encoder SDK实现了这一点,但是至少可以说使用我的应用程序分发Windows Media Encoder是很麻烦的.Windows Media Format SDK将大部分API标记为已弃用.看起来可能有一些我可以在Windows SDK中使用的DirectX媒体对象(DMO),但是会有很多互操作要写.
我想知道是否有一个可以执行转换的非托管库的良好托管包装器.它需要一个许可证,允许它作为闭源商业应用程序的一部分进行分发.
我正在处理的网站的设计要求在列表而不是子弹上使用自定义图像.使用图像很好,但我一直遇到困难,确保它在所有浏览器中都以列表项的文本为中心.有谁知道这个的标准解决方案?
当我在Emacs 22.1.1中剪切(杀死)文本时(在X中,在KDE中,在Kubuntu上的自己的窗口中),我无法在任何其他应用程序中粘贴(猛拉)它.