我正在构建一个asp.net mvc应用程序,用户可以将图片附加到他们的个人资料中,也可以在系统的其他区域附加,例如仪表板上显示最近消息等的消息小工具.
当用户上传这些内容时,我想知道将它们存储在数据库或磁盘上是否更好.
数据库优势
易于备份整个数据库,并保留配置文件内容/图像与相关的配置文件/用户表
当我稍后在轨道上构建Web服务时,他们可以从一个位置(数据库)中提取所有与profiile相关的数据
文件系统的优点
从磁盘加载文件可能更快
还有其他什么好处
其他网站在哪里存储此类信息.对于类似这样的事情,我是否有点担心数据库性能?
也许有一种方法可以缓存从数据库中提取的图像一段时间?
或者,将这些图像存储在数据库中的想法如何,但是将它们复制到磁盘,以便Web服务器可以从那里加载它们?这似乎既提供了Db的备份和便利,同时提供了磁盘上文件的速度优势.
有问题的基础设施
摘要
在SO上阅读很多相关的线程,许多人现在趋向于SQL Server Filestream类型.然而,从我可以收集的内容(我可能是错的),当文件非常小时,没有太大的好处.然而,当文件是多个MB或更大时,文件流看起来会大大提高性能.
由于我的个人资料图片往往约为5kb,我决定将它们作为varbinary(max)存放在数据库的文件存储中.
在ASP.NET MVC中,我确实看到了一些性能问题,返回FileContentResults从这样的数据库中拉出的图像.所以如果在我的应用程序缓存中找不到该文件的位置,我最终会在磁盘上缓存该文件.
所以我想我选择了混合动力车;
在任何时候我都可以删除磁盘上的缓存文件夹,并且当重新请求图像时,它们将在第一次命中时被重新复制并在之后从缓存中提供.
我正试图绕过这一个:
假设您有两个模型:
:bar has_many:foos
你有这样一个网址:http://myapp.com/24-name-of-the-bar-to-param/foos/new
在我的网站上,这个页面显示了很多关于用户要为其创建foo的栏的信息.因此,即使用户未登录,用户仍然可以看到该信息.
目前,当用户登录时,用于创建新foo的表单位于网页的左侧.当用户未登录时,请说"请登录或注册"
该表单解释了很多关于我的应用程序如何工作的内容,因此我想更改它以便即使用户未登录表单也会显示,如果他们单击提交,则会将他们带到login_path,然后当他们登录,回到提交表单的路径.
我遇到了这个问题:目前我的应用程序控制器中有一个login_required方法,如下所示:
def store_location
session[:return_to] = request.request_uri
end
def login_required
unless current_user || admin?
store_location
flash[:notice] = "Please log in"
redirect_to login_path and return false
end
end
Run Code Online (Sandbox Code Playgroud)
在foo的create动作上调用此登录所需操作.当我点击表单上的提交时,它会转到http://myapp.com/foos而不是http://myapp.com/24-name-of-the-bar-to-param/foos/new
我假设这是因为在创建操作上调用了登录所需的函数,而不是新操作.
有任何想法吗?
根据请求UPDATE这里是控制器代码和回调:
before_filter :find_bar, :except => [:index, :edit, :update]
before_filter :login_required, :only => [:create]
ssl_required :edit, :update
def new
@foo = Foo.new :amount => "0.00"
@foos = Foo.find(:all, :conditions => ["bar_id = ?", @bar.id], :order => "created_at DESC").paginate …Run Code Online (Sandbox Code Playgroud) 我有一个名为"divContainer"的div,其中我有很少的输入元素,如文本框,单选按钮等.我如何在CSS中定义当时的样式?我想提到这个特殊div内的元素的样式.不是整个形式.
例如:对于文本框,我需要宽度为150px; 对于单选按钮,我需要20px的宽度;
我经常使用以下方法将对象链接到父母:
Video parent;
Run Code Online (Sandbox Code Playgroud)
有时我的对象可以是不同对象类型的子对象,所以我:
int parentType;
Video parentVideo; // if parent == VIDEO then this will be used
Audio parentAudio; // if parent == AUDIO then this will be used
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?如何使用可以是不同类型实例的变量?
编辑:当然,如果视频和音频继承自相同的基类(例如媒体),我可以这样做:
Media parent;
Run Code Online (Sandbox Code Playgroud)
但是,如果父母不继承同一个基类怎么办?
我试图绕过为什么我们首先解决设计问题并决定采用可视化方法(UML)的原因,而不是从碰巧也是可执行的正式规范(RAD原型)开始,我们从可以不容易被证明有效。因此,当需要证明模型的属性时,我们发现需要在设计中定义约束,因此我们设计了形式语法(OCL)来定义模型上的约束。我很难理解这一飞跃回到我们开始的地方。我发现OCL困扰的UML设计(甚至是小册子中显示的示例)也不可读,甚至比无数的UML符号和约定更难以理解。因此,我想知道的是:在当今的软件开发世界中,使用OCL的关键领域是什么,与谁相关或值得学习?您的工作角色是什么样的?从来不编写代码的架构师是否使用UML和OCL,还是也与实现该代码的团队相同的程序员来设计和架构系统?
[更新:其次,在我看来,敏捷开发似乎与“重量级”过程相反,并且像OCL这样的用于设计图约束的领域特定语言似乎并不十分敏捷。是否在任何“敏捷”商店中使用UML + OCL,还是Scrummers普遍避开了它?]
假设我有一个事物列表(数字,为了简化这里),我有一个函数,我想用它来排序,使用SortBy.例如,以下按最后一位数字排序数字列表:
SortBy[{301, 201}, Mod[#,10]&]
Run Code Online (Sandbox Code Playgroud)
And notice how two of (ie, all of) those numbers have the same last digit. So it doesn't matter which order we return them in. In this case Mathematica returns them in the opposite order. How can I ensure that all ties are broken in favor of how the items were ordered in the original list?
(I know it's kind of trivial but I feel like this comes up from time to time so I thought …
我正在尝试在PHPunit中配置Mock对象以返回不同属性的值(使用__get函数访问)
例:
class OriginalObject {
public function __get($name){
switch($name)
case "ParameterA":
return "ValueA";
case "ParameterB":
return "ValueB";
}
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用以下方法来模拟:
$mockObject = $this->getMock("OrigionalObject");
$mockObject ->expects($this->once())
->method('__get')
->with($this->equalTo('ParameterA'))
->will($this->returnValue("ValueA"));
$mockObject ->expects($this->once())
->method('__get')
->with($this->equalTo('ParameterB'))
->will($this->returnValue("ValueB"));
Run Code Online (Sandbox Code Playgroud)
但这很可怕:-(
有没有办法测试选择器是否匹配给定的DOM元素?优选地,不使用像Sizzle这样的外部库.这是一个库,我想尽量减少"核心"库所需的第三方插件的数量.如果它最终需要Sizzle我只是将它作为插件添加到库中,以便那些想要它将启用的功能.
例如,我可以做类似的事情:
var element = <input name="el" />
matches("input[name=el]", element) == true
Run Code Online (Sandbox Code Playgroud)
编辑:在考虑了更多之后,我提出了一个解决方案,这在技术上有效,但在效率方面似乎不是最佳的:
function matchesSelector(selector, element) {
var nodeList = document.querySelectorAll(selector);
for ( var e in nodeList ) {
return nodeList[e] === element;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
基本上,函数使用给定的选择器查询整个文档,然后迭代nodeList.如果给定元素在nodeList中,则返回true,如果不是,则返回false.
如果有人能够提出更有效的答案,我很乐意将他们的答案标记为答案.
编辑:Flavius Stef向我指出了Firefox 3.6+,mozMatchesSelector的浏览器特定解决方案.我还发现Chrome的等价物(版本兼容性未知,它可能在Safari或其他webkit浏览器上有效或不起作用):, webkitMatchesSelector这与Firefox实现基本相同.我还没有找到IE浏览器的任何原生实现.
对于上面的示例,用法将是:
element.(moz|webkit)MatchesSelector("input[name=el]")
Run Code Online (Sandbox Code Playgroud)
似乎W3C也在Selectors API Level 2(此时仍为草案)规范中解决了这个问题.matchesSelector一旦批准,将成为DOM元素的方法.
W3C用法: element.matchesSelector(selector)
Since that specification is still a draft and there is a lag time before popular browsers implement the methods …
我正在尝试测试异常.
我有:
def test_set_catch_status_exception(self):
mro = self.mro
NEW_STATUS = 'No such status'
self.assertRaises(ValueError,mro.setStatus(NEW_STATUS))
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
======================================================================
ERROR: test_set_catch_status_exception (__main__.TestManagementReviewGoalGetters)
----------------------------------------------------------------------
Traceback (most recent call last):
File "test_ManagementReviewObjective.py", line 68, in test_set_catch_status_exception
self.assertRaises(ValueError,mro.setStatus(NEW_STATUS))
File "/Users/eric/Dropbox/ManagementReview.py", line 277, in setStatus
raise ValueError('%s is not in the list of allowed statuses: %s' % (status,LIST_OF_STATUSES))
ValueError: No such status is not in the list of allowed statuses: ['Concern or Delay', 'On Track', 'Off Track/Needs Attention']
----------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
谢谢
我有以下方法
-(IBAction)back:(id)sender {
}
Run Code Online (Sandbox Code Playgroud)
并希望能够知道发件人ID.
例如,如果有多个按钮链接到此方法,我想知道按下了哪个按钮.
base-class ×1
c# ×1
css ×1
image-upload ×1
iphone ×1
javascript ×1
jbuilder ×1
list ×1
mocking ×1
objective-c ×1
ocl ×1
oop ×1
php ×1
phpunit ×1
profile ×1
python ×1
redirect ×1
session ×1
sorting ×1
types ×1
uibutton ×1
uml ×1
unit-testing ×1
utilities ×1