小编Cra*_*ker的帖子

.NET的安全/允许文件名清除程序

在.NET中是否有任何标准化/图书馆/测试方式来获取任意字符串并以一种表示有效文件名的方式对其进行修改?

滚动我自己的char-replace功能很容易,但我想要一些更强大和更新的东西.

.net windows filenames

6
推荐指数
2
解决办法
2845
查看次数

什么是位置:相对有用吗?

我今天正在考虑CSS定位模式,并意识到position:relative除了position:absolute在子元素上工作之外,我从不使用 任何东西.

我更像是一个"开发人员"而不是"设计师",但多年来我已经做了很多基于CSS的布局.我已经使用了表格,浮点数,边距(正面和负面),位置:绝对位置,甚至位置:固定,但我认为我从未有过使用位置的场合:相对于实际定位元件.

是否有一些伟大的CSS-guru技术依赖于位置:相对(并用于实际设计)?我错过了吗?

css css-position

6
推荐指数
2
解决办法
1946
查看次数

在依赖属性中调用FactoryGirl模型中的方法

我有一个类似于以下的模型:

class Foo
  attr_accessor :attribute_a  # Really an ActiveRecord attribute
  attr_accessor :attribute_b  # Also an ActiveRecord attribute

  def determine_attribute_b
    self.attribute_b = some_biz_logic(attribute_a)
  end
end
Run Code Online (Sandbox Code Playgroud)

在FactoryGirl 1.3中,我有一个看起来像这样的工厂:

Factory.define :foo do |foo|
  foo.attribute_a = "some random value"
  foo.attribute_b { |f| f.determine_attribute_b }
end
Run Code Online (Sandbox Code Playgroud)

这很好用.attribute_b是一个依赖于代码块的属性,它将一个真实的实例传递给Foo变量f,并通过正确的设置attribute_a来完成.

我刚刚升级到FactoryGirl 2.3.2,这种技术不再适用.f从等效代码到上面的变量不再是实例Foo,而是a FactoryGirl::Proxy::Create.此类似乎能够读取先前设置的属性(这样文档中的Dependent Attributes示例仍然有效).但是,它无法从构建的类中调用实际方法.

有没有办法可以使用旧版FactoryGirl的技术?我希望能够使用构建类的实例方法的结果定义属性并设置其值.

ruby factory-bot

6
推荐指数
1
解决办法
3526
查看次数

如何覆盖Rails has_one关联的getter方法?

我想覆盖/扩展Rails has_one关联方法,以便它始终返回关联类的实例.(如果数据库中不存在,我想创建一个新的并将其分配给父实例.)

理想情况下,我想通过内置的Rails关联扩展机制来实现这一点.但是,我不知道"getter"方法的名称,因此我不知道要覆盖什么.

如何覆盖关联getter,以便我可以在nil时实例化一个新对象?

ruby-on-rails associations has-one ruby-on-rails-3

6
推荐指数
2
解决办法
3506
查看次数

在Ruby中实现to_int和to_str的后果

有一个类,它暴露了一个字符串值和一个int值(分别是一个命令输出和退出代码).除了通过to_s和暴露它们之外to_i,我也在使用,to_str并且to_int像这样:

class Status
  def to_s
    @output
  end
  alias :to_str :to_s

  def to_i
    @status.exitstatus
  end
  alias :to_int :to_i
end
Run Code Online (Sandbox Code Playgroud)

我的想法是能够在尽可能多的情况下使用此对象.将它强制转换为字符串或int会增加可用性.例如,我可以用字符串连接对象:

a_string = "Output was: " + results
Run Code Online (Sandbox Code Playgroud)

(我想用这个作为int强制的例子,但Fixnum.+不喜欢它,所以它实际上不起作用:)

an_int = 1 + results
Run Code Online (Sandbox Code Playgroud)

到目前为止,我所读过的所有内容都表示,这可能是一件"糟糕"的事情.常见的主题是这样的:" 当to_s/ to_i您的对象可以表示为字符串/ int时,to_str//to_int仅当您的对象基本上是字符串/ int时".

毫无疑问,我的课程不是"基本上"字符串或整数.但是我对这个规则有一些问题:

  1. 它使我的课程不那么灵活/可用.例如:如果我没有Status.to_str,我无法使用String.+将Status输出与另一个字符串连接起来.
  2. 这似乎违反了鸭子打字的精神.对象的用户(即:将其作为参数获取的方法)不应该关心该对象什么,它应该只关心它能做什么.(在这种情况下,"do"表示"可以表示为字符串/ int".)
  3. "基本上是一个字符串/ int"的参数对我来说非常模糊.例如,你会看到Float.to_int很多提到的.故事说,由于浮点数始终具有整数分量,因此to_int是一种有效的方法.但是,我认为这是虚假的:浮点数不是整数(因为它有一个非整数组件),所以试图将它们的"类型"等同起来并没有多大意义.你可以合法地 Float 转换为整数(通过截断),但我可以说我也可以我的状态转换为整数(通过"截断"所有非退出代码信息). …

ruby duck-typing

5
推荐指数
2
解决办法
577
查看次数

调试严格的LINQ-to-SQL超时

我在尝试执行LINQ(-to-SQL)查询时遇到超时错误

System.Data.SqlClient.SqlException:超时已过期.操作完成之前经过的超时时间或服务器没有响应.

现在,这是不是只是一个缓慢的查询的情况:

  • 我在SQL Management Studio中运行等效的SQL并快速完成(2秒)
  • 我将我的CommandTimeout设置为2分钟.
  • 当我在单元测试中执行完全相同的查询时,它会成功且快速地完成.那就是:当我在运行此查询以及其他查询时,我只会获得此超时.超时始终发生在同一个呼叫中.

