小编mrt*_*mrt的帖子

列出GIT历史记录中给定行号的所有版本

是否可以在Git中按行号列出文件中给定行的所有先前版本?

我觉得它有用的原因是能够根据记录的堆栈跟踪报告更轻松地解决问题.

即我undefined method exception在给定文件的第100行记录.该文件包含在大量提交中,导致给定的行可能在文件中上下移动,即使没有对其进行任何更改.

如何在最后x次提交中打印出给定文件的第100行的内容?

git

22
推荐指数
2
解决办法
6397
查看次数

同步两个Amazon S3存储桶的最快方法

我有一个S3存储桶,大约有400万个文件,总共需要500GB.我需要将文件同步到一个新的存储桶(实际上更改存储桶的名称就足够了,但由于这是不可能的,我需要创建一个新存储桶,将文件移到那里,然后删除旧存储桶).

我正在使用AWS CLI的s3 sync命令,它可以完成这项工作,但需要花费很多时间.我想减少时间,以便依赖系统停机时间最短.

我试图从我的本地机器和EC2 c4.xlarge实例运行同步,并且在时间上没有太大差异.

我注意到,当我使用--exclude--include选项分割多个批次的作业并从单独的终端窗口并行运行时,可以稍微减少所花费的时间,即

aws s3 sync s3://source-bucket s3://destination-bucket --exclude "*" --include "1?/*" 
aws s3 sync s3://source-bucket s3://destination-bucket --exclude "*" --include "2?/*" 
aws s3 sync s3://source-bucket s3://destination-bucket --exclude "*" --include "3?/*" 
aws s3 sync s3://source-bucket s3://destination-bucket --exclude "*" --include "4?/*" 
aws s3 sync s3://source-bucket s3://destination-bucket --exclude "1?/*" --exclude "2?/*" --exclude "3?/*" --exclude "4?/*"
Run Code Online (Sandbox Code Playgroud)

还有什么我可以做的更快加速同步吗?另一种类型的EC2实例更适合这项工作吗?将作业分成多个批次是一个好主意,是否有类似"最佳" sync进程的数量可以在同一个桶上并行运行?

更新

我倾向于在关闭系统之前同步存储桶的策略,执行迁移,然后再次同步存储桶以仅复制同时更改的少量文件.但是,sync即使在没有差异的存储桶上运行相同的命令也需要花费很多时间.

amazon-s3 amazon-ec2 amazon-web-services aws-cli

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

Javascript.confirm()和Angularjs Karma e2e测试

我有一个Angularjs应用程序,在执行某些操作之前使用简单的javascript确认.

控制器:

function TokenController($scope) {
  $scope.token = 'sampleToken';

  $scope.newToken = function() {
    if (confirm("Are you sure you want to change the token?") == true) {
      $scope.token = 'modifiedToken';
    }
  };
}
Run Code Online (Sandbox Code Playgroud)

视图:

<div id="tokenDiv">
  Token:{{token}} <button ng-click="newToken()">New Token</button>
</div>
Run Code Online (Sandbox Code Playgroud)

现在我想要进行端到端测试以检查在视图中是否正确替换了令牌.如何拦截javascript.confirm()呼叫,以便它不会停止执行测试?

测试:

it('should be able to generate new token', function () {
   var oldValues = element('#tokenDiv').text();
   element('button[ng-click="newToken()"]').click(); // Here the javascript confirm box pops up.
   expect(element('#tokenDiv').text()).not.toBe(oldValues);
});
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经尝试重新定义window.confirm函数,但实际的调用抱怨它是未定义的.

我也想设置一个Jasmine间谍,window.confirm但是在下面的语法中,spyOn(window, 'confirm');它给了我一个错误,说你不能窥探null …

jasmine angularjs karma-runner angularjs-e2e

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

如何在Rails 4中干净地更新HABTM关联列表?

我正在尝试User使用关联列表更新记录Addresses,通过has连接并属于许多关联.

我通过javascript发送的请求正文是:

{"id":10,"name":"John Smith", "address_ids":[4,8]}
Run Code Online (Sandbox Code Playgroud)

这是我在Rails 服务器日志中得到的:

在2013-10-03 16:30:43 +0200开始PUT"/ api/users/10"为127.0.0.1

由Api :: UsersController处理#update为HTML

