问题列表 - 第23694页

rails覆盖关系的默认getter(belongs_to)

所以我知道如何覆盖ActiveRecord对象的属性的默认getter

def custom_getter
  return self[:custom_getter] || some_default_value
end
Run Code Online (Sandbox Code Playgroud)

我试图实现相同的东西,但属于一个属于协会.例如.

class Foo < AR
  belongs_to :bar

  def bar
    return self[:bar] || Bar.last
  end
end

class Bar < AR
  has_one :foo
end
Run Code Online (Sandbox Code Playgroud)

当我说:

f = Foo.last
Run Code Online (Sandbox Code Playgroud)

我想让方法f.bar返回最后一个Bar,而不是nil,如果该关联还不存在.

但这不起作用.原因是self [:bar]总是未定义的.它实际上是自我[:bar_id].

我可以做一些天真的事情:

def bar
  if self[:bar_id]
    return Bar.find(self[:bar_id])
  else
    return Bar.last
  end
end
Run Code Online (Sandbox Code Playgroud)

但是,即使已经获取了Bar,这也总是会进行db调用,这当然不是理想的.

有没有人能够了解我如何建立关系,以便belongs_to属性只加载一次,如果没有设置则具有默认值.

activerecord ruby-on-rails associations default-value

47
推荐指数
3
解决办法
2万
查看次数

Django中所有Celery worker/memory缓存中的全局可访问对象

我有非常标准的Django + Rabbitmq + Celery设置,1个Celery任务和5个工作人员.

任务上传相同(我简化一点)大文件(~100MB)异步到许多远程PC.

一切都工作正常,代价是使用大量内存,因为每个任务/工作人员都将大文件单独加载到内存中.

我想要做的是拥有某种缓存,可以访问所有任务,即只加载一次文件.基于locmem的Django缓存是完美的,但是文档说:"每个进程都有自己的私有缓存实例",我需要所有工作者都可以访问这个缓存.

试图玩#2129820中描述的Celery信号,但这不是我需要的.

所以问题是:有没有办法可以在Celery中定义全局内容(就像基于dict的类,我可以在其中加载文件或smth).或者在这种情况下我可以使用Django技巧吗?

谢谢.

python django caching global-variables celery

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

是不是很好,每个PHP类都实现了一个Singleton模式

是不是很好,每个PHP类都实现了Singleton模式?我认为,因为它会减少内存使用量.这是正确的意见吗?谢谢!

php singleton design-patterns

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

在.net项目中查找未使用的类

我有一个VS.NET 2008项目.是否可以检查项目中未使用的类?使用FXcop,我可以找到未使用的变量和未使用的代码,但不是未使用的类.

.net refactoring visual-studio

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

MVC架构问题 - 付款处理应该在哪里?

这个问题与我的ASP.NET MVC 2开发有关,但它可以应用于任何MVC环境以及逻辑应该去哪里的问题.

因此,假设我有一个控制器,可以进行在线支付,例如购物车应用程序.我有接受客户信用卡信息的方法:

public class CartController : Controller
    CartRepository cartRepository = new CartRepository()

    [HttpPost]
    public ActionResult Payment(PaymentViewModel rec)
    {
        if(!ModelState.IsValid)
        {
            return View(rec);
        }

        // process payment here

        return RedirectToAction("Receipt");
    }
Run Code Online (Sandbox Code Playgroud)

在评论中process payment here应该处理付款处理:

  1. 在控制器?
  2. 通过存储库?
  3. 别的地方?

architecture model-view-controller asp.net-mvc

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

围绕NSMutableArray和NSArray的困惑

我有以下代码:

NSLog(@"items: %d", [items count]);
NSLog(@"allObjects: %d", [self.allObjects count]);

[self.allObjects addObjectsFromArray:items];

NSLog(@"allObjects: %d", [self.allObjects count]);
Run Code Online (Sandbox Code Playgroud)

其中产生以下输出:

items: 7
allObjects: 0
allObjects: 0
Run Code Online (Sandbox Code Playgroud)

items是NSArray

allObjects是一个NSMutableArray.

我很困惑为什么项目中的对象没有被添加到allObjects.我希望它很简单,但我的理解中有一个漏洞.

objective-c nsmutablearray nsarray

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

C#参数通过引用和.net垃圾回收

