我正在为Rails3制作一个插件.我想允许用户覆盖一些设置.目前我在我的插件的Rails :: Engine类中执行此操作,如:
config.my_setting = :default_value unless config.respond_to? :my_setting
Run Code Online (Sandbox Code Playgroud)
这似乎是处理这个问题的错误方法.大多数插件在Rails3中使用是否有更好的方法或约定?
如果源对象为空,是否可以将AutoMapper配置为返回目标类型的新实例?
Source source = null;
Dest d1 = AutoMapper.Mapper.Map<Source, Dest>(source);
// d1 == null
// I'm looking for a way to configure AutoMapper to
// eliminate this code:
Dest d2 = AutoMapper.Mapper.Map<Source, Dest>(source) ?? new Dest();
Run Code Online (Sandbox Code Playgroud) 是否有一个插件或其他模仿ASP.NET中的Rails延迟作业?在ASP.NET应用程序中运行异步代码或作业的最佳方法是什么?
我当然可以使用is_base如果基类不是模板.但是,当它是,我只是没有看到任何方式来一般匹配任何派生类型.这是我的意思的基本例子:
#include <boost/mpl/bool.hpp>
template < typename T >
struct test_base
{
};
template < typename T >
struct check : boost::mpl::false_ {};
template < typename T >
struct check<test_base<T> > : boost::mpl::true_ {};
struct test_derived : test_base<int> {};
#include <iostream>
int main()
{
std::cout << check<test_derived>::value << std::endl;
std::cin.get();
}
Run Code Online (Sandbox Code Playgroud)
我想要那个回归true_而不是false_.真实示例有7个模板参数,大多数默认,并使用Boost.Parameter按名称引用它们.为了使用is_base我必须能够以某种方式拉出参数,我没有办法做到这一点,没有声明内部typedef.
我认为这是不可能的.希望被证明是错误的.
Spring-WS 1.5:使用SimpleWsdl11Definition,在XML配置中公开WSDL很简单(来自Spring-WS doc):
<bean id="orders" class="org.springframework.ws.wsdl.wsdl11.SimpleWsdl11Definition">
<constructor-arg value="/WEB-INF/wsdl/Orders.wsdl"/>
</bean>
Run Code Online (Sandbox Code Playgroud)
产生一个公开WSDL的URL:
http://localhost:8080/spring-ws/orders.wsdl
Run Code Online (Sandbox Code Playgroud)
SimpleWsdl11Definition bean id +".wsdl"在部署时成为WSDL URL的叶子,它涵盖单节点分类.
我需要支持具有多节点分类法的WSDL的暴露.
例如:
http://localhost:8080/spring-ws/domain/subdomain/foo.wsdl
Run Code Online (Sandbox Code Playgroud)
这是如何在Spring-WS中完成的?Bean ID属性不允许使用"/"字符,因此我想知道影响WSDL URL的方式是什么.
注意:使用生成的WSDL不会打开选项(出于向后一致性的原因),例如使用DefaultWsdl11Definition.与SimpleWsdl11Definition一样,我想将WSDL的请求映射到静态WSDL.
谢谢.
我总是使用类似下面的东西来实现它:
INSERT INTO TheTable
SELECT
@primaryKey,
@value1,
@value2
WHERE
NOT EXISTS
(SELECT
NULL
FROM
TheTable
WHERE
PrimaryKey = @primaryKey)
Run Code Online (Sandbox Code Playgroud)
...但是一旦加载,就会发生主键违规.这是唯一插入此表的语句.那么这是否意味着上述陈述不是原子的?
问题是,这几乎不可能随意重建.
也许我可以将其更改为以下内容:
INSERT INTO TheTable
WITH
(HOLDLOCK,
UPDLOCK,
ROWLOCK)
SELECT
@primaryKey,
@value1,
@value2
WHERE
NOT EXISTS
(SELECT
NULL
FROM
TheTable
WITH
(HOLDLOCK,
UPDLOCK,
ROWLOCK)
WHERE
PrimaryKey = @primaryKey)
Run Code Online (Sandbox Code Playgroud)
虽然,也许我使用错误的锁或使用过多的锁定或其他东西.
我在stackoverflow.com上看到了其他问题,其中答案是建议"IF(SELECT COUNT(*)... INSERT"等),但我总是在(可能是不正确的)假设单个SQL语句是原子的.
有没有人有任何想法?
我有一个漫长而懒惰的序列,我想减少并懒惰地测试.一旦两个连续元素彼此不相同=(或某些其他谓词),我想停止使用生产成本高昂的列表.是的,这听起来像是take-while,但请进一步阅读.
我想写一些简单而优雅的东西(假装一分钟every?就像这样reduce):
(every? = (range 100000000))
Run Code Online (Sandbox Code Playgroud)
但这不是懒惰的工作,所以它挂在无限的seqs.我发现这几乎和我想要的一样:
(apply = (range 100000000))
Run Code Online (Sandbox Code Playgroud)
但是,我注意到序列分块导致创建和测试额外的,不必要的元素.至少,这就是我认为这是在下面的代码中发生的事情:
;; Displays chunking behavior in groups of four on my system and prints 1 2 3 4
(apply = (map #(do (println %) %) (iterate inc 1)))
;; This prints 0 to 31
(apply = (map #(do (println %) %) (range)))
Run Code Online (Sandbox Code Playgroud)
我找到了一种解决方法take-while,并count检查所采用的元素数量,但这很麻烦.
我应该礼貌地向Rich Hickey建议他正确地进行了一些组合reduce和every?短路,还是我错过了一些已经存在的明显方法?
编辑:两种人发布了避免在懒惰序列上进行分块的解决方案,但是如何避免在进行分块时使用分块apply,这似乎在四个分组中消耗?
编辑#2:正如Stuart Sierra所说,我独立发现,这实际上并不是分块.它只是正常应用,所以我会把它叫做关闭并给他答案.对于那些感兴趣的人,我在一个单独的答案中包含了一个小函数来完成问题的减少部分.
在我的控制器控制器中,我Date.new用来创建一个在ActiveRecord中传递的日期对象.
end_range = Date.new(params[:year].to_i, params[:month].to_i, params[:day].to_i).end_of_day.to_formatted_s(:db)
Run Code Online (Sandbox Code Playgroud)
上面的问题是,如果用户试图手动更改URL中的参数,例如输入40日期参数,则Date.new失败(如预期的那样).但是,如果用户键入类似的内容,我宁愿不会出现500错误,而是404错误(因为你实际上永远不会有一天的记录40).
我尝试了各种条件(if和unless语句),raise ActiveRecord::RecordNotFound如果失败,但它在运行条件之前返回500错误(因此永远不会返回404).
有没有人知道更好的方法来处理它,或者是一种允许Date.new更优雅地失败以便条件语句可以运行的方法?
我正在尝试找到一种方法,以便在打开新对话框时以编程方式设置CKEditor对话框的位置.位置部分的实际设置似乎很容易,但我似乎无法弄清楚如何捕获正在创建和显示的新CKEditor对话框的事件.
我假设它将是......
CKEDITOR.on('dialogCreated', function(e) { ... } );
Run Code Online (Sandbox Code Playgroud)
但似乎无法在文档中找到它.
我将参加一年一度的免费软件/开源大会.这个活动非常以社区为导向,走廊会议非常非正式.由于我目前工作的公司正在寻找C++开发人员(在Linux环境中),我在T恤上打印了"我们正在招聘C++开发人员"的大字.
希望有人会来找我,介绍他/她自己并告诉我他/她是一名C++开发人员并正在寻找工作.
我应该问什么来衡量他们的C++知识?我需要一个可以回答的问题,站在拥挤的走廊里,手里拿着糕点.
一个例子可能是:
或许还有一些更开放的问题,例如:
澄清:
这个问题不会取代面试,只是假设有一个想法是否值得邀请候选人参加面试.
此外,我们已经有一个非常有能力的人全职工作,试图填补这些职位.因为我出于自私的原因,我想参加这个会议(这是一个有趣的事件),我认为这可能是一个有趣的实验,试图挖掘这些不寻常的极客集中.如果这个实验能够起作用,我也希望不仅有一个随机的名单,而是一个名单,列出一些适用性.
在会议结束后,我将在此报告此实验的结果.
结论:
会议结束了.以下是我从这个小实验中学到的东西:
好玩.一般人都知道了.我得到的大多数评论都是一个好主意.这是一个与有趣的人一起引发走廊讨论的简单方法.
C++开发人员并不像人们可能怀疑的那样内向.我的证据远非确凿,但大约有六位C++开发人员找我.
我不应该担心一个特定的问题.在这种环境中与潜在候选人进行的讨论往往会自然地落入一种已知的模式,我描述了我们正在做的事情,因此向候选人提出的自然问题就是他/她所做的事情.
在这种环境下很难衡量候选人的资格.最后,我将我的电话卡交给了我遇到的每个候选人.由于并非所有这些实际上现在都可用,我怀疑将对那些实际跟进我所领导的领导的人进行排序很容易.
也许我可以更好地组织,但我觉得谈话的非正式性质,以及我递了一张电话卡,但没有记下他们的细节,这与会议的氛围很好地融合在一起.
总结:如果您正在寻找候选人,并且您怀疑自己会在非正式活动中遇到目标受众,我建议花15美元在T恤上打印简单信息.如果没有别的,它会让你大笑.
元:
这个问题从来没有打算提出任何争议.然而,似乎招聘是一个有争议的主题,这里的每个答案至少被投票一次.甚至这个问题也被一些人关闭了.如果你觉得我浪费了你的时间,我真的很抱歉.
c++ ×2
.net ×1
asp.net ×1
asynchronous ×1
automapper ×1
chunking ×1
ckeditor ×1
clojure ×1
concurrency ×1
java ×1
locking ×1
ruby ×1
spring-ws ×1
sql ×1
sql-server ×1
t-sql ×1
templates ×1
web-services ×1
wsdl ×1