参数:{"id"=>"10","name"=>"John Smith","address_ids"=> [4,8],"user"=> {"id"=>"10","name" "=>"John Smith"}}

上面要注意的是address_ids数组没有user根据日志将其变为哈希.

控制器中我使用强参数并更新User如下:

attributes = params.require(:user).permit(:id, :name, {:address_ids => []}) 
@user.update_attributes(attributes)
Run Code Online (Sandbox Code Playgroud)

问题是属性在更新时不包含address_ids,因此关联的记录不会更新.

临时解决方案

我已经解决了这个问题,手动将address_ids密钥分配给attributes他们从强参数检查后回来,如下所示:

attributes = params.require(:user).permit(:id, :name, {:address_ids => []})
if params.has_key?(:address_ids)   
  attributes[:address_ids] = params[:address_ids] 
end
@user.update_attributes(attributes)
Run Code Online (Sandbox Code Playgroud)

这工作正常,但在我看来这不是它应该如何工作?为什么adderss_ids没有自动分配?如何以明确的方式实施?

ruby-on-rails has-and-belongs-to-many strong-parameters ruby-on-rails-4

8
推荐指数
1
解决办法
4067
查看次数

使用Google Analytics for iPhone跟踪应用使用情况 - Apple Approval Criteria

在应用程序中使用分析存在一些困惑.只是为了确保我顺利完成:

我想在我的应用中使用Google Analytics跟踪应用使用情况(跟踪基本上正在查看的内容).我没有向Google发送任何用户或设备数据.首先,我了解Google Analytics API完全可以使用,并且不违反任何Apple开发者协议.其次,我假设在这种情况下(匿名跟踪应用程序使用情况 - 没有用户或设备数据)我可以使用该服务,而无需在应用程序中的任何地方说正在使用分析(因此3.3.9.' iOS开发者计划许可协议 '不适用于此处).

任何人都可以确认我的假设或解释他们是不是正确的?或者更好的是,你们中的任何人都使用分析批准你的应用程序,即使它没有说它在哪里使用它?......或者相反

我已经看过很多关于这个主题的论坛参赛作品,但没有明确说明Apple需要什么以及推荐什么.

谢谢

iphone google-analytics appstore-approval

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

SQL Server - 加速大表的计数

我有一张有近3000万条记录的桌子.只有几个专栏.其中一列的'Born'不超过30个,并且在其上定义了索引.我需要能够过滤该列并有效地翻阅结果.

现在我有(例如,如果我正在搜索的年份是'1970' - 它是我存储过程中的参数):

WITH PersonSubset as
(
    SELECT *, ROW_NUMBER() OVER (ORDER BY Born asc) AS Row
    FROM Person WITH (INDEX(IX_Person_Born)) 
    WHERE Born = '1970'
)
SELECT *, (SELECT count(*) FROM PersonSubset) AS TotalPeople
FROM PersonSubset
WHERE Row BETWEEN 0 AND 30
Run Code Online (Sandbox Code Playgroud)

该排序的每个查询(仅Born使用参数)仅返回超过100万个结果.我注意到最大的开销是用于返回总结果的计数.如果我(SELECT count(*) FROM PersonSubset) AS TotalPeople从select子句中删除整个事情会加速很多.

有没有办法加快该查询中的计数.我关心的是返回分页结果和总计数.

sql sql-server performance

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

Jest测试coffee.ERB文件

在Rails项目中,我有一些包含ERB语法的JavaScript文件,即

// en_store.coffee.erb

EnStore =
  activities:
    title: 'Delete Note?'
    image: '<%= asset_path("crm/sections/en/calendar.png") %>'

module.exports.EnStore = EnStore
Run Code Online (Sandbox Code Playgroud)

而且测试:

// en_store.test.coffee

import { EnStore } from 'stores/en_store'

describe 'EN Store', () ->

  // This test passes.
  it 'should provide hard typed translation', () ->
    expect(EnStore.activities.title).toBe('Delete Note?')

  // This one fails as the EnStore.activities.image contains '<%= asset_path("crm/sections/en/calendar.png") %>' as a string and not the actual interpolated value.
  it 'should provide asset path', () ->
    expect(EnStore.activities.image).toBe('[This is not interpolated]')
Run Code Online (Sandbox Code Playgroud)

尝试使用Jest测试它会导致错误,因为ERB部分未进行插值.在测试之外,这是由Webpack通过rails-erb-loader.如何让它与Jest一起使用?有没有现成的transform包可以让我这样做? …

ruby-on-rails erb webpack jestjs

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

在 Ruby 中下载文件,重定向到带有空格的 URL

我正在尝试下载一组图像,并提供它们的 URL。某些 URL 重定向到包含空格的 URL,这会导致 OpenURI 引发错误。

即我提供了http://www.example.com/upload/comercial%20(2).jpg重定向到https://www.example.com/upload/comercial (2).jpg. 这会在负责下载的代码中引发错误:

url = 'http://www.example.com/upload/comercial%20(2).jpg'
download = open(url, {ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE, allow_redirections: :all})

OpenURI::HTTPError: 302 Redirect (Invalid Location URI)
Run Code Online (Sandbox Code Playgroud)

有没有办法让 OpenURI 理解重定向?

观察: 在对空格进行编码后,OpenURI 可以正确处理生成的重定向 URL,如下所示:

redirected = 'https://www.example.com/upload/comercial (2).jpg'
encoded = URI.escape(redirected) 
# https://www.example.com/upload/comercial%20(2).jpg

download = open(encoded, {ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE, allow_redirections: :all})
# Success
Run Code Online (Sandbox Code Playgroud)

显然,在调用之前,重定向 URL 是未知的open()

ruby open-uri

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