对不起,如果问题很明显,我只是开始使用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
ILMerge做什么?
它是创建一个新的程序集,还是只将多个程序集放入一个dll中?
我是从以下角度问:
InternalsVisibleTo彼此属性的程序集时会发生什么?谢谢
考虑:
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),这有效地使得代码无法编译,如果有人要删除我上面讨论的类的限制.
我正在尝试将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) 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?
我试图了解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) 基本上我想在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) 当我编辑T4时,每次切换到另一个文件时都会执行脚本.对于快速简单的脚本是可以的,但是一些脚本需要很长时间才能执行.有没有办法禁用这种行为?我希望脚本只在我保存T4文件时运行或从菜单中手动选择"运行自定义工具".
我们有一个相当大的SVN存储库(50 GB,超过100000个版本).使用它非常慢,我的猜测是这样做的原因是db/revs和db/revprops中的平面目录结构(其中每个修订版本是一个文件).
我们将FSFS格式与SVN 1.5(在Linux服务器上)一起使用,但是repo是使用较旧的SVN版本创建的.现在我读到SVN 1.5支持"分片",我知道这个功能将修订版本分发到多个目录中,因此单个目录不包含这么多文件.这听起来非常有用,但不幸的是,这个功能看起来只适用于使用SVN 1.5新创建的存储库.
如何将现有的大型线性仓库转换为分片仓库?手册提到了工具"fsfs-reshard.py",但是这个脚本说"这个脚本未完成,不准备用于实时数据.相信我们.".所以我绝对不想用它.还有其他选择吗?
我有另一个问题,我似乎无法解决......,或在这个网站上找到...
我有一个带有地图的对象(称为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()函数,但是如何获取我想要复制的实际对象?