想象一下,我有一个模型来描述办公室拥有的打印机。他们可能准备好工作或不工作(可能在存储区或已购买但不在办公室......)。模型必须有一个字段来表示打印机的物理位置(“秘书办公室”、“接待处”……)。不能有两个重复的位置,如果它不起作用,它就不应该有一个位置。
我想要一个列表,其中显示所有打印机,并且每个打印机都有它所在的位置(如果有)。像这样的东西:
ID | Location
1 | "Secretary's office"
2 |
3 | "Reception"
4 |
Run Code Online (Sandbox Code Playgroud)
有了这个,我可以知道有两台打印机正在工作(1 和 3),而其他打印机处于离线状态(2 和 4)。
该模型的第一种方法应该是这样的:
class Printer(models.Model):
brand = models.CharField( ...
...
location = models.CharField( max_length=100, unique=True, blank=True )
Run Code Online (Sandbox Code Playgroud)
但这不能正常工作。您只能在一个空白位置存储一个寄存器。它在数据库中存储为空字符串,并且不允许您插入多次(数据库说该字段还有另一个空字符串)。如果向其中添加“null=True”参数,它的行为方式相同。这是因为,不是在相应的列中插入 NULL 值,而是默认值是一个空字符串。
在网上搜索我发现http://www.maniacmartin.com/2010/12/21/unique-nullable-charfields-django/,它试图以不同的方式解决问题。他说可能最干净的是最后一个,他将 CharField 类子类化并覆盖一些方法以在数据库中存储不同的值。这是代码:
from django.db import models
class NullableCharField(models.CharField):
description = "CharField that obeys null=True"
def to_python(self, value):
if isinstance(value, models.CharField):
return value
return value or ""
def get_db_prep_value(self, value):
return value or None
Run Code Online (Sandbox Code Playgroud)
这工作正常。您可以在没有位置的情况下存储多个寄存器,因为它不是插入空字符串,而是存储 NULL。这样做的问题是它显示了带有 Nones 而不是空字符串的空白位置。
ID …Run Code Online (Sandbox Code Playgroud) 我确信我忽略了一些显而易见的事情
以下静态查询工作正常
hqlQuery = "select user from User as user where user.id = 'userid' ";
Run Code Online (Sandbox Code Playgroud)
但是当我参数化查询时
hqlQuery = "select user from User as user where user.id = :me ";
Query query = session.createQuery(hqlQuery);
Run Code Online (Sandbox Code Playgroud)
我通过构建查询得到了一个讨厌的堆栈转储.我在俯瞰什么?
Exception in thread "main" java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I
at org.hibernate.hql.ast.HqlSqlWalker.generateNamedParameter(HqlSqlWalker.java:940)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.parameter(HqlSqlBaseWalker.java:4997)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.expr(HqlSqlBaseWalker.java:1413)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.exprOrSubquery(HqlSqlBaseWalker.java:4471)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.comparisonExpr(HqlSqlBaseWalker.java:3947)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:2047)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.whereClause(HqlSqlBaseWalker.java:831)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:617)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:301)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:244)
at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:254)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:185)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:136)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:101)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:80)
at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:124)
at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:156)
at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:135)
at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1770)
Run Code Online (Sandbox Code Playgroud) 我想创建一个'方格纸'外观我正在通过画布绘制的位图,并试图找出最佳方法来实现这一点.
我无法将包含方格纸背景的源位图传递给Canvas构造函数,因为我通过.lockCanvas()调用在SurfaceView中获取Canvas.
我试过的一些解决方案:
我已经尝试在我的SurfaceView的Thread.run()中实现这个解决方案,但我相信的问题是当BitmapDrawable转换为Bitmap时...它会丢失平铺属性.
canvas = mSurfaceHolder.lockCanvas(null); BitmapDrawable TileMe = new BitmapDrawable(BitmapFactory.decodeResource(getResources(),R.drawable.editor_graph)); TileMe.setTileModeX(Shader.TileMode.REPEAT); TileMe.setTileModeY(Shader.TileMode.REPEAT);
位图b = TileMe.getBitmap(); canvas.drawBitmap(b,0,0,null);
如果我使用Canvas.drawBitmap方法将目标RectF作为参数,看起来位图将被平铺以填充RectF ...但是如何可靠地声明填充整个视图区域的RectF?
任何想法如何实现这一目标?
我几乎感到尴尬的问这个,但我真的找不到我的手机上的应用程序.我读到应用程序应安装在/ data/data /文件夹中,但在Astro中查看时,我的/ data文件夹似乎是空的.我的应用程序绝对安装在手机上,我应该将其转移到SD以使其可见吗?我在Orange UK上有一个无根的HTC Desire HD.我只需要看看我的App管理的SQLite数据库.
我想知道是否有可能动态获得Android权限而不使用AndroidManifest只需要一些代码,因为我在Android上运行了一些OSGi包,没有Android权限,因此功能受到限制.
感谢您的回答,是的,它使用户体验变得复杂,如果提供了该机制,对用户也是危险的
我想比较一个case语句的多个变量,并且我正在考虑重写case equals operator(===)for Array是最好的方法.这是最好的方法吗?
这是一个示例用例:
def deposit_apr deposit,apr
# deposit: can be nil or 2 length Array of [nil or Float, String]
# apr: can be nil or Float
case [deposit,apr]
when [[Float,String],Float]
puts "#{deposit[0]} #{deposit[1]}, #{apr*100.0}% APR"
when [[nil,String],Float]
puts "#{apr*100.0}% APR on deposits greater than 100 #{deposit[1]}"
when [[Float,String],nil]
puts "#{deposit[0]} #{deposit[1]}"
else
puts 'N/A'
end
end
Run Code Online (Sandbox Code Playgroud)
唯一的问题是Array case equals运算符不适用大小等于Array的元素.
ruby-1.9.2-p0 > deposit_apr([656.00,'rupees'],0.065)
N/A
Run Code Online (Sandbox Code Playgroud)
如果我覆盖它,但我不确定如果我做了什么我会破坏:
class Array
def ===(other)
result = true
self.zip(other) {|bp,ap| result &&= bp === …Run Code Online (Sandbox Code Playgroud) 在C#中,您可以在事件函数中使用返回值.但是,您只收到最后一个事件的返回值.此外,似乎没有办法获得前一个事件的返回值.
有什么好的做法?我应该经常使用void吗?根据我有限的经验,如果我想连锁价值必须使用ref?
我怎么写一个活动?我想使用Func <ref t,returnT>,但ref在那里是非法的,我想动作是一样的.(我最终得到了以下内容).有没有办法在使用时使事件成为一行而不是两行ref?
delegate int FuncType(ref int a);
static event FuncType evt;
static void Main(string[] args)
{
evt += foo;
var aa = 1;
var a = evt(ref aa);
evt += bar;
var bb = 1;
var b = evt(ref bb);
}
static int foo(ref int a)
{
a = a*3;
return a;
}
static int bar(ref int a)
{
a=a +1;
return a;
}
Run Code Online (Sandbox Code Playgroud) 我一直听说单个退出点功能是一种糟糕的代码方式,因为你失去了可读性和效率.我从来没有听到任何人争辩对方.
我认为这与CS有关,但这个问题在cstheory stackexchange中被击落.
我正在研究一种打包产品,该产品应该满足不同要求(在一定程度上)的多个客户,因此应该以足够灵活的方式构建,以便每个特定客户可以定制.我们在这里讨论的那种定制是不同的客户端可能对某些关键业务对象具有不同的属性.此外,他们也可以将不同的业务逻辑与其附加属性联系起来
作为一个非常简单的例子:将 "汽车"视为系统中的商业实体,因此有4个关键属性,即VehicleNumber,YearOfManufacture,Price和Color.
使用该系统的其中一个客户端可能会向Automobile添加另外两个属性,即ChassisNumber和EngineCapacity.此客户端需要与这些字段关联的一些业务逻辑,以验证添加新汽车时系统中不存在相同的chassisNumber.
另一个客户端只需要一个名为SaleDate的附加属性.SaleDate有自己的业务逻辑检查,当输入销售日期时,该检查验证某些警方记录中的车辆是否作为被盗车辆存在
我的大多数经验主要是为单个客户端制作企业应用程序,我真的很难看到我如何处理其属性是动态的业务实体,并且还具有在面向对象范例中具有动态业务逻辑的能力.
关键问题
我相信从事通用/包装产品的人在大多数情况下都会面临类似的情况.任何建议/指针/一般指导也不胜感激.
我的技术是.NET 3.5/C#,该项目有一个分层架构,其业务层由包含业务逻辑的业务实体组成
我正在寻找GSM-MAP和INAP协议的ASN.1文件.我试图在3gpp.org中搜索但找不到它.
任何帮助,将不胜感激.