问题列表 - 第16230页

before_destroy 回调可防止在 Ruby on Rails 中删除子记录

因为 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)

validation ruby-on-rails

1
推荐指数
1
解决办法
4071
查看次数

C#:将字符串数组传递给C++ DLL

我正在尝试将数组中的一些字符串传递给我的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,但它打印出垃圾而不是"第一","第二"和"第三".

有线索吗?

c# dll pinvoke marshalling

4
推荐指数
1
解决办法
1万
查看次数

学习创造漂亮/下一代GUI

真的想创建一个看起来很漂亮的GUI桌面应用程序,例如:

  • Mac OS X界面
  • Windows上的Picasa桌面客户端
  • iPhone应用程序
  • Office 2007

我主要使用Qt/Swing/WinForm编程GUI

我已经厌倦了创建如此简洁的GUI,哈哈.

所以我在考虑潜入以下内容:

  • jQuery的
  • WPF/C#
  • iPhone SDK
  • Silverlight的
  • Adobe Air/Flex

只是想知道如何创建非常酷的UI.

这听起来像个好名单吗?这里的任何开发人员可以分享他们用来创建非常酷的桌面应用程序的平台吗?

在旁注中,我真的很想知道Apple/Microsoft的开发人员用什么来开发自己看起来很酷的软件.

编辑 很多回复都谈到了可用性对"酷看"的重要性.

我完全同意可用性和简单性是用户界面设计最重要的方面.我已经做了一段时间的GUI开发(> 3年),所以我理解.

但是使用外观酷炫的用户界面还可以改善用户体验+它可能会对您的软件是否销售产生重大影响.

我的意思是,否则为什么微软/苹果每次有新版本时都试图让他们的操作系统UI看起来"更酷"?为什么网站会像pragprog.com或versionsapp.com.让他们的网站看起来像那样?基本上你一石二鸟:看起来很模糊的UI +超级可用性(因为它看起来简单直观).

就是我正在努力的目标.据我所知,我无法使用Qt/Winform实现这一目标.我读过的大部分书籍都向您展示了如何制作平均外观(阅读:1990年代)UI.我想学习如何创建外观酷炫的UI.我现在看到的唯一一个看起来很酷的用户界面的地方就是我上面列出的技术.我并不喜欢任何技术; 但我只想知道其他技术是如何完成的,看看我是否可以将它们应用到我正在使用的技术中,或者看看我是否可以在我的工作中使用这些技术.

一个例子:如果我要在这个UI和这个用户界面之间进行选择,我可能会选择后者,如果只是基于外观.

从功能上讲,它们只是相同的用户界面; 他们都允许你跟踪你的时间.它们都包含按钮和文本框等.但它们看起来不同的事实,也在吸引力方面区分它们.

总而言之,我认为"冰上蛋糕"非常重要.在你确定你有一个完全直观,可用的用户界面后,我会说这是你努力的事情.

user-interface

3
推荐指数
1
解决办法
5821
查看次数

位/字节转换

多少位是一个长度为10个字符的.NET字符串?(.NET字符串是UTF-16,对吧?)

.net c# byte bit

2
推荐指数
1
解决办法
918
查看次数

Python/SciPy的峰值查找算法

我可以通过查找一阶导数或其他东西的零交叉来自己编写一些东西,但它似乎是一个通用的函数,可以包含在标准库中.谁知道一个?

我的特定应用是2D阵列,但通常它将用于在FFT等中查找峰值.

具体而言,在这些类型的问题中,存在多个强峰,然后是许多较小的"峰值",这些"峰值"仅由应该忽略的噪声引起.这只是例子; 不是我的实际数据:

一维峰值:

带峰值的FFT输出

二维峰值:

具有圆圈峰值的Radon变换输出

峰值寻找算法将找到这些峰值的位置(不仅仅是它们的值),理想情况下会找到真正的样本间峰值,而不仅仅是具有最大值的索引,可能使用二次插值等.

通常,您只关心一些强峰,因此它们要么被选中,要么是因为它们高于某个阈值,要么是因为它们是有序列表的前n个峰值,按振幅排列.

正如我所说,我知道如何自己写这样的东西.我只是问是否有一个已知的功能或包已知可以正常工作.

更新:

翻译了一个MATLAB脚本,它适用于1-D案例,但可能更好.

更新更新:

sixtenbe 为1-D案例创造了更好的版本.

python fft scipy hough-transform

123
推荐指数
6
解决办法
10万
查看次数

.htaccess或httpd.conf

我现在需要做一个网址重写工作.

我不知道是否应该将代码放入.htaccess或httpd.conf中?

编辑

什么是.htaccess的影响范围?它会影响所有请求还是只影响它所在的​​特定目录的请求?

apache .htaccess httpd.conf

4
推荐指数
1
解决办法
2557
查看次数

从DrRacket读入命令行参数

如何在使用racket运行脚本时检测给定的命令行参数?也就是说,相当于Python中的sys.argv,Java中的args []等等......

command-line arguments racket

2
推荐指数
1
解决办法
1203
查看次数

ExtJS:在窗口调整大小时自动调整表单字段的大小

我创建了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)

javascript extjs

5
推荐指数
1
解决办法
2万
查看次数

VS2008到VS2010项目升级后获得"清单签名证书"错误

我在计算机1(Vista)上用VS2008 C#Express创建了一个测试项目.

我在计算机2(Windows 7)上将其转换为VS2010 C#Express.

转换后的项目给了我这个错误:

无法在证书存储中找到清单签名证书.

我发现了有关签署项目证书等的文章,但它们并没有那么有用,因为我从未明确签署过该项目的任何证书.它只是我用VS2008 C#Express创建的一个小项目(带有MDF数据库/ LINQ-to-SQL).

我尝试在转换之前首先删除原始项目的.suoobjbin目录,但我仍然给出了相同的错误.

如何阻止已转换的VS2010项目尝试在证书库中找到"清单签名证书"?

certificate manifest visual-studio-2010 visual-studio-2008

3
推荐指数
1
解决办法
3885
查看次数

使用默认控制器的ASP.NET MVC路由

对于一个场景,我有一个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)

asp.net-mvc routing

14
推荐指数
2
解决办法
4万
查看次数