小编Pre*_*ids的帖子

在Postgresql中的多个列上执行WHERE IN

我有一个表'answers',带有索引的'problem_id'整数列,'times_chosen'整数列和'option'列,它是一个varchar.目前,"选项"列的唯一值是"A","B","C"和"D",但稍后可能会扩展.当我知道每个问题的problem_id和选项时,我希望将许多(50-100)个答案的'times_chosen'值加1.

所以我需要一个类似的查询:

UPDATE answers
SET times_chosen = times_chosen + 1
WHERE (problem_id, option) IN ((4509, 'B'), (622, 'C'), (1066, 'D'), (4059, 'A'), (4740, 'A')...)
Run Code Online (Sandbox Code Playgroud)

这可能吗?

sql postgresql

27
推荐指数
3
解决办法
2万
查看次数

用css在字母上放置一个小箭头

我正在尝试使用 html 和 css 在网页中呈现一些简单的矢量符号。向量简单地由字母上方的向右箭头表示。示例,作为图像:矢量

问题是我可能会在几十个不同的字母或符号上使用这种表示法,而且我不想在每次需要一个图像时都停下来制作另一个图像。如果可能的话,我想用文本来表示这一点。

在搜索时,我偶然发现了一些 HTML 符号 (→) 表示一个漂亮的向右箭头 (→)。所以,我希望能够做的是想出一些 css,对于由某个 span 类包围的字母,插入该箭头并将其定位在 span 的内容上。

例如:

<span class="vector">v</span>
Run Code Online (Sandbox Code Playgroud)

会像上面链接的图像一样呈现。

这可以用纯css吗?我必须求助于javascript吗?

谢谢

css

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

BCrypt说长,类似的密码是等价的 - 我,宝石或密码学领域的问题?

我一直在试验BCrypt,并发现了以下内容.如果重要的话,我正在运行ruby 1.9.2dev(2010-04-30 trunk 27557)[i686-linux]

require 'bcrypt' # bcrypt-ruby gem, version 2.1.2

@long_string_1 = 'f287ed6548e91475d06688b481ae8612fa060b2d402fdde8f79b7d0181d6a27d8feede46b833ecd9633b10824259ebac13b077efb7c24563fce0000670834215'
@long_string_2 = 'f6ebeea9b99bcae4340670360674482773a12fd5ef5e94c7db0a42800813d2587063b70660294736fded10217d80ce7d3b27c568a1237e2ca1fecbf40be5eab8'

def salted(string)
  @long_string_1 + string + @long_string_2
end

encrypted_password = BCrypt::Password.create(salted('password'), :cost => 10)
puts encrypted_password #=> $2a$10$kNMF/ku6VEAfLFEZKJ.ZC.zcMYUzvOQ6Dzi6ZX1UIVPUh5zr53yEu

password = BCrypt::Password.new(encrypted_password)

puts password.is_password?(salted('password')) #=> true
puts password.is_password?(salted('passward')) #=> true
puts password.is_password?(salted('75747373')) #=> true
puts password.is_password?(salted('passwor')) #=> false
Run Code Online (Sandbox Code Playgroud)

起初我认为一旦密码达到一定长度,所有散列中的差异就会丢失,只有当它们非常不相似(即不同的长度)时才会被识别为不同.从我所知的散列函数来看,这对我来说似乎不太合理,但我没有看到更好的解释.

然后,我尝试缩短每个long_strings以查看BCrypt开始能够区分它们的位置,并且我发现如果我将每个长字符串缩短到100个字符左右,最后的尝试('passwor')将开始也是如此.所以现在我不知道该怎么想.

对此有何解释?

ruby encryption passwords integer-overflow bcrypt

4
推荐指数
2
解决办法
1857
查看次数

压缩Ruby/Rails中的十六进制字符串

我正在使用MongoDB作为我正在构建的Rails应用程序的后端.默认情况下,Mongo为其记录生成24个字符的十六进制ID,以便更轻松地进行分片,因此我的URL看起来像:

example.com/companies/4b3fc1400de0690bf2000001/employees/4b3ea6e30de0691552000001
Run Code Online (Sandbox Code Playgroud)

这不是很漂亮.我想坚持使用Rails url约定,但也要将这些ID保留在数据库中.我认为一个愉快的妥协是使用更多字符将这些hex id压缩为更短的集合,所以它们看起来像:

example.com/companies/3ewqkvr5nj/employees/9srbsjlb2r
Run Code Online (Sandbox Code Playgroud)

然后在我的控制器中,我将反转压缩,获取原始的十六进制ID并使用它来查找记录.

我的问题是,来回转换这些ID的最佳方法是什么?我当然希望它们尽可能短,但也要安全,易于转换.

谢谢!

ruby ruby-on-rails mongodb

3
推荐指数
1
解决办法
3796
查看次数

需要SQL查询来计算字符串的唯一组合

我有一个postgres表,看起来部分如下:

Year   | Month | ...... (more columns)
"2004" | "09"  | ......
"2004" | "09"  | ......
"2004" | "09"  | ......
"2004" | "10"  | ......
"2004" | "11"  | ......
"2004" | "11"  | ......
"2004" | "12"  | ......
"2005" | "01"  | ......
"2005" | "01"  | ......
Run Code Online (Sandbox Code Playgroud)

是的,这些都是字符串.不要问我为什么.

我试图弄清楚一个SQL查询,它将告诉我每年和每个月的组合有多少行.即,"2004"和"09"=> 3,"2004"和"10"=> 1,"2004"和"11"=> 2等.当我尝试做COUNT(年,月)时我得到一个错误,我不能在字符变化列上使用该函数.

sql postgresql

2
推荐指数
1
解决办法
2250
查看次数