在埃菲尔说,我们应该"放松前提条件并收紧后期条件",但我不确定这意味着什么.这种好处/如何受益于子类别?
谢谢
在config/routes.rb中:
resources :posts do
resources :comments
end
resources :pictures do
resources :comments
end
Run Code Online (Sandbox Code Playgroud)
我想允许更多的事情被评论.
我目前正在使用mongoid(mongomapper并不像我想的那样与Rails 3兼容),而注释是一个嵌入式资源(mongoid还不能处理多态关系资源),这意味着我确实需要父资源为了找到评论.
有没有优雅的方法来处理以下一些问题:
在我的控制器中,我需要在找到评论之前找到父母:
if params[:post_id]
parent = Post.find(params[:post_id]
else if params[:picture_id]
parent = Picture.find(params[:picture_id]
end
Run Code Online (Sandbox Code Playgroud)
如果我开始添加更多可评论的内容,那将会变得混乱.
也url_for([comment.parent, comment])不起作用,所以我将不得不在我的Comment模型中定义一些东西,但我认为我还需要在Comment模型中定义索引路径以及可能的编辑和新路由定义.
随着我的进一步发展,我可能会遇到更多问题.
我无法想象我是第一个尝试解决这个问题的人,是否有任何解决方案可以使其更易于管理?
我在mongo中看起来像是一个简单的分片设置有问题.
我有两个分片,一个mongos实例,以及一个像这样设置的配置服务器:
机器A - 10.0.44.16 - 配置服务器,mongos
机器B - 10.0.44.10 - 分片1
机器C - 10.0.44.11 - 分片2
我有一个名为'Seeds'的集合,它有一个分片键'SeedType',它是一个存在于集合中每个文档的字段,包含四个值之一(请看下面的分片状态).其中两个值的条目明显多于其他两个(其中两个有784,000个记录,两个有大约5,000个).
我期望看到的行为是,使用InventoryPOS的'Seeds'集合中的记录将最终出现在一个碎片上,而具有InventoryOnHand的记录将最终出现在另一个碎片上.
但是,似乎两个较大分片键的所有记录都在主分片上结束.
这是我的分片状态文本(为清晰起见,删除了其他集合):
--- Sharding Status ---
sharding version: { "_id" : 1, "version" : 3 }
shards:
{ "_id" : "shard0000", "host" : "10.44.0.11:27019" }
{ "_id" : "shard0001", "host" : "10.44.0.10:27017" }
databases:
{ "_id" : "admin", "partitioned" : false, "primary" : "config" }
{ "_id" : "TimMulti", "partitioned" : true, "primary" : "shard0001" }
TimMulti.Seeds chunks:
{ "SeedType" : … Java问:我喜欢CSS用于简单的网页,但是当涉及现实世界的网站时,它会厌恶它,因为你得到了css爆炸和大量的重复.
我很想使用Sass和Compass,但它们是Ruby程序,很可能需要一些有趣的Maven + JRuby才能为Java Web app dev工作.如果您使用Eclipse或支持与正在运行的Web应用程序同步的任何IDE,这也会很困难.
对于地狱中的CSS,还有一个更好的替代方案是Java吗?
在C#字符串中反转所有字母字符大小写的最简单方法是什么?例如"aBc1 $;" 应该成为"AbC1 $;" 我可以轻松编写一个执行此操作的方法,但我希望有一个我不知道的库调用会使这更容易.我还想避免列出所有已知的字母字符,并将每个字符与列表中的字符进行比较.也许这可以用正则表达式完成,但我不太了解它们.谢谢.
谢谢您的帮助.我为此创建了一个字符串扩展方法,其主要灵感来自Anthony Pegram的解决方案,但没有LINQ.我认为这在可读性和性能之间取得了很好的平衡.这就是我想出的.
public static string SwapCase(this string source) {
char[] caseSwappedChars = new char[source.Length];
for(int i = 0; i < caseSwappedChars.Length; i++) {
char c = source[i];
if(char.IsLetter(c)) {
caseSwappedChars[i] =
char.IsUpper(c) ? char.ToLower(c) : char.ToUpper(c);
} else {
caseSwappedChars[i] = c;
}
}
return new string(caseSwappedChars);
}
Run Code Online (Sandbox Code Playgroud) 我正在编写一个脚本来监听日志文件的更改并采取适当的行动.目前我正在使用open my $fh, "tail -f $logfile |";但理想情况下我不想使用系统调用.
我已经尝试过File :: Tail但它的最小间隔为1秒(我尝试传递较少,但默认为1秒,即使我传递0).我已经检查了它的来源,它似乎使用sleep(),它采用整数.在我尝试自己编写之前,还有其他选择吗?
谢谢.
这些是DOJO和ExtJS的完整演示
DOJO http://archive.dojotoolkit.org/nightly/dojotoolkit/dijit/themes/themeTester.html
ExtJS http://dev.sencha.com/deploy/dev/examples/themes/index.html
其中哪一个更好 - 既美观又高效?还有哪些人会成为基于Webkit的桌面/移动应用程序的更好候选者?
我的程序创建一个带有 的窗口ShowActivated=false,这样它在打开时就不会窃取键盘焦点(该窗口是为了响应来自网络的事件而创建的)。我希望能够指定当用户切换到窗口时特定的 TextBox 字段接收焦点。然而,看似显而易见的方法(FocusManager.FocusedElement在窗口的标记中使用,或this.textbox.Focus()在显示窗口时调用)具有激活窗口的副作用。
我最终为窗口的Activated事件添加了一个事件处理程序,它 (a) 进行所需的Focus()调用,(b) 将其自身从Activated事件中删除,以便它只发生一次。这看起来很粗糙。我错过了什么吗?
我读过(来自Slava Pestov)因为Lisp影响了因子,但我不确定我能理解怎么样?他们的编程语言不是很不一样吗?
<label id="label1" for="txtTextBox">
Run Code Online (Sandbox Code Playgroud)
如果我把for属性放在那里,label1的影响是什么?