我一直试图找出.NET垃圾收集系统的复杂性,我有一个与C#引用参数有关的问题.如果我理解正确,方法中定义的变量将存储在堆栈中,不受垃圾回收的影响.所以,在这个例子中:

public class Test
{
 public Test()
 {
 }

 public int DoIt()
 {
  int t = 7;
  Increment(ref t);
  return t;
 }

 private int Increment(ref int p)
 {
  p++;
 }
}
Run Code Online (Sandbox Code Playgroud)

DoIt()的返回值为8.由于t的位置在堆栈上,因此该内存不能被垃圾收集或压缩,并且Increment()中的引用变量将始终指向t的正确内容.

但是,假设我们有:

public class Test
{
 private int t = 7;

 public Test()
 {
 }

 public int DoIt()
 {
  Increment(ref t);
  return t;
 }

 private int Increment(ref int p)
 {
  p++;
 }
}
Run Code Online (Sandbox Code Playgroud)

现在,t存储在堆上,因为它是我的类的特定实例的值.如果我将此值作为参考参数传递,这可能不是问题吗?如果我将t作为参考参数传递,p将指向t的当前位置.但是,如果垃圾收集器在压缩过程中移动此对象,那么会不会在Increment()中弄乱对t的引用?或者垃圾收集器是否更新通过传递引用参数创建的引用?我根本不用担心这件事吗?唯一提到的担心内存在MSDN上被压缩(我能找到)与将托管引用传递给非托管代码有关.希望这是因为我不必担心托管代码中的任何托管引用.:)

c# pass-by-reference

15
推荐指数
2
解决办法
3481
查看次数

在Hudson主节点上,在workspace-files文件夹中创建的.tmp文件是什么?

题:

在路径中HUDSON_HOME/jobs/<jobname>/builds/<timestamp>/workspace-files,有一系列.tmp文件.这些文件是什么,他们支持Hudson的哪些功能?

背景

使用Hudson版本1.341,我们有一个在从属实例上运行的连续构建任务.在构建完成之后,包括归档工件,任务扫描程序等,作业似乎会挂起很长一段时间.在监视主节点时,我注意到许多.tmp文件是在构建// workspace = files下创建和修改的,并且其中一些非常大.这似乎导致延迟,因为作业在此路径中的文件停止更改的同时完成.

该工作的一些关键配置点:

  • 它绑定到特定的从节点
  • 它构建在"自定义工作区"中
  • 它在工作区的一部分上运行Task Scanner插件以查找"todo"项
  • 它触发在同一从属节点上的同一自定义工作空间中构建的下游作业

hudson

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

从A [a,b]到A [c,d]的不同非循环路径的数量?

我正在写一个sokoban求解器,用于娱乐和练习,它使用一种简单的算法(类似于BFS,有点不同).

现在我想估计它的运行时间(O和omega).但需要知道如何计算网络中从顶点到另一个的非循环路径的计数.实际上我想要一个表达式来计算有效路径的数量,在两个顶点之间的顶点.

有效路径:

  • 访问每个顶点0或一次.
  • 没有电路

例如,这是一个有效的路径:

替代文字http://megapic.ir/images/f1hgyp5yxcu8887kfvkr.png

但这不是:

alt text http://megapic.ir/images/wnnif13ir5gaqwvnwk9d.png

需要一种找到两个顶点ab之间的所有非循环路径的计数的方法.

欢迎对解决方法和技巧的评论.

c++ algorithm math graph-theory discrete-mathematics

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

如何在模拟器上测试日历事件?

我正在开发一个需要添加Calendar事件的应用程序.我已经编写了将事件插入日历的代码.但每当我运行我的应用程序时,每次我收到错误"无法找到日历的提供程序信息",它也会抛出NullPointerException错误.所以,这意味着什么,我发现模拟器不提供内置的日历应用程序.

我认为如果Android Emulator没有Calender API,那么,它自然会在模拟器中没有任何数据库URI,而Contact有URI - "content:// contacts/people".我还发现日历的URI为"content:// calendar/calendars"但它不起作用,这意味着它给了我错误的日历应用程序错误原因.

关于日历活动的建议,有人可以澄清一下吗?

哪个是使用Calendar Event测试我的应用程序的方法?

android calendar android-emulator

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