我继承了一个Rails 2.2.2应用程序,用于在Amazon S3上存储用户上传的图像.基于attachment_fu的Photo模型提供了一种rotate方法,用于open-uri从S3和MiniMagick中检索图像以执行旋转.
该rotate方法包含此行以检索用于MiniMagick的图像:
temp_image = MiniMagick::Image.from_file(open(self.public_filename).path)
Run Code Online (Sandbox Code Playgroud)
self.public_filename 返回类似的东西
http://s3.amazonaws.com/bucketname/photos/98/photo.jpg
Run Code Online (Sandbox Code Playgroud)
检索图像并旋转它在生产和开发中正在运行的应用程序中工作正常.但是,单元测试失败了
TypeError: can't convert nil into String
/Users/santry/Development/totspot/vendor/gems/mini_magick-1.2.3/lib/mini_magick.rb:34:in `initialize'
/Users/santry/Development/totspot/vendor/gems/mini_magick-1.2.3/lib/mini_magick.rb:34:in `open'
/Users/santry/Development/totspot/vendor/gems/mini_magick-1.2.3/lib/mini_magick.rb:34:in `from_file'
Run Code Online (Sandbox Code Playgroud)
原因是当在单元测试的上下文中调用模型方法时,open(self.public_filename)返回StringIO包含图像数据的对象.path此对象上的方法返回nil并MiniMagick::Image.from_file爆炸.
当从该调用这个相同的模型方法时PhotosController,open(self.public_filename)返回FileIO绑定到例如名为的文件的实例,/tmp/open-uri7378-0并且该文件包含图像数据.
考虑原因必须是测试和开发之间的一些环境差异,我在开发环境下启动了控制台.但正如在单元测试中,open('http://...')返回一个StringIO,而不是一个FileIO.
我已经通过open-uri和所有相关的应用程序特定代码进行了跟踪,并且没有找到差异的理由.
我有一个SQL服务器数据库(Tables,Views,SP ...).我需要将此数据库转换为Oracle 10g.我该怎么做?
我有一个大型内部企业基于Web的应用程序在IIS6上运行ASP.NET 3.5的情况,生成401"未授权"响应,然后是200"Ok"响应(由Fiddler描述).我知道为什么会发生这种情况(集成auth强制浏览器重新发送凭据)但我正在寻找一些关于如何最小化或根除情况的想法.有问题的应用程序在WAN中运行,一些用户遇到的延迟时间高达250毫秒,因此强制后续请求会对页面加载时间产生明显影响,尤其是当页面上有许多级联下拉列表时.
应用程序的用户是托管桌面环境内部的,因此从部署的角度来看,可以强制浏览器在第一个请求上发送凭据(这是否可能?).这适用于需要用户身份但不需要身份验证的资源(WebResource.axd,ScriptResource.axd和一些自定义Web服务)的页面,允许匿名身份验证.我已经看过在web.config中基于每个位置定义这个,但是结果是混合的(仍然有许多401响应).
对于处理这种情况的"最佳实践",我很感激.有很多资源可以识别问题,但我找不到提供可行解决方案的资源.
谢谢!
编辑:可以通过向Web配置添加位置条目匿名请求不需要身份验证的资源(即用于级联下拉列表的Web服务),但我还没有找到经过身份验证的资源的答案.
我正在为我正在组合的应用程序进行基本用户身份验证,而且我没有太多安全经验.
这就是说,我理解在数据库中将(盐渍)密码哈希作为blob进行盐析/存储的做法(和必要性),而不是密码(加密或否).我已经实现了这一点.
通过对用户名进行腌制/散列并将散列存储在数据库中,而不是明文(或加密)中的用户名,是否可以获得任何东西?令我感到震惊的是,这将使得确定哪些用户可以使用数据库进行身份验证来访问系统变得更加困难.
由于让某人难以破解用户帐户的密码至关重要,因此增加确定哪些用户可行的难度也不合理吗?
编辑:我可能使用的某些语言不是100%正确:随意纠正:-)
编辑2:我改变了我的第一个点,表示腌制哈希 - 感谢大家指出我错过了这个:-)
Edit3:删除了表示我正在加密/解密密码的措辞.我正在使用盐渍哈希并将其存储在数据库中 - 感谢Scotty指出这一点.
我有一个要求,我可以在一个对象中获得以下内容 -
a type T or List<T>
Run Code Online (Sandbox Code Playgroud)
将对象转换为T很容易.如何将其转换为List(通过首先检查它是否可以成功转换),我想要转换的原因是滚动列表并在每个元素上调用tostring.
我的实际代码 -
namespace Generic_Collection_Code
{
class Program
{
public static string DumpObj(object obj)
{
string sTemp = String.Empty;
List<int> ints = obj as List<int>;
if (ints != null)
{
foreach (int i in ints)
sTemp += i.ToString() + ",";
sTemp.Trim(',');
}
else
{
List<string> strings = obj as List<string>;
if (strings != null)
{
foreach (string s in strings)
sTemp += s + ",";
sTemp.Trim(',');
}
else
{
sTemp += obj.ToString();
} …Run Code Online (Sandbox Code Playgroud) 我正在使用SICP讲座和文字来了解我自己的Scheme.我正在看一个练习,上面写着"表达式E的应用是形式的表达式(E E1,... En).这包括n = 0的情况,对应于表达式(E).一个Curried的应用程序E是E的应用或E的Curried应用的应用."
(编辑:我纠正了上面的引用......我最初错误地引用了这个定义.)
任务是定义一个Curried应用程序,该程序的计算结果为3
(define foo1
(lambda (x)
(* x x)))
Run Code Online (Sandbox Code Playgroud)
我真的不明白这个想法,阅读关于Curriying的维基百科条目并没有真正帮助.
任何人都可以帮助更清楚地解释这里要求的内容吗?
实际上,即使给我这个问题的答案也会有所帮助,因为在这之后还有五个要解决.......我只是没有得到基本的想法.
另外:即使在Brian Campbell冗长的解释之后,我仍然有点失落.
被(foo1 (sqrt 3)))认为是foo的应用程序,因此foo的curry应用程序?
似乎太简单了,但也许......
输入(((foo1 2 )) 2)DrScheme会出现以下错误(我有点期待)
procedure application: expected procedure, given: 4 (no arguments)
Run Code Online (Sandbox Code Playgroud)
重读后什么是Currying?我明白我也可以将foo1重新定义为:
(define (foo1 a)
(lambda (b)
(* a b)))
Run Code Online (Sandbox Code Playgroud)
那么我就可以打字了
((foo1 3 ) 4)
Run Code Online (Sandbox Code Playgroud)
12
但是这并没有让我更接近于将3作为输出,并且看起来这并不是原来的foo1,它只是重新定义它.
该死的,20年的C编程还没有为此做好准备.:-) :-)
我有一个字符串"搜索结果:找到16143个结果",我需要从中检索16143.
我正在使用ruby进行编码,我知道使用RegEx来获取它会很干净(因为它反对根据分隔符拆分字符串)
如何从ruby中的此字符串中检索数字?
如果我指望我的write()系统调用写入例如100字节,我总是将该write()调用放在一个循环中,该循环检查返回的长度是否是我预期发送的长度,如果不是,它会缓冲缓冲区指针并减少写入量的长度.
所以我再次这样做了,但是现在有了StackOverflow,我可以问你们所有人是否知道我的写作时间会写出我要求的所有内容而不是给我一个部分写入?
附加评论:X-Istence的回复提醒我,我应该注意到文件描述符是阻塞的(即,不是非阻塞).我认为他建议阻塞文件描述符上的write()不会写入所有指定数据的唯一方法是write()被信号中断.这似乎至少对我有直观的意义......
我有一个像这样的双引号字符串
$count = 5;
$str = "result: $count";
echo $str; //result: 5
Run Code Online (Sandbox Code Playgroud)
变量解析工作得很好,我的问题是$ count var必须晚于$ str定义
$str = "result: $count";
$count = 5;
echo $str; //result:
Run Code Online (Sandbox Code Playgroud)
因此,我将使用单引号并在此处提出一个问题,以便在需要时找到解析var的方法
$str = 'result: $count';
$count = 5;
//TODO: parse var process
echo $str; //result: 5
Run Code Online (Sandbox Code Playgroud)
我不会使用正则表达式替换.
class Category
{
public string Name { get; set; }
public int Count { get; set;}
}
Name Count
AA 2
BB 3
AA 4
Run Code Online (Sandbox Code Playgroud)
我有一个 IEnumerable<Category>
并希望获得具有唯一名称和多个条目总和的类别列表
产量
Name Count
AA 6
BB 3
Run Code Online (Sandbox Code Playgroud)
更新
class Category
{
public string Name { get; set; }
public int CountA { get; set;}
public int CountB { get; set;}
public string Phone { get; set;}
}
Run Code Online (Sandbox Code Playgroud)
我如何总结两列.并且电话列可以是最后一行或任何行