我想将事件存储在我正在讨论的Web应用程序中,我对每种方法的利弊都非常不确定 - 广泛使用继承或以更适度的方式使用继承.
例:
class Event(models.Model):
moment = models.DateTimeField()
class UserEvent(Event):
user = models.ForeignKey(User)
class Meta:
abstract = True
class UserRegistrationEvent(UserEvent):
pass # Nothing to add really, the name of the class indicates it's type
class UserCancellationEvent(UserEvent):
reason = models.CharField()
Run Code Online (Sandbox Code Playgroud)
感觉就像我正在疯狂地创建数据库表.它需要很多连接来选择出来并且可能使查询复杂化.但我认为它的设计感觉很好.
使用只有更多字段的"更平坦"模型会更合理吗?
class Event(models.Model):
moment = models.DateTimeField()
user = models.ForeignKey(User, blank=True, null=True)
type = models.CharField() # 'Registration', 'Cancellation' ...
reason = models.CharField(blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)
感谢您对此的评论,任何人.
菲利普
我想基于"ostream"创建一个类,它执行一些自动格式化以生成逗号或制表符分隔值文件.我的想法是覆盖"operator <<",让它在每个值之前插入一个分隔符(除了行的开头和结尾),并在写入之前引用字符串.在重写的"operator <<"方法中,我想调用基类的方法,但我不能让它正常工作.
这是一个例子(用g ++ 4.3.3编译):
#include <iostream>
#include <ostream>
#include <string>
using namespace std;
class MyStream: public ostream
{
public:
MyStream(ostream& out): ostream(out.rdbuf()) {}
template <typename T> MyStream& operator<<(T value)
{
ostream::operator<<('+');
ostream::operator<<(value);
ostream::operator<<('+');
return *this;
}
};
template<> MyStream& MyStream::operator<< <string>(string value)
{
ostream::operator<<('*');
ostream::write(value.c_str(), value.size()); // ostream::operator<<(value);
ostream::operator<<('*');
return *this;
}
int main()
{
MyStream mystr(cout);
mystr << 10;
cout << endl;
mystr << "foo";
cout << endl;
mystr << string("test");
cout << endl;
return 0;
} …Run Code Online (Sandbox Code Playgroud) 我有一个旧的应用程序,其用户密码存储在数据库中,带有MD5哈希.我想用SHA-2系列中的东西替换它.
我想到了两种可能的方法来实现这一点,但两者看起来都很笨重.
1)添加一个布尔"标志"字段.用户在此之后第一次进行身份验证时,使用SHA密码哈希替换MD5密码哈希,并设置该标志.然后我可以检查标志以查看密码哈希是否已被转换.
2)添加第二个密码字段以存储SHA哈希.用户第一次在此之后进行身份验证,使用SHA散列密码并将其存储在新字段中(可能同时删除其MD5哈希值).然后我可以检查SHA字段是否有值; 这基本上成了我的旗帜.
在任何一种情况下,对于不经常登录的任何用户,MD5身份验证都必须保留一段时间.任何不再活动的用户永远不会切换到SHA.
有一个更好的方法吗?
我将一个分支合并到另一个分支,然后进行了一些自己的更改.当我去检查更改时,我收到此错误:
错误:
- C:\ dev\Backend\Backend_1.1.0.0
在目录
C:\ dev\Backend\Backend_1.1.0.0\Unit Tests\MessageProcessor.Tests'
错误处理命令'committed'在
'C:\ dev\Backend\Backend_1.1.0.0\Unit Tests\MessageProcessor.Tests'
无法将
C:\ dev\Backend\Backend_1.1.0.0\Unit Tests\MessageProcessor.Tests.svn\dir-props'移动到
C:\ dev\Backend\Backend_1.1.0.0\Unit Tests\MessageProcessor.Tests.svn\dir-prop-base':系统找不到指定的文件.
现在我无法提交(获取"工作副本锁定,请执行清理"消息),执行"清理"会给出与上面相同的消息.
当我删除违规目录时,如Greg Hewgill建议并进行更新,更新请求清理,并且清理会在不同的子目录上引发错误.
我将查看源的新副本并手动合并我的更改,但我想知道是否A)有更好的方法来解决这个问题和B)如果有人知道我做错了什么.
在Windows XP上使用TortoiseSVN 1.6.3,Build 16613和Subversion 1.6.3.
以下代码未设置注释:
string userName = "yrtre.etre.423369a9-3e57-42da-934d-dae91f87a1e4";
MembershipUser user = Membership.GetUser(userName);
user.Comment = "Test";
Run Code Online (Sandbox Code Playgroud)
我也不例外.有任何想法吗?
我有一个包含几个结构的类库,每个结构由几个值和引用类型组成.大多数值类型是必需的,一些值类型和所有引用类型都是可选的.所有结构都是XmlSerializable(必须的).
至于类库是针对移动设备的,我想减少内存占用.我的第一个想法是使用Nullable<T>值类型,但这会使内存大小增加4个字节Nullable<T>.我的第二个想法是将所有可选值类型打包到一个单独的结构中,该结构仅在需要任何成员时进行实例化.但这会迫使我IXmlSerializable在"主要"结构上实施.
有没有其他方法来"缩小"结构?
[编辑]
请原谅这个糟糕的问题.我想我必须澄清一些事情并且更具体:
类库旨在序列化数据信息GPX(GPS交换格式).结构例如是Waypoint或Track.它们具有纬度,经度等必填字段.可选字段为垂直/水平/位置精度稀释,描述,链接.
该库主要针对移动设备,如PDA.RAM很短,但可以使用大量非易失性存储器.
只要没有代码示例就无法显示.我想在开始实施之前考虑几个陷阱.
我想使用gdb或Xcode的调试器来观察发送到Objective-C 2.0程序中的对象的每条消息.我不关心参数等,因为我只需要看到它收到的每条消息(保留,释放,自动释放等).我也不想描述我的整个程序.
在Xcode中,是否有一种方法可以选择一个实例(可能是通过地址)并说"向我显示发送给该对象的每条消息"?由于管道是相当标准的,我想必须有一个探针钩或什么.有人这样做过吗?
(当然,除了对相关对象进行子类化;寻找更通用的解决方案.)
这适用于在Snow Leopard上使用Xcode 3.2进行iPhone开发.
是否有一些技巧可以让SpringMVC自定义视图在broswer中导致文件下载?我已经实现了该render方法,org.springframework.web.servlet.View但代码导致我的数据作为一个数据块写入页面,而不是开始下载操作.
try {
Document oDoc = (Document) model.get("oDoc");
out = new PrintWriter(response.getOutputStream());
response.setContentType("application/vnd.ms-excel");
response.setHeader("content-disposition", "attachment; filename=file.xls");
GenerateXLSFile gof = new GenerateXLSFile();
gof.outputTSVFromDom(out, oDoc);
} catch block here {
//writes to log here
} finally {
if (out != null) {
out.flush();
out.close();
}
}
Run Code Online (Sandbox Code Playgroud)
我知道正在从服务器日志中调用render方法.我知道GenerateXLSFile是从服务器日志创建的.我知道outputTSVFromDom可以从我的JUnit测试中获取文档并对其进行转换.它还会写入服务器日志并完成.数据最终在浏览器中.根据firebug,HTTP标头看起来很正常.catch块中没有错误在服务器日志中.
我在这里错过了什么?
我一直在努力了解如何开始编写和运行JUnit测试.
当我读这篇文章时:
http://junit.sourceforge.net/doc/testinfected/testing.htm
我得到了页面的中间部分,他们写道:"JUnit带有一个图形界面来运行测试.在窗口顶部的字段中输入测试类的名称.按"运行"按钮.
我不知道如何启动这个程序.我甚至不知道它在哪个包中,或者如何从IDE运行库类.
卡住了,我尝试了这个NetBeans教程:
http://www.netbeans.org/kb/docs/java/junit-intro.html
它似乎没问题,但后来我注意到本教程中用于测试Java类库的菜单选项与常规Java应用程序或Java Web App的菜单选项不同.因此,本教程中的说明一般不适用.
我正在使用NetBeans 6.7,并且已将JUnit 4.5导入库文件夹.在编写测试后,运行JUnit的正常方法是什么?
JUnit FAQ描述了来自Console的过程,如果这是典型的,我愿意这样做,但考虑到我在netbeans中可以做的所有事情,似乎很难相信没有更简单的方法.
非常感谢.
编辑: 如果我右键单击项目并选择"测试",则输出为:
init:
deps-jar:
compile:
compile-test:
test-report:
test:
BUILD SUCCESSFUL (total time: 0 seconds)
Run Code Online (Sandbox Code Playgroud)
这并不会使我成为测试的理想输出,特别是因为这不会改变测试条件是否为真.
有任何想法吗?
我正在iPhone 3GS上编写一个简单的视频上传应用程序,我首先将用户引导到相册,然后选择要共享或上传的视频.我以下列方式使用UIImagePickerController:
videoPickerCtrl = [[UIImagePickerController alloc] init];
videoPickerCtrl.delegate = self;
videoPickerCtrl.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
videoPickerCtrl.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:videoPickerCtrl.sourceType];
videoPickerCtrl.allowsImageEditing = NO;
videoPickerCtrl.mediaTypes = [NSArray arrayWithObject:(NSString *)kUTTypeMovie];
[window addSubview:videoPickerCtrl.view];
Run Code Online (Sandbox Code Playgroud)
但我可以看到,一旦控制器被调用,就会出现令人不安的视频修剪界面.按"选择"后,无论是否触摸剪裁控制,视频都会被修剪.有没有办法绕过这个修剪界面并直接获取视频文件的路径?
java ×2
.net ×1
c# ×1
c++ ×1
debugging ×1
django ×1
download ×1
excel ×1
hash ×1
ide ×1
iphone ×1
iphone-3gs ×1
junit ×1
md5 ×1
netbeans ×1
objective-c ×1
passwords ×1
python ×1
sha ×1
spring-mvc ×1
svn ×1
tortoisesvn ×1
unit-testing ×1
xcode ×1