我试图从子视图控制器调用我的根视图控制器中的方法,这样当我更改我的选项时,它们将自动更新根视图,这将更新几个其他视图控制器.对于第二部分,我使用了通知,但为此我首先尝试使用委托,因为它(所以我一直相信)是一个很好的编程习惯.我无法使其工作,并且知道我可以轻松地设置另一个通知来完成这项工作.我应该继续尝试实施代理还是仅使用通知?
注意:这个问题和以下答案涉及data.table版本<1.5.3; v.1.5.3于2011年2月发布以解决此问题.查看更新的处理(03-2012):将外键上的SQL连接转换为R data.table语法
我一直在挖掘data.table包的文档(data.frame的替代品,对于某些操作来说效率更高),包括Josh Reich在纽约R Meetup(pdf)上关于SQL和data.table的演示,但是无法想象这完全琐碎的操作.
> x <- DT(a=1:3, b=2:4, key='a')
> x
a b
[1,] 1 2
[2,] 2 3
[3,] 3 4
> y <- DT(a=1:3, c=c('a','b','c'), key='a')
> y
a c
[1,] 1 a
[2,] 2 b
[3,] 3 c
> x[y]
a b
[1,] 1 2
[2,] 2 3
[3,] 3 4
> merge(x,y)
a b c
1 1 2 a
2 2 3 b …Run Code Online (Sandbox Code Playgroud) 我同时使用运行在一个问题find_or_create_by上的has_many through关联.
class Permission < ActiveRecord::Base
belongs_to :user
belongs_to :role
end
class Role < ActiveRecord::Base
# DB columns: user_id, role_id
has_many :permissions
has_many :users, :through => :permissions
end
class User
has_many :permissions
has_many :roles, :through => :permissions
end
Run Code Online (Sandbox Code Playgroud)
当调用的Rails引发错误find_or_create_by的roles一个关联User对象.
u = User.first
u.roles.find_or_create_by_rolename("admin")
# Rails throws the following error
# NoMethodError: undefined method `user_id=' for #<Role id: nil, rolename: nil,
# created_at: nil, updated_at: nil>
Run Code Online (Sandbox Code Playgroud)
我能够通过更改我的代码来解决此问题,如下所示:
unless u.roles.exists?(:rolename => "admin") …Run Code Online (Sandbox Code Playgroud) 我正在尝试交换对象以解决使用void指针交换对象的作业问题.我的功能声明必须是:
void swap(void *a, void *b, size_t size);
Run Code Online (Sandbox Code Playgroud)
我不是在寻找确切的代码如何做到这一点我可以自己解决,但我不确定我是否理解正确.我发现有一个问题是:
void *temp;
temp = a;
a = b;
b = temp;
Run Code Online (Sandbox Code Playgroud)
只更改指针指向的内容.那是对的吗?如果它是正确的,为什么交换指针实际上不会改变*a和*b之间的内容.因为如果你的指针指向不同的东西,你不能取消引用它,现在对象会有所不同吗?
同样,只需切换如下值:
void *temp;
*temp = *a;
*a = *b;
*b = *temp;
Run Code Online (Sandbox Code Playgroud)
也不正确,我不知道为什么.因为在我看来,内容是切换的.
交换对象是否意味着完全交换内存和指针指向的值?
因此我似乎必须使用malloc为我的交换分配足够的空间.如果我为一个对象分配足够的内存,假设它们的大小相同,我真的不知道它与上面的其他两种方法有什么不同.
void *temp = malloc(sizeof(pa));
// check for null pointer
temp = a;
// do something I'm not sure of since I don't quite get how allocating space is any
// different than the two above methods???
Run Code Online (Sandbox Code Playgroud)
谢谢!
我正在尝试使用以下方法将一些汉字写入文本文件
Set myFSO = CreateObject("Scripting.FileSystemObject")
Set outputFile = myFSO.OpenTextFile(getOutputName(Argument, getMsiFileName(Wscript.Arguments)), forWriting, True)
outputFile.WriteLine(s)
Run Code Online (Sandbox Code Playgroud)
该变量s包含一个我从其他文件中读取的汉字。我回显s值,并且可以在屏幕上正确看到。但是,由于某种原因,脚本在停止后outputFile.WriteLine(s)不会返回任何错误消息而停止运行。
我想念什么吗?
我正在寻找在Android手机上备份我的应用数据库的方法.我知道SQLite数据库只是文件,所以我希望能够将文件复制到SD卡(如果有的话).
但是,我不确定如何为备份/恢复准备数据库/活动.
启动时,我的主要活动从数据库中的一个表中读取条目并将其显示在a中ListView.如API的"Notes"示例所示,我有一个游标自动通知该表的更改(ListView当我在表中添加/删除/更新记录时会自动更新).
所以:当我将数据库文件复制到SD卡时,我不应该有问题.但是如果用户想要恢复数据库文件呢?我不能只将文件复制回数据文件夹,我可以(编辑:...当视图显示来自数据库的数据,因此可能保持打开连接)?
实施备份/恢复时,什么是"最佳实践"?我考虑过的一种方法是:
finish()主活动以删除它并关闭数据库连接finish()"恢复"活动这会是要走的路吗?谢谢你的建议!
每当我在列表(ol,ul,dl)中放入复选框,然后在列表上方动态插入按钮时,我就会在Firefox中遇到一些奇怪的行为.如果我从一个像这样的简单列表开始:
<dl class="c">
<dt><label for="a1"><input type="checkbox" id="a1" />one</label></dt>
<dt><label for="a2"><input type="checkbox" id="a2" />two</label></dt>
<dt><label for="a3"><input type="checkbox" id="a3" />three</label></dt>
</dl>
Run Code Online (Sandbox Code Playgroud)
并添加一些像这样的jQuery:
$(document).ready(function(){
var a = $('<button type="button">a</button>');
var b = $('<button type="button">b</button>');
$('<div/>').append(a).append(b).insertBefore($('.c'));
});
Run Code Online (Sandbox Code Playgroud)
...然后在Firefox中打开它,它起初看起来很好.但是检查第一个复选框,重新加载页面,复选标记跳转到第二个框.再次重新加载,它跳到第三个.再次重新加载,并且不会选中任何复选框.
如果我通过删除其中一个追加呼叫而忽略其中一个按钮,那就没问题了.如果我将按钮更改为div或类似的东西,那很好.如果我用div替换dl标签(并摆脱dt标签),那很好.但我需要两个按钮,并且复选框必须在我正在尝试构建的列表中.
有人知道是什么原因引起的吗?
我想在运行时创建一个.NET表单,添加按钮和其他控件(也在运行时),然后能够从该表单生成something.designer.cs文件(然后可以将其添加到C#解决方案中)并编译).
我想做的与WinForm设计师的做法非常相似.但是我没有为用户提供拖放界面,而是希望在运行时自动动态构建表单/控件.
我以为我可以重用WinForm设计师正在做的事情.
那可能吗?
看一下Windows tooltips类提示窗口,我看到它在提示窗口的实际矩形之外绘制了它的阴影.
使用SpyXX - 我可以获得工具提示的窗口rect和类样式:

Rectangle: (440, 229)-(544, 249), 104x20
Restored Rect: (440, 229)-(544, 249), 104x20
Client Rect: (0, 0)-(104, 20), 104x20
Run Code Online (Sandbox Code Playgroud)
您会注意到,您看到的投影实际上位于正在绘制的窗口之外.我怎么能画外一个影子在我的窗口,而被外界我的窗口?
注意:阴影不是使用标准CS_DROPSHADOW类样式绘制的.我已通过实验证实了这一点,并且还可以在SpyXX中看到窗口的类样式; 它不使用CS_DROPSHADOW:
Windows Styles: 94000001
WS_POPUP 80000000
WS_VISIBLE 10000000
WS_CLIPSIBLINGS 4000000
TTS_ALWAYSTIP 1
Extended Styles: 00080088
WS_EX_LAYERED 80000
WS_EX_TOOLWIN 80
WS_EX_TOPMOST 8
Run Code Online (Sandbox Code Playgroud)
那我怎么能在窗外画画?
注意:尝试在桌面上绘制DC已经完成.来自Greg Schechter的重定向GDI,DirectX和WPF应用程序:
从屏幕上绘图和阅读 - Baaaad!
最后,由于我们处于重定向主题,一个特别危险的做法是写入屏幕,通过使用GetDC(NULL)并写入,或尝试执行XOR橡皮带线等.有两个写入屏幕的重要原因很糟糕:
它很昂贵...写入屏幕本身并不昂贵,但它几乎总是伴随着从屏幕读取,因为在写入屏幕时,通常会执行读取 - 修改 - 写入操作,如XOR.从视频内存表面读取非常昂贵,需要与DWM同步,并停止整个GPU管道以及DWM应用程序管道.
这是不可预测的......如果你以某种方式设法到达实际的主要部分并写入它,那么你写入主数据库的内容将保留在屏幕上的时间就不可预测.由于UCE不知道它,它可能在下一帧刷新中被清除,或者它可能持续很长时间,这取决于屏幕上需要更新的其他内容.(我们实际上不允许直接写入主数据库,因为这个原因......例如,如果您尝试访问DirectDraw主数据库,DWM将关闭,直到访问应用程序退出)
我需要一种方法来定义一个FLAGS_IF宏(或等价物)
FLAGS_IF(expression)
<block_of_code>
FLAGS_ENDIF
Run Code Online (Sandbox Code Playgroud)
在调试中编译时(例如,使用特定的编译器开关)编译为
if (MyFunction(expression))
{
<block_of_code>
}
Run Code Online (Sandbox Code Playgroud)
而在发布中不会产生任何指令,就像它是这样的
#if 0
<block_of_code>
#endif
Run Code Online (Sandbox Code Playgroud)
在我对C/C++预处理器问题的无知中,我无法想到这样做的任何天真的方式(因为#define FLAGS_IF(x) #if 0甚至没有编译),你能帮忙吗?
我需要一个解决方案:
*/内部存在,不会搞砸<block_of_code>if (false){<block_of_code>}吗?)