小编Nat*_*ong的帖子

你如何让浮动元素的父母崩溃?

尽管像<div>s 这样的元素通常会增长以适应其内容,但使用该float属性可能会给 CSS新手带来惊人的问题:如果浮动元素具有非浮动父元素,则父元素将崩溃.

例如:

<div>
  <div style="float: left;">Div 1</div>
  <div style="float: left;">Div 2</div>
</div>
Run Code Online (Sandbox Code Playgroud)

此示例中的父div 不会展开以包含其浮动的子项 - 它似乎具有height: 0.

你怎么解决这个问题?

我想在这里创建一个详尽的解决方案列表.如果您了解跨浏览器兼容性问题,请指出它们.

解决方案1

浮动父母.

<div style="float: left;">
  <div style="float: left;">Div 1</div>
  <div style="float: left;">Div 2</div>
</div>
Run Code Online (Sandbox Code Playgroud)

优点:语义代码.
缺点:您可能并不总是希望父级浮动.即使你这样做,你是否漂浮了父母的父母,等等?你必须浮动每个祖先元素吗?

解决方案2

给父母一个明确的高度.

<div style="height: 300px;">
  <div style="float: left;">Div 1</div>
  <div style="float: left;">Div 2</div>
</div>
Run Code Online (Sandbox Code Playgroud)

优点:语义代码.
缺点:不灵活 - 如果内容更改或浏览器调整大小,布局将中断.

解决方案3

在父元素中添加"spacer"元素,如下所示:

<div>
  <div style="float: left;">Div 1</div>
  <div style="float: left;">Div 2</div>
  <div …
Run Code Online (Sandbox Code Playgroud)

html css layout css-float clearfix

988
推荐指数
10
解决办法
29万
查看次数

bcrypt如何内置盐?

Coda Hale的文章"如何安全地存储密码"声称:

bcrypt内置了盐来防止彩虹表攻击.

他引用了这篇论文,其中说在OpenBSD的实现中bcrypt:

OpenBSD从arcfour(arc4random(3))密钥流生成128位bcrypt salt,并使用内核从设备时序收集的随机数据进行种子处理.

我不明白这是如何工作的.在我的盐概念中:

  • 每个存储的密码需要不同,因此必须为每个密码表生成一个单独的彩虹表
  • 它需要存储在某个地方以便它是可重复的:当用户尝试登录时,我们会尝试密码,重复我们最初存储密码时所做的相同的盐和哈希过程,并进行比较

当我使用带有bcrypt的Devise(一个Rails登录管理器)时,数据库中没有salt列,所以我很困惑.如果盐是随机的并且没有存储在任何地方,我们如何可靠地重复散列过程?

简而言之,bcrypt如何内置盐

security hash internals bcrypt

570
推荐指数
4
解决办法
13万
查看次数

在phpMyAdmin中设置外键?

我正在使用phpMyAdmin建立一个数据库.我有两个表(foobar),在主键上编入索引.我试图foo_bar在它们之间创建一个关系表(),使用它们的主键作为外键.

我创建了这些表作为MyISAM,但后来将这三个都改为InnoDB,因为我读到MyISAM不支持外键.所有id领域都是INT(11).

当我选择的foo_bar表中,单击"查看相关"链接,并尝试设置FK列是database.foo.iddatabase.bar.id,它说:"没有定义的索引!" 在每一栏旁边.

我错过了什么?

澄清/更新

为简单起见,我想继续使用phpMyAdmin.我目前正在使用XAMPP,这很容易让我专注于PHP/CSS/Javascript,它附带了phpMyAdmin.

此外,虽然我还没有能够设置显式外键,但我确实有一个关系表,可以执行这样的连接:

SELECT * 
FROM foo 
INNER JOIN foo_bar 
ON foo.id = foo_bar.foo_id 
INNER JOIN bar
ON foo_bar.bar_id = bar.id;
Run Code Online (Sandbox Code Playgroud)

如果不在数据库中明确定义FK,我会感到很不舒服.

mysql phpmyadmin

325
推荐指数
9
解决办法
59万
查看次数

如何回到Git中的最新版本?

我最近从SVN搬到了Git,对某些事情感到有些困惑.我需要通过调试器运行以前版本的脚本,所以我做了git checkout <previous version hash>并做了我需要做的事情.

现在我想回到最新版本,但我不知道它的哈希.当我输入时git log,我看不到它.

