小编Ben*_*lau的帖子

Rails中的对象版本控制,如Papertrail,但个别表

对于我目前正在进行的项目,我需要实现对象版本控制.不幸的是,我需要保留每个对象的完整历史记录,因此像Papertrail这样的单个表解决方案很快就会变得无法管理.然而,我喜欢Papertrail的功能,我在一个解决方案中找不到每个模型的单独表格(例如acts_as_versioned).

  • 能够存储来自控制器和模型的元信息
  • 数据已序列化,因此架构更改不会修改版本表
  • 遍历版本的强大方法
  • 自动跟踪变更责任

还有Papertrail没有的一些功能可以奖励:

  • 内置版本差异支持
  • 差异而不是完整版本

我目前正在考虑让Papertrail为每个模型使用单独的表格,但是如果有现有的解决方案,我想节省这些努力.

更新: Vestal版本默认使用单个表,但通过为每个模型提供自定义版本类并使用ActiveRecord的"set_table_name"方法,我能够为每个模型创建单独的表.Vestal版本也内置差异支持,但其界面不如Papertrails强大.它也缺乏关联支持.

更新2: 由于papertrail似乎是一个更活跃的项目,我已经分叉了gem并添加了类似于版本的自定义类支持,现在允许为每个模型定义单独的表.我的分支在这里,但我希望它很快就会被拉入主项目库. https://github.com/benzittlau/paper_trail

versioning ruby-on-rails database-versioning

13
推荐指数
1
解决办法
4860
查看次数

如何确定ops导致MongoDB服务器上的getMore操作

我在我的复制集中的主服务器上的mongostat中看到以下内容:

insert  query update delete getmore command flushes mapped  vsize    res faults       locked db idx miss %     qr|qw   ar|aw  netIn netOut  conn   set repl       time
     0    414    388      0    1218     444       0  24.2g  51.4g     3g      0  <redacted>:9.6%          0       0|0     0|0   225k   441k   463 mover  PRI   03:26:30
     0    469    457      0    1352     516       0  24.2g  51.4g     3g      0 <redacted>:10.6%          0       0|0     0|0   258k   498k   463 mover  PRI   03:26:31
     0    478    482      0    1430     548       0  24.2g  51.4g     3g      0 <redacted>:12.0%          0 …
Run Code Online (Sandbox Code Playgroud)

cursor mongodb replicaset

7
推荐指数
1
解决办法
7866
查看次数

Mongod常驻内存使用率低

我正在尝试使用MongoDB配置调试一些性能问题,并且我注意到驻留内存使用率非常低(约占系统内存的25%),尽管偶尔会发生大量故障.鉴于MongoDB依赖于内存,我很惊讶地发现使用率很低.

这是按内存使用情况排序的顶部快照.可以看出,没有其他进程使用重要内存:

top - 21:00:47 up 136 days,  2:45,  1 user,  load average: 1.35, 1.51, 0.83
Tasks:  62 total,   1 running,  61 sleeping,   0 stopped,   0 zombie
Cpu(s): 13.7%us,  5.2%sy,  0.0%ni, 77.3%id,  0.3%wa,  0.0%hi,  1.0%si,  2.4%st
Mem:   1692600k total,  1676900k used,    15700k free,    12092k buffers
Swap:   917500k total,    54088k used,   863412k free,  1473148k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 2461 mongodb   20   0 29.5g 564m 492m S 22.6 34.2  40947:09 mongod
20306 ubuntu …
Run Code Online (Sandbox Code Playgroud)

memory mongodb

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

绑定到touchstart事件,导致自动对焦关注Mobile Safari中的任何点击

理论上,自动对焦在移动Safari(http://caniuse.com/#feat=autofocus)中完全不受支持.然而,我们正在看到这种非常奇怪的行为,当一个touchstart事件被绑定时document(无论该函数是否有任何行为),当页面上任何地方发生点击时,第一个输入autofocus变得聚焦并且屏幕键盘显示.

这可以在iOS模拟器中使用iOS 8重现.这是重现问题的最小html和javascript:

<html>
<head>
<script>
document.addEventListener("touchstart", function() {});
</script>
</head>

<body>
<input type="text">
<input type="text" autofocus="autofocus">
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

这里有一个jsfiddle:http://jsfiddle.net/qd858nob/

只需单击输入外的任何位置,第二个输入将变为自动对焦.理想情况下,我很乐意找到解决此问题的全局解决方案,而无需从所有输入元素中删除自动对焦.

javascript html5 mobile-safari autofocus ios

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

不使用鼠标的 VSCode VIM 中的命令悬停工具提示

我最近发现 VSCode vim 中有一个扩展的悬停工具提示,可以通过在按住命令键的同时悬停在令牌上来查看。就我而言,我对查看此工具提示中可用的打字稿类型定义特别感兴趣,但在基本悬停工具提示中不可用。

我使用 VSCode Vim 扩展,因此使用 'gh' 无需使用鼠标即可触发这些工具提示,但按住 command+'gh' 不会产生预期效果(它会触发其他命令修饰符热键)。

这是从“gh”加载的工具提示示例:

无指令悬停

这是悬停时按住命令的扩展工具提示示例:

用命令悬停

visual-studio-code vscodevim

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