最后一项让我觉得我遇到了某种类型的数据库端死锁:查询被某个地方的锁阻塞,超时时间过去,导致停止连接.

这个想法的问题在于我在DataContext中做选择导致问题.(我确实在不同的数据库/ DataContexts中发生了插入.)我也没有显式事务.这让我有点沮丧:查询行为看起来就像死锁一样,但我从未遇到过以前由某种事务隔离问题引起的死锁 - 这看起来不像这里的情况(乍一看).

我正在寻找有关如何调试此问题的建议.我应该考虑什么样的事情来确定这个问题的原因?

编辑

一些可能有用的注释:

  • 我正在查询引用的视图:
    • 同一数据库中的其他视图
    • 通过链接服务器指向另一个数据库中的表的同义词.
  • 此视图union用于将多个查询的结果连接在一起

结语

我最终通过重新处理查询来修复核心问题.原来不止一次地调用几张桌子(通过不同的视图).重新设计的版本绕过了所有这些,超时消失了.

linq sql-server deadlock sql-server-2005 linq-to-sql

5
推荐指数
1
解决办法
1754
查看次数

CSS布局中的"Whatever the Left"

我在容器元素中有4个元素.容器元素的高度设置为浏览器窗口的100%.4个内部元素将垂直堆叠在一起(正常情况下).前两个元素和最后一个元素应该具有"自然"高度(即:足以适合其内容).第三个元素应该扩展以填充容器中的可用空间,之后其他3个元素需要它们.

所以,它看起来像这样:

CSS堆积元素

我无法为Element-1,Element-2或Element-4设置明确的高度,也不知道Container的高度.我也不知道Element-3的自然高度; 我打算使用overflow-scroll它,如果它变得更大,那么可用.为了说明,我在元素之间添加了间距,但实际元素之间也会有间距(边距/填充).

你是如何使用HTML/CSS实现这一目标的?如果必须妥协以获得合适的布局,我会考虑它们.如果该技术也适用于水平(我偶尔需要),则奖励积分.

html css layout positioning

5
推荐指数
1
解决办法
752
查看次数

Ruby的has_header方法在哪里查找头文件?

在CentOS 5.7机器上,我无法安装最新版本的mysql2 gem; 它找不到errmsg.h:

/usr/bin/ruby extconf.rb
checking for rb_thread_blocking_region()... yes
checking for rb_wait_for_single_fd()... no
checking for mysql_query() in -lmysqlclient... yes
checking for mysql.h... no
checking for mysql/mysql.h... yes
checking for errmsg.h... no
-----
errmsg.h is missing.  please check your installation of mysql and try again.
-----
*** extconf.rb failed ***
Run Code Online (Sandbox Code Playgroud)

mysql头文件存在于/ usr/include/mysql中.服务器上存在旧版本的gem,因此必须在一个点上成功构建.

请注意,它在检查mysql.h时失败,但在mysql/mysql.h上成功.但是,对于errmsg.h,它不会重复此操作.通过这个我猜它不是在看/ usr/include,但我不确定.

我已经挖掘了extconf.rb源代码并发现它正在使用该have_header方法来定位头文件.我调试了执行,发现它正在寻找"mysql/errmsg.h"的相对路径.但我没有找到任何解释它如何将其扩展为绝对路径的文档.

has_header在哪里以及如何找到它的头文件?

mysql rubygems centos ruby-on-rails header-files

5
推荐指数
1
解决办法
2194
查看次数

String.StartsWith不使用波形符("〜")字符LINQ to SQL?

出于某种原因,我使用String.StartsWith()调用IEnumerable.Where()似乎会给出不同的结果,具体取决于它是在LINQ-to-SQL还是标准LINQ(-to-objects)中使用.如果我在ToList()上添加对同一个调用的调用,我会得到不同的结果:

var withToList = MyDataContext.MyEntities.ToList().Where(entity => entity.Name.StartsWith("~Test: My Test String"));
// withToList.Count() returns 5, which is what I expect.
var direct = MyDataContext.MyEntities.Where(entity => entity.Name.StartsWith("~Test: My Test String"));
// direct.Count() returns 0
Run Code Online (Sandbox Code Playgroud)

这是我的理解是,不像一些在LINQ其他运营商/方法中,其中()方法并没有要求谓语是SQL翻译的; 它在客户端执行,因此可以是任意.NET代码.(我肯定会在其中抛出其他非SQL代码并获得成功结果).我甚至得到了一个链接,其中安德斯自己暗示这应该有效.有没有搞错?

编辑:我发现了问题; 它与我的搜索字符串中存在波浪号有关.我已更新标题以反映这一点.

.net c# linq linq-to-objects linq-to-sql

4
推荐指数
1
解决办法
2758
查看次数

如何在JBuilder中将部分值呈现为哈希值?

我有一个类似于以下内容的树状对象图:

{
  :name => "Grandparent",
  :children => {
    :child_a => {
       :name => "Parent A",
       :children => {
         :grandchild_a_a => {
           :name => "Child A-A",
           :children => {}
         }
         :grandchild_a_b => {
           :name => "Child A-B"
           :children => {}
         }
       }
    }
    :child_b => {
       :name => "Parent B",
       :children => {}
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我想生成反映此结构的JSON。我不知道子嵌套的深度,每个级别的属性都相同。子哈希中的键很重要,必须保留。

我想使用JBuilder部分表示一个级别,然后递归调用它。到目前为止,这是我的模板:

# _level_partial.json.jbuilder
# passing the above object graph as :level
json.name level[:name]
json.children do
  level[:children].each do |key, child|
    # How do I map …
Run Code Online (Sandbox Code Playgroud)

json ruby-on-rails jbuilder

4
推荐指数
1
解决办法
888
查看次数