我知道SQLite本身并不强制执行外键,但这不是我主要关注的问题.问题是:如果我宣布
CREATE TABLE invoice (
invoiceID INTEGER PRIMARY KEY,
clientID INTEGER REFERENCES client(clientID),
...
)
Run Code Online (Sandbox Code Playgroud)
sqlite至少会使用clientID是外键的信息来优化查询并自动索引invoice.clientID,还是这个约束是真正的无操作?
我正在使用pylint + pydev,python 2.6.我有一个只有这行代码的模块
from email import Message
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试运行此模块时,它运行正常.但是pylint报告错误:
ID: E0611 No name 'Message' in module 'email'
Run Code Online (Sandbox Code Playgroud)
虽然它存在......任何想法为什么?
换句话说,以下"光标"方法是否有效:
LastMax
"SELECT * FROM MyTable WHERE Id > {0}", LastMax
为了使其工作,我必须确保我在步骤1中没有得到的每一行都有一个大于的Id LastMax
.这是保证,还是我可以遇到奇怪的竞争条件?
我(ab)使用文档标题作为某种通知区域.如果有问题的选项卡/窗口在我想要通知用户某事时没有焦点,我会更改窗口标题以包含一些通知.
当窗口/选项卡重新聚焦时,我想删除通知,即将标题重置为标准.但是,此重置有时在Chrome中不起作用.
当我来自不同的窗口时,标题会正确更新,但是当我来自同一窗口中的不同选项卡时,它不会.
我找到了一个解决方法(我会将其作为答案发布),但请分享您可能需要解决的任何其他想法.
我正在尝试使用.NET 4.5的新正则表达式匹配超时,特别是AppDomain.CurrentDomain.SetData
具有"REGEX_DEFAULT_MATCH_TIMEOUT"
属性的全局变体via (将您传递TimeSpan
给正则表达式构造函数的变体工作正常).
当我使用这个main方法创建一个新的控制台应用程序:
static void Main(string[] args)
{
AppDomain.CurrentDomain.SetData("REGEX_DEFAULT_MATCH_TIMEOUT",
TimeSpan.FromSeconds(3));
var m = System.Text.RegularExpressions.Regex.Match(
"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "^(x+x+)+y$");
}
Run Code Online (Sandbox Code Playgroud)
它按预期工作:三秒后,它会抛出一个RegexMatchTimeoutException
.
但是,如果我创建一个空的MVC 4应用程序,请添加一个HomeController
和此操作方法:
public ActionResult Index()
{
AppDomain.CurrentDomain.SetData("REGEX_DEFAULT_MATCH_TIMEOUT",
TimeSpan.FromSeconds(3));
var m = System.Text.RegularExpressions.Regex.Match(
"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "^(x+x+)+y$");
return View();
}
Run Code Online (Sandbox Code Playgroud)
并且访问http://localhost:XXXXX/
没有异常被抛出并且匹配尝试继续.(如果你等待足够长的时间,它会最终完成,然后抱怨缺少的观点.这需要veeery长虽然).
调用SetData
在Global.asax
的Application_Start()
,而不是控制操作中不会使超时要么发生.
这里有一大堆半问题,甚至还有更多关于寻找bug追踪器的人的答案.然而,所有这些(我发现)似乎都是基于网络的解决方案.由于我正在开发一个我不想建立Web/DB服务器的本地项目,而且我也不想使用托管跟踪器,我正在寻找在本地运行的东西.
有什么建议?
在创建方法时,是否应该将在该方法中实例化的每个对象作为参数传入,以便可以在单元测试中模拟这些对象?
我们在工作中有很多方法,没有相关的单元测试,也没有回顾性地编写测试; 我们发现在这些方法中实例化了很多对象.
我们的一个选择是将我们当前的方法重构为更像单元的方法,并减少每个方法的责任数量.这可能是一个漫长的过程,但对我们来说肯定是一个很大的好处.
你怎么看?是否应将在方法中实例化的所有对象作为参数传入?
我需要将Monthname转换为该月的整数(并且希望避免使用大的switch语句).有任何想法吗?
我有一个以数据为中心的应用程序,用Python/PyQt编写.我打算做一些重构来真正将UI与核心分开,主要是因为还没有任何真正的测试,而且显然必须改变.
已经存在一些分离,我认为我已经以正确的方式做了很多事情,但它远非完美.两个例子,告诉你什么样的事情困扰着我:
当用户右键单击数据对象的表示时,弹出的上下文菜单由数据对象创建,尽管此数据对象(实质上是数据库行的ORM表示)应该与UI无关.
当某些内容被写入数据库但写入失败时(例如,因为数据库记录被其他用户锁定),会向用户呈现经典的"重试/中止"消息框.此对话框由数据提供程序*创建,但提供程序显然不应具有任何UI功能.显然,提供者可以提出异常或以其他方式指示失败,并且UI可以捕获并相应地采取行动.
*这是我用于对象的词,它基本上代表数据库表并在其数据对象和数据库引擎之间进行调解; 我不确定这是否通常被称为"提供者"
我没有测试经验,所以我不容易"感觉"可测性问题等,但在我开始之前,必须进行一些重组.
没有复杂的业务逻辑(它主要只是CRU D,是的,即使没有D),这将比重写更重组,所以我并不真正关心引入这个问题中讨论的回归错误.
我的计划是开始重构这个想法,因为UI部分很容易被删除,例如,由Web前端或基于文本的界面而不是Qt界面替换.另一方面,Qt本身仍将被核心使用,因为信号/插槽机制在很多地方使用,例如数据对象发出changed
信号来指示,你知道什么.
所以,我的问题:这是一种提高可测试性和可维护性的可行方法吗?还有其他任何评论,特别是考虑到Python吗?
我google了很多,我找不到这个问题的任何答案......
我有一个C++控制台应用程序,它读取1GB SD卡,修复不正确关闭的文件并相应地写入FAT表.SD卡最初由定制设备中的固件写入.它工作正常到Xp并停止在Win Vista/7中工作.我尝试提升权限:在管理员帐户类型中,我使用"以管理员身份运行"方法启动了一个cmd窗口,但没有运气.我还尝试使用清单,要求获得最高可用权限,但没有运气.
我在一些帖子中读到"Windows Vista根本不允许您从用户模式进程访问磁盘.有没有人知道绕过这种行为的方法?
我正在解决方法,但我想知道这是不可能的
编辑:
这是我在这里发表的第一篇文章,所以我对链接问题并不十分了解......但我根本没有任何垃圾邮件......只是在社区网站上询问:)
代码看起来像
hDevice = CreateFile(buffer,GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,NULL, OPEN_EXISTING,0,NULL);
Run Code Online (Sandbox Code Playgroud)
然后,我从SD读取BTB信息,查找并不正确地关闭文件.
最后在尝试写入SD时
WriteFile(hDevice,buffer,SD_SECTOR_SIZE, &temp, 0)
Run Code Online (Sandbox Code Playgroud)
我拒绝访问(错误#5)
CreateFile()上的字符串是\.\ g:因为g字母对应于我机器上的SD卡.一切正常,正如我之前所说的那样.我也尝试使用:带有FSCTL_LOCK_VOLUME的DeviceIoControl但是会出现mem故障错误.
希望这有助于理解和感谢任何帮助
python ×3
javascript ×2
unit-testing ×2
.net ×1
appdomain ×1
asp.net-mvc ×1
bug-tracking ×1
c++ ×1
date ×1
email ×1
fat32 ×1
focus ×1
foreign-keys ×1
import ×1
indexing ×1
mocking ×1
non-web ×1
pydev ×1
pylint ×1
qt ×1
refactoring ×1
regex ×1
sql-server ×1
sqlite ×1
tdd ×1
winapi ×1
windows ×1