因为 RoR 不提供validate_on_destroy,所以我本质上是通过使用before_destroy回调来实现的。
使用before_destory可以防止已删除的项目。effort_logged?下面的实现不起作用,因为当没有记录时,我想删除该项目及其所有依赖项。只要before_destroy按照下面的方式实施,我就无法这样做。
如果我了解在调用父级方法之前如何删除:dependent => :destroy与依赖子级相关的工作。如果我的假设是正确的,那么访问方法中的子项是否会导致它们不被删除?有没有更好的方法来检查是否可以根据其子级删除父级?before_destroybefore_destroyeffort_logged?
除了对 RoR 如何工作的好奇之外,我的目标是通过以下两项测试:
鉴于下面列出的所有内容,我希望这两项测试都能通过。
项目模型
class Project < ActiveRecord::Base
has_many :project_phases, :dependent => :destroy
def before_destroy
if effort_logged?
errors.add_to_base("A project with effort logged cannot be deleted")
false
else
true
end
end
def effort_logged?
project_phases.each do |project_phase|
project_phase.deliverables.each do |deliverable|
if (deliverable.effort_logged?)
return true
end
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
项目阶段模型
class ProjectPhase …Run Code Online (Sandbox Code Playgroud) 我正在尝试将数组中的一些字符串传递给我的C++ DLL.
C++ DLL的功能是:
extern "C" _declspec(dllexport) void printnames(char** ppNames, int iNbOfNames)
{
for(int iName=0; iName < iNbOfNames; iName++)
{
OutputDebugStringA(ppNames[iName]);
}
}
Run Code Online (Sandbox Code Playgroud)
在C#中,我加载这样的函数:
[DllImport("MyDLL.dll", CallingConvention = CallingConvention.StdCall)]
static extern void printnames(StringBuilder[] astr, int size);<br>
Run Code Online (Sandbox Code Playgroud)
然后我像这样设置/调用函数:
List<string> names = new List<string>();
names.Add("first");
names.Add("second");
names.Add("third");
StringBuilder[] astr = new StringBuilder[20];
astr[0] = new StringBuilder();
astr[1] = new StringBuilder();
astr[2] = new StringBuilder();
astr[0].Append(names[0]);
astr[1].Append(names[1]);
astr[2].Append(names[2]);
printnames(astr, 3);
Run Code Online (Sandbox Code Playgroud)
使用DbgView,我可以看到一些数据传递给DLL,但它打印出垃圾而不是"第一","第二"和"第三".
有线索吗?
我真的想创建一个看起来很漂亮的GUI桌面应用程序,例如:
我主要使用Qt/Swing/WinForm编程GUI
我已经厌倦了创建如此简洁的GUI,哈哈.
所以我在考虑潜入以下内容:
只是想知道如何创建非常酷的UI.
这听起来像个好名单吗?这里的任何开发人员可以分享他们用来创建非常酷的桌面应用程序的平台吗?
在旁注中,我真的很想知道Apple/Microsoft的开发人员用什么来开发自己看起来很酷的软件.
编辑 很多回复都谈到了可用性对"酷看"的重要性.
我完全同意可用性和简单性是用户界面设计最重要的方面.我已经做了一段时间的GUI开发(> 3年),所以我理解.
但是使用外观酷炫的用户界面还可以改善用户体验+它可能会对您的软件是否销售产生重大影响.
我的意思是,否则为什么微软/苹果每次有新版本时都试图让他们的操作系统UI看起来"更酷"?为什么网站会像pragprog.com或versionsapp.com.让他们的网站看起来像那样?基本上你一石二鸟:看起来很模糊的UI +超级可用性(因为它看起来简单直观).
这就是我正在努力的目标.据我所知,我无法使用Qt/Winform实现这一目标.我读过的大部分书籍都向您展示了如何制作平均外观(阅读:1990年代)UI.我想学习如何创建外观酷炫的UI.我现在看到的唯一一个看起来很酷的用户界面的地方就是我上面列出的技术.我并不喜欢任何技术; 但我只想知道其他技术是如何完成的,看看我是否可以将它们应用到我正在使用的技术中,或者看看我是否可以在我的工作中使用这些技术.
一个例子:如果我要在这个UI和这个用户界面之间进行选择,我可能会选择后者,如果只是基于外观.
从功能上讲,它们只是相同的用户界面; 他们都允许你跟踪你的时间.它们都包含按钮和文本框等.但它们看起来不同的事实,也在吸引力方面区分它们.
总而言之,我认为"冰上蛋糕"非常重要.在你确定你有一个完全直观,可用的用户界面后,我会说这是你努力的事情.
我可以通过查找一阶导数或其他东西的零交叉来自己编写一些东西,但它似乎是一个通用的函数,可以包含在标准库中.谁知道一个?
我的特定应用是2D阵列,但通常它将用于在FFT等中查找峰值.
具体而言,在这些类型的问题中,存在多个强峰,然后是许多较小的"峰值",这些"峰值"仅由应该忽略的噪声引起.这只是例子; 不是我的实际数据:
一维峰值:
二维峰值:

峰值寻找算法将找到这些峰值的位置(不仅仅是它们的值),理想情况下会找到真正的样本间峰值,而不仅仅是具有最大值的索引,可能使用二次插值等.
通常,您只关心一些强峰,因此它们要么被选中,要么是因为它们高于某个阈值,要么是因为它们是有序列表的前n个峰值,按振幅排列.
正如我所说,我知道如何自己写这样的东西.我只是问是否有一个已知的功能或包已知可以正常工作.
更新:
我翻译了一个MATLAB脚本,它适用于1-D案例,但可能更好.
更新更新:
sixtenbe 为1-D案例创造了更好的版本.
我现在需要做一个网址重写工作.
我不知道是否应该将代码放入.htaccess或httpd.conf中?
编辑
什么是.htaccess的影响范围?它会影响所有请求还是只影响它所在的特定目录的请求?
如何在使用racket运行脚本时检测给定的命令行参数?也就是说,相当于Python中的sys.argv,Java中的args []等等......
我创建了Ext.Window,里面有一些Ext.form字段.但是当我调整窗口窗体时,元素仍然具有初始宽度和高度.
是否需要在窗口大小调整时显式调整表单字段的大小?或者有一些选项可以自动调整表单字段的大小?
示例代码:
var f_1 = new Ext.form.TextField({fieldLabel: 'Label 1'});
var f_2 = new Ext.form.TextField({fieldLabel: 'Label 2'});
var fp = new Ext.form.FormPanel({items: [f_1, f_2]});
var w = new Ext.Window({
layout: 'form',
title: 'test',
items: fp
});
w.show()
Run Code Online (Sandbox Code Playgroud) 对于一个场景,我有一个ASP.NET MVC应用程序,其URL如下所示:
http://example.com/Customer/List
http://example.com/Customer/List/Page/2
http://example.com/Customer/List
http://example.com/Customer/View/8372
http://example.com/Customer/Search/foo/Page/5
Run Code Online (Sandbox Code Playgroud)
这些URL通过以下路由实现 Global.asax.cs
routes.MapRoute(
"CustomerSearch"
, "Customer/Search/{query}/Page/{page}"
, new { controller = "Customer", action = "Search" }
);
routes.MapRoute(
"CustomerGeneric"
, "Customer/{action}/{id}/Page/{page}"
, new { controller = "Customer" }
);
//-- Default Route
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Customer", action = "Index", id = "" }
);
Run Code Online (Sandbox Code Playgroud)
这些都进展顺利,直到新的要求到达并希望从URL中删除关键字"客户",以使URL看起来像:
http://example.com/List
http://example.com/List/Page/2
http://example.com/List
http://example.com/View/8372
http://example.com/Search/foo/Page/5
Run Code Online (Sandbox Code Playgroud)
编辑:更正了示例链接,感谢@haacked.
我尝试添加new MapRoutes以{action}仅采用并将默认控制器设置为Customer.例如/
routes.MapRoute(
"CustomerFoo"
, "{action}"
, new { controller = "Customer", action = …Run Code Online (Sandbox Code Playgroud) c# ×2
.htaccess ×1
.net ×1
apache ×1
arguments ×1
asp.net-mvc ×1
bit ×1
byte ×1
certificate ×1
command-line ×1
dll ×1
extjs ×1
fft ×1
httpd.conf ×1
javascript ×1
manifest ×1
marshalling ×1
pinvoke ×1
python ×1
racket ×1
routing ×1
scipy ×1
validation ×1