我怎样才能做到这一点?此外,是否有更简单的方法来更改版本,而不是键入哈希 - 类似"返回两个版本"或"按时间顺序排列最近"?

git git-checkout

291
推荐指数
7
解决办法
27万
查看次数

使用Number对象保存属性并递增数字,此代码中发生了什么?

最近的一条推文包含了这段JavaScript代码.

有人可以一步一步解释其中发生的事情吗?

> function dis() { return this }
undefined
> five = dis.call(5)
Number {[[PrimitiveValue]]: 5}
> five.wtf = 'potato'
"potato"
> five.wtf
"potato"
> five * 5
25
> five.wtf
"potato"
> five++
5
> five.wtf
undefined
> five.wtf = 'potato?'
"potato?"
> five.wtf
undefined
> five
6
Run Code Online (Sandbox Code Playgroud)

特别是,我不清楚:

  • 为什么结果dis.call(5)Number带有某种[[PrimitiveValue]]属性的,但结果five++five * 5看起来只是普通的数字525(不是Numbers)
  • 为什么five.wtf属性在five++增量后消失
  • 为什么five.wtf属性在five++ …

javascript

247
推荐指数
9
解决办法
2万
查看次数

如何在Ruby中输出前导零?

我正在从Ruby脚本输出一组编号的文件.这些数字来自递增计数器,但为了使它们在目录中很好地排序,我想在文件名中使用前导零.换一种说法

file_001 ...

代替

file_1

在将数字转换为字符串时,是否有一种简单的方法可以添加前导零?(我知道我可以"如果少于10 ......如果少于100").

ruby

228
推荐指数
5
解决办法
10万
查看次数

使用MySQL可以GROUP BY多列吗?

GROUP BYMySQL SELECT查询中是否可以有多个列?例如:

GROUP BY fV.tier_id AND 'f.form_template_id'
Run Code Online (Sandbox Code Playgroud)

mysql sql group-by

173
推荐指数
6
解决办法
27万
查看次数

如何在Rspec中仅运行特定测试?

我认为有一种方法只能运行给定标签的测试.有人知道吗?

ruby rspec

151
推荐指数
8
解决办法
7万
查看次数

如何删除设计注册的设计路线?

我在Rails 3应用程序中使用Devise,但在这种情况下,用户必须由现有用户创建,该用户确定他/她将拥有哪些权限.

因此,我想要:

  • 删除路线的用户注册.
  • 为了还允许用户编辑自己的个人资料(变更电子邮件地址和密码),双方已经签署了

我怎样才能做到这一点?

目前,我通过以下方式有效地删除了这条路线devise_for :users:

match 'users/sign_up' => redirect('/404.html')
Run Code Online (Sandbox Code Playgroud)

这有效,但我想有更好的方法,对吧?

更新

正如Benoit Garret所说,在我的情况下,最好的解决方案是跳过创建注册路线,并创建我真正想要的那些.

为此,我首先运行rake routes,然后使用输出重新创建我想要的.最终结果如下:

devise_for :users, :skip => [:registrations] 
as :user do
  get 'users/edit' => 'devise/registrations#edit', :as => 'edit_user_registration'
  put 'users' => 'devise/registrations#update', :as => 'user_registration'
end
Run Code Online (Sandbox Code Playgroud)

注意:

  • 我仍然:registerable在我的User模型
  • devise/registrations 处理更新电子邮件和密码
  • 更新其他用户属性 - 权限等 - 由不同的控制器处理

实际答案:

删除默认Devise路径的路由; 即:

devise_for :users, path_names: {
  sign_up: ''
}
Run Code Online (Sandbox Code Playgroud)

routing devise ruby-on-rails-3

145
推荐指数
7
解决办法
5万
查看次数

如何调试PDO数据库查询?

在迁移到PDO之前,我通过连接字符串在PHP中创建了SQL查询.如果我得到数据库语法错误,我可以回显最终的SQL查询字符串,在数据库上自己尝试,并调整它直到我修复错误,然后将其放回代码中.

准备好的PDO语句更快,更好,更安全,但有一件事困扰我:我从未看到最终查询,因为它被发送到数据库.当我在Apache日志或我的自定义日志文件中出现语法错误时(我在catch块中记录错误),我看不到导致它们的查询.

有没有办法捕获PDO发送到数据库的完整SQL查询并将其记录到文件中?

php sql pdo

133
推荐指数
9
解决办法
13万
查看次数