问题列表 - 第16984页

Rails的protect_from_forgery真的有用吗?

我问这个是因为当我开始使用ajax或flash与rails进行通信时,我觉得这让我的生活过于复杂.

我知道防范CSRF很好,但我不能只检查引用者或其他东西吗?

security ruby-on-rails protect-from-forgery

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

如何在C++中记录异常情况?

在编写函数时,我的实现经常看起来像这样:

  • 调用子功能
  • 如果此子功能无法执行(由于异常情况):记录此故障并中止当前功能
  • 否则继续调用其他子功能,这反过来可能会失败

关键部分是伐木.每个失败的函数都应该在日志中添加简短描述.这样,在处理异常的级别,可以向用户显示详细的错误消息.

例如,考虑一个可以创建新用户帐户的应用程序,并且数据库连接存在问题.以下反向堆栈跟踪结果:

  • SQLDriverConnect() - >"SQLDriverConnect错误:未找到数据源且未指定默认驱动程序"
  • OpenDatabaseConnection() - >"无法打开数据库连接"
  • CreateUser() - >"无法创建新用户"
  • ValidateAndSaveNewUserAccount() - >"无法保存用户配置文件"
  • 捕获异常并将记录的消息显示给用户

使用例外功能,我将按如下方式实现:

void CreateUser()
{
    try {
        OpenDatabaseConnection();
    }
    catch(std::exception& e) {
        e.AddLog("Failed to create the new user");
        throw;
    }
    //...
}
Run Code Online (Sandbox Code Playgroud)

使用简单的返回值,我写下以下内容:

bool CreateUser(Log& log)
{
    if (!OpenDatabaseConnection(log))
    {
        log.Add("Failed to create the new user");
        return false;
    }
    //...
    return true;
}
Run Code Online (Sandbox Code Playgroud)

我发现两种实现都同样好.因此,我没有看到使用异常的优势.我很清楚异常处理通常被认为是一个有用的功能,但我真的不明白为什么.很久以前,我广泛使用异常处理,但我没有看到它的大优势,所以现在我再也不用它了.因此我的问题:

  • 使用异常,如何更简洁地在C++中实现?
  • 如果不是,那么抛出异常而不是返回"成功"布尔值的优点是什么呢?

注意:我使用术语日志记录 "收集对错误的解释,以便稍后可以将其呈现给用户".我宁愿不将该解释存储在日志消息的全局集合中(在内存中,在文件中或在数据库中),因为它直接描述了特定的异常.

更新:感谢您的回复.我知道只有当用户不需要有关错误的详细反馈时,例外才有用.(如果我误解了这个,请纠正我.)

c++ logging exception-handling exception

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

是否可以定义一个看起来几乎像评论的宏?

我尝试为日志记录创建一个有用的宏.但我发现NSLog和带有文本信息的所有其他类型的宏只会分散注意力.

有没有办法以某种方式"破解"Xcode,它会解释类似的东西

/*** do this because of that ***/ 
Run Code Online (Sandbox Code Playgroud)

作为宏调用,导致调用NSLog,例如?我希望这些日志"感觉"像评论.任何看起来像关键代码的东西都会分散注意力并最终降低生产力,然后记录正在发生的事情并没有真正的好处.

iphone xcode cocoa cocoa-touch

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

非虚基类的虚拟派生类

我有一个从非虚拟类派生的虚拟类.但是,当我将c派生类转换为基类时,该类已损坏.我正在使用调试器查看成员变量,并且当我执行该转换时,成员变量都已损坏.当我使用调试器进行转换(可能是虚拟指针)时,我看到有4字节的差异.对于Ex:

class A//non-virtual class
{
 ~A();
int fd;
};
class B:public A
{
virtual ~B();
};
Run Code Online (Sandbox Code Playgroud)

现在说B类型的obj的地址是:0x9354ed0.现在当我转换它(A*)(0x9354ed0)时,调试器将字节移动4个字节.因此,铸造的obj的起始地址是0x935ed4

将派生虚拟类转换为基于非虚拟类是错误的吗?4字节差异的原因是什么?什么是正确的投射方式?感谢您提供任何意见或解释.

c++ inheritance

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

time_ago_in_words和本地化

是否有可能使用time_ago_in_wordsi18n.locale

怎么样?

谢谢

ruby time datetime ruby-on-rails internationalization

13
推荐指数
2
解决办法
8231
查看次数

具有模板化类型的模板专业化

我想使用以下函数专门化一个类模板:

template <typename T>
class Foo
{
public:
    static int bar();
};
Run Code Online (Sandbox Code Playgroud)

该函数没有参数,应根据Foo的类型返回结果.(在这个玩具示例中,我们返回该类型的字节数,但在实际应用程序中我们要返回一些元数据对象.)专门化适用于完全指定的类型:

// specialization 1: works
template <>
int Foo<int>::bar() { return 4; }

// specialization 2: works
template <>
int Foo<double>::bar() { return 8; }

// specialization 3: works
typedef pair<int, int> IntPair;
template <>
int Foo<IntPair>::bar() { return 2 * Foo<int>::bar(); }
Run Code Online (Sandbox Code Playgroud)

但是,我想将此概括为依赖于(其他)模板参数本身的类型.添加以下特化会产生编译时错误(VS2005):

// specialization 4: ERROR!
template <>
template <typename U, typename V>
int Foo<std::pair<U, V> >::bar() { return Foo<U>::bar() + Foo<V>::bar(); }
Run Code Online (Sandbox Code Playgroud)

我假设这不是合法的C++,但为什么呢?有没有办法优雅地实现这种类型的模式?

c++ templates specialization

9
推荐指数
2
解决办法
3134
查看次数

C#相当于"My.Computer.Network.Ping"

问题说真的,VB.NET有一个C#答案My.Computer.Network.Ping吗?

干杯!

.net c#

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

绘制java类的依赖图

Heyho,我正在寻找像JDepend这样的工具来绘制java类文件的图形.JDepend接缝很好,但它不能解决deps中的deps(也许我只是缺少一些特殊的选项?).直接输出到.dot格式或图像将是很好的.谢谢

java tree dependencies class

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

(int(*)())在函数调用中的含义

就像标题所说,我想知道C-define-function-call中的" (int(*)()) "是什么意思?

例如,它看起来类似于:

#define Bla(x)    (Char *) read((char *(*)()) Blub, (char **) x)
Run Code Online (Sandbox Code Playgroud)

或这个

#define XXX(nx, id)     PEM_ASN1_write_bio((int (*)()) id, (char *) nx)
Run Code Online (Sandbox Code Playgroud)

先感谢您!

c

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

Mathematica,PDF曲线和阴影

我需要绘制正态分布,然后遮蔽它的某些特定区域.现在我通过创建分布图并用RegionPlot覆盖它来做到这一点.这是非常复杂的,我确信必须有一种更优雅的方式.我用Google搜索,看着文档,一无所获.帮帮我啊!

我猜Mathematica算作编程?:d

statistics wolfram-mathematica

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