小编fri*_*edo的帖子

适用于PDF文件的MIME媒体类型

使用PDF时,我遇到了MIME类型application/pdfapplication/x-pdf问题.

这两种类型之间是否存在差异,如果是这样,它是什么?一个比另一个更受欢迎吗?

我正在开发一个必须提供大量PDF的网络应用程序,我想以正确的方式进行,如果有的话.

pdf mime content-type http-headers

1229
推荐指数
3
解决办法
79万
查看次数

单元测试数据库驱动的应用程序的最佳策略是什么?

我使用很多Web应用程序,这些应用程序由后端不同复杂程度的数据库驱动.通常,存在与业务和表示逻辑分离的ORM层.这使得对业务逻辑的单元测试相当简单; 事物可以在离散模块中实现,测试所需的任何数据都可以通过对象模拟来伪造.

但是测试ORM和数据库本身一直充满了问题和妥协.

多年来,我尝试了一些策略,其中没有一个完全满足我.

  • 使用已知数据加载测试数据库.针对ORM运行测试并确认正确的数据返回.这里的缺点是您的测试数据库必须跟上应用程序数据库中的任何模式更改,并且可能会不同步.它还依赖于人工数据,并且可能不会暴露由于愚蠢的用户输入而发生的错误.最后,如果测试数据库很小,它将不会显示缺失索引等低效率.(好吧,最后一个不是真的应该使用单元测试,但它没有受到伤害.)

  • 加载生产数据库的副本并对其进行测试.这里的问题是你可能不知道在任何给定时间生产数据库中有什么; 如果数据随时间变化,您的测试可能需要重写.

有些人指出,这两种策略都依赖于特定的数据,单元测试应该只测试功能.为此,我见过建议:

  • 使用模拟数据库服务器,并仅检查ORM是否正在发送正确的查询以响应给定的方法调用.

您使用了哪些策略来测试数据库驱动的应用程序?什么对你有用?

database orm unit-testing mocking

331
推荐指数
5
解决办法
9万
查看次数

你在哪里储存盐串?

在散列数据库存储密码时,我总是使用正确的每个条目的盐字符串.根据我的需要,将盐存储在哈希密码旁边的数据库中一直运行正常.

但是,有些人建议将盐与数据库分开存储.他们的论点是,如果数据库受到攻击,攻击者仍然可以构建一个彩虹表,将一个特定的盐字符串考虑在内,以便一次破解一个帐户.如果此帐户具有管理员权限,那么他甚至可能不需要破解任何其他帐户.

从安全角度来看,将盐储存在不同的地方是否值得?考虑在同一台机器上具有服务器代码和DB的Web应用程序.如果盐存储在该机器上的平面文件中,则很可能如果数据库受到损害,则salt文件也是如此.

有什么建议的解决方案吗?

security authentication hash cryptography salt

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

配置管理和版本控制有什么区别?

任何人都可以简单地解释一下配置管理和版本控制之间的区别是什么?从我在各种网站上可以找到的描述来看,配置管理似乎只是将配置文件放在源控制存储库中的一个奇特的术语.但其他人让我相信有一个更复杂的解释.

version-control configuration-management

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

Perl中的异常有什么问题?

另一个问题的讨论让我想知道:Perl缺少其他编程语言的异常系统是什么?

Perl的内置异常有点特别,因为它们像Perl 5对象系统一样,在事后的想法中加以分类,并且它们超出了其他不专门用于异常的关键字(evaldie).

与具有内置try/throw/catch类型语法的语言相比,语法可能有点难看.我通常这样做:

eval { 
    do_something_that_might_barf();
};

if ( my $err = $@ ) { 
    # handle $err here
}
Run Code Online (Sandbox Code Playgroud)

有几个CPAN模块提供语法糖来添加try/catch关键字,并允许轻松声明异常类层次结构等等.

我在Perl的异常系统中看到的主要问题是使用特殊的全局$@来保存当前错误,而不是catch从范围的角度来看可能更安全的专用类型机制,尽管我从来没有亲自遇到任何问题$@得到了.

syntax perl exception-handling exception

29
推荐指数
4
解决办法
4597
查看次数

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

Python列表理解与Perl中的map/grep是一回事吗?

我在使用Python中的列表理解语法时遇到了一些麻烦,所以我开始考虑如何在Perl中实现相同的功能,我更熟悉它.我意识到基本的例子(取自本页)都可以在Perl中用map或完成grep.

例如

(python)                            (perl)                  
S = [x**2 for x in range(10)]       @S = map { $_**2 } ( 0..9 );
V = [2**i for i in range(13)]       @V = map { 2**$_ } ( 0..12 );
M = [x for x in S if x % 2 == 0]    @M = grep { $_ % 2 == 0 } @S;
Run Code Online (Sandbox Code Playgroud)

那么"列表理解"只是"地图和/或过滤列表"的一个奇特的术语,还是有更多的东西?

python perl list

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

获取C中的时区GMT偏移量

我正在使用标准mktime函数将a struct tm转换为纪元时间值.这些tm字段在本地填充,我需要将纪元时间作为GMT.tm有一个gmtoff字段允许您为此目的设置本地GMT偏移量(以秒为单位).

但我无法弄清楚如何获取这些信息.当然必须有某个标准函数返回偏移量?怎么localtime做?

c timezone datetime libc

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

在MySQL中存储非常大的整数

我需要在MySQL表中存储非常大量(数千万)的512位SHA-2哈希值.为了节省空间,我想以二进制形式存储它们,而不是以十六进制数字形式存储它们.我正在使用ORM(DBix :: Class),因此存储的具体细节将从代码中抽象出来,这可以将它们扩展到我选择的任何对象或结构.

MySQL的BIGINT类型是64位.所以我理论上可以将哈希分成八BIGINT列.这看起来很荒谬.我的另一个想法是使用单个BLOB列,但我听说由于MySQL将它们视为可变长度字段,因此访问速度很慢.

如果有人可以提供一些widom,这将节省我几个小时的基准测试各种方法,我会很感激.

注意:对任何说"只使用postgres!"的人自动-1.:)

mysql storage blob

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

Perl中CHECK,UNITCHECK和INIT块的用处是什么?

我知道他们都做了什么,但从来没有发现自己处于我需要的任何一个状态.我曾BEGIN多次使用过块,偶尔使用过块END.BEGIN当您需要在代码运行之前调整环境时,它特别有用,并且我已经END在某些调试情况下用于捕获重要的状态信息,以便难以跟踪致命错误.

你曾经使用过CHECK,UNITCHECK或者INIT?如果是这样,那该怎么办?并且BEGIN由于某种原因,一块块还不够用吗?

块的文档在PerlDoc上.

perl compilation

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