问题列表 - 第37824页

Rails Newbie:控制器中错误处理的建议

对不起,如果问题很明显,我只是开始使用Rails.
我现在在几个控制器方法中有以下代码:

respond_to do |format|
    if @project.save
        format.html { redirect_to(edit_project_url(@project), :notice => '#{user.name} added to #{role}.') }
        format.js
    else
        format.html { render :action => "edit" }
        format.js #...
    end
end
Run Code Online (Sandbox Code Playgroud)

所以问题是,在所有方法中对错误做同样事情的最佳方法是什么?
是否建议我使用save!并处理它rescue_action

或者我应该采用自己的respond方法并传递save一个块?

ruby error-handling ruby-on-rails design-guidelines ruby-on-rails-3

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

ILMerge实际上是合并程序集,还是只将所有内容放在一个文件中?

ILMerge做什么?

它是创建一个新的程序集,还是只将多个程序集放入一个dll中?

我是从以下角度问:

  • 当我合并具有InternalsVisibleTo彼此属性的程序集时会发生什么?
  • 如果我从完全限定的程序集名称中进行字符串反射,会发生什么

谢谢

.net ilmerge

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

如何为"T必须是参考类型"编写单元测试?

考虑:

class MyClass<T> where T : class
{
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,where子句强制执行MyClass只是引用类型的通用的规范.

理想情况下,我应该有一个测试此规范的单元测试.但是,这个单元测试显然不起作用,但它解释了我想要实现的目标:

[Test]
[DoesNotCompile()]
public void T_must_be_a_reference_type()
{
    var test = new MyClass<int>();
}
Run Code Online (Sandbox Code Playgroud)

我可以做些什么来测试不允许代码编译实现的规范?

编辑:

更多信息:好的,所以我这样做的理由(哈哈)是我一直在遵循TDD方法,除非你有一个失败的单元测试,否则你不能编写任何代码.假设你有这个:

class MyClass<T> { }
Run Code Online (Sandbox Code Playgroud)

除非T是一个类,否则你可以写什么测试会失败?有点像default(T) == null

进一步编辑:

因此,在这个"根原因分析"后,问题是,我是靠着default(T)null这一类的消费者,以隐式方式.我能够将该消费者代码重构为另一个类,并在那里指定一个泛型类型限制(限制它class),这有效地使得代码无法编译,如果有人要删除我上面讨论的类的限制.

c# tdd unit-testing

11
推荐指数
2
解决办法
434
查看次数

我如何将Haskell类型类转换为F#?

我正在尝试将Haskell核心库的Arrows转换为F#(我认为这对于更好地理解Arrows和F#是一个很好的练习,我可能能够在我正在开发的项目中使用它们.)但是,直接翻译由于范式的不同,是不可能的.Haskell使用类型类来表达这些东西,但我不确定F#构造最好用F#的习语映射类型类的功能.我有一些想法,但最好把它提到这里,看看哪些被认为是最接近的功能.

对于tl; dr crowd:我如何将类型类(一个Haskell成语)翻译成F#惯用代码?

对于那些接受我长篇解释的人:

来自Haskell标准库的代码是我正在尝试翻译的一个例子:

class Category cat where
    id :: cat a a
    comp :: cat a b -> cat b c -> cat a c
class Category a => Arrow a where
    arr :: (b -> c) -> a b c
    first :: a b c -> a (b,d) (c,d)

instance Category (->) where
    id f = f
instance Arrow (->) where
    arr f = f
    first f = f *** id
Run Code Online (Sandbox Code Playgroud)

尝试1:模块,简单类型,让绑定

我的第一个镜头是直接使用模块组织来映射事物,例如:

type Arrow<'a,'b> …
Run Code Online (Sandbox Code Playgroud)

oop f# haskell functional-programming typeclass

43
推荐指数
2
解决办法
6425
查看次数

为什么我在Perl中得到"不能在严格引用时使用字符串作为SCALAR引用"?

use strict;
my @array=('f1','f2','f3');
my $dir ='\tmp';
foreach (@array) {
my $FH = $_;
open ("$FH", ">$dir/${FH}.txt") or die $!;
}

foreach (@array) {
 my $FH = $_;
 close($FH);
}
Run Code Online (Sandbox Code Playgroud)

我收到了"Can't use string ("f1") as a symbol ref while "strict refs" in use at bbb.pl line 6."错误.什么是isuse?

perl

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

使用boost进程访问共享对象的向量元素

我试图了解boost进程库的工作原理.我有一个Equipment类,它在向量容器中保存整数值.

在父母进程中; 我在MySegmentObject段中构造了Equipment对象,在该对象的构造函数中,我在MySegmentVector段中创建了向量.

使用子进程; 我想访问创建的对象并获取向量的大小.我可以使用segment->find方法访问该对象,但是当我getSize()从被访问对象调用该方法时,它崩溃了!

我做错了什么,可能我错过了共享内存概念.

我测试了Visual Studio 2010上的代码并提升了1.43.0 lib

Equipments.h

#pragma once
#include <boost/interprocess/managed_shared_memory.hpp>
#include <boost/interprocess/containers/vector.hpp>
#include <boost/interprocess/allocators/allocator.hpp>

using namespace boost::interprocess;

typedef boost::interprocess::allocator<int, managed_shared_memory::segment_manager>     ShmemAllocator; 
typedef boost::container::vector<int, ShmemAllocator> EqVector;

class Equipments { 
public:     
    Equipments(void);   
    ~Equipments(void);  
    void addEquipment(int n);   
    int getSize();  
    int getElement(int n);

private:
    const ShmemAllocator *alloc_inst;
    <offset_ptr>EqVector eqVector;
    managed_shared_memory *segment;
};
Run Code Online (Sandbox Code Playgroud)

Equipments.cpp

#include "StdAfx.h"
#include "Equipments.h"
#include <iostream>

Equipments::Equipments(void)
{   
    shared_memory_object::remove("mySegmentVector"); 
    segment = new managed_shared_memory(create_only, "mySegmentObjectVector", 65536);
    alloc_inst = new …
Run Code Online (Sandbox Code Playgroud)

c++ boost boost-interprocess visual-c++

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

帮助加速R中的循环

基本上我想在R中执行对角平均.下面是一些改编自simsalabim包的代码来进行对角线平均.只有这个很慢.

有关矢量化而不是使用sapply的任何建议吗?

reconSSA <- function(S,v,group=1){
### S : matrix
### v : vector

    N <- length(v)
    L <- nrow(S)
    K <- N-L+1
    XX <- matrix(0,nrow=L,ncol=K)
    IND <- row(XX)+col(XX)-1
    XX <- matrix(v[row(XX)+col(XX)-1],nrow=L,ncol=K)
    XX <- S[,group] %*% t(t(XX) %*% S[,group])

    ##Diagonal Averaging
    .intFun <- function(i,x,ind) mean(x[ind==i])

    RC <- sapply(1:N,.intFun,x=XX,ind=IND)
    return(RC)
}
Run Code Online (Sandbox Code Playgroud)

对于数据,您可以使用以下内容

data(AirPassengers)
v <- AirPassengers
L <- 30
T <- length(v)
K <- T-L+1

x.b <- matrix(nrow=L,ncol=K)
x.b <- matrix(v[row(x.b)+col(x.b)-1],nrow=L,ncol=K)
S <- eigen(x.b %*% t(x.b))[["vectors"]] 
out <- reconSSA(S, v, 1:10)
Run Code Online (Sandbox Code Playgroud)

loops r

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

如何在每次切换到另一个选项卡时停止执行T4?

当我编辑T4时,每次切换到另一个文件时都会执行脚本.对于快速简单的脚本是可以的,但是一些脚本需要很长时间才能执行.有没有办法禁用这种行为?我希望脚本只在我保存T4文件时运行或从菜单中手动选择"运行自定义工具".

c# t4 code-generation customtool visual-studio

16
推荐指数
3
解决办法
4192
查看次数

Reshard现有大型SVN存储库

我们有一个相当大的SVN存储库(50 GB,超过100000个版本).使用它非常慢,我的猜测是这样做的原因是db/revs和db/revprops中的平面目录结构(其中每个修订版本是一个文件).

我们将FSFS格式与SVN 1.5(在Linux服务器上)一起使用,但是repo是使用较旧的SVN版本创建的.现在我读到SVN 1.5支持"分片",我知道这个功能将修订版本分发到多个目录中,因此单个目录不包含这么多文件.这听起来非常有用,但不幸的是,这个功能看起来只适用于使用SVN 1.5新创建的存储库.

如何将现有的大型线性仓库转换为分片仓库?手册提到了工具"fsfs-reshard.py",但是这个脚本说"这个脚本未完成,不准备用于实时数据.相信我们.".所以我绝对不想用它.还有其他选择吗?

linux svn version-control fsfs

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

如何(深)复制const对象的地图

我有另一个问题,我似乎无法解决......,或在这个网站上找到...

我有一个带有地图的对象(称为DataObject),声明如下:

std::map<size_t, DataElement*> dataElements;
Run Code Online (Sandbox Code Playgroud)

现在我有一个复制功能(在复制构造函数中使用):

void DataObject::copy(DataObject const &other) {

    //here some code to clean up the old data in this object...

    //copy all the elements:
    size = other.getSize();
    for(size_t i = 0; i < size; ++i) {
            DataElement* dat = new DataElement(*other.dataElements[i]);
            dataElements[i] = dat;
    }

}
Run Code Online (Sandbox Code Playgroud)

这不能编译,因为在const对象上不能使用dataElements [i].如何对const对象拥有的地图中的所有元素进行深层复制?

我知道在const映射上可以使用find()函数,但是如何获取我想要复制的实际对象?

c++ stl const map deep-copy

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