小编gio*_*ele的帖子

检查字符串是否与红宝石中的正则表达式匹配的最快方法?

检查字符串是否与Ruby中的正则表达式匹配的最快方法是什么?

我的问题是我必须通过一个庞大的字符串列表"egrep"来找到哪些是与运行时给出的正则表达式相匹配的字符串.我只关心字符串是否与正则表达式匹配,而不是它匹配的位置,以及匹配组的内容是什么.我希望这个假设可以用来减少我的代码花费匹配正则表达式的时间.

我加载正则表达式

pattern = Regexp.new(ptx).freeze
Run Code Online (Sandbox Code Playgroud)

我发现它string =~ pattern比...稍快string.match(pattern).

还有其他技巧或捷径可以用来使这项测试更快吗?

ruby regex performance

81
推荐指数
5
解决办法
9万
查看次数

更改Vim交换/备份/撤消文件名

是否有可能改变Vim命名交换/备份/撤消文件的方式?

为了避免混乱,我在我的设置选项中~/.vimrc转储这些文件~/.vim/tmp/{swap,backup,undo}; 但是,由于我经常使用相同的名称编辑不同目录中的文件,因此我经常会遇到许多其他难以区分的文件,而Vim有时无法恢复.

理想情况下,我想%path%to%file.undo对所有这些辅助文件使用持久性undo has()的命名方案; 没有明显的设置方法,但可以用Buf{Read,Write}宏来完成吗?

vim swapfile

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

如何处理实验性非合并git分支?

目前使用git分支创建的最佳实践是为了测试错误的解决方案并且尚未合并,因为审核流程显示错误或有更好的问题解决方案?

一个例子.项目fizzbuzz有一个错误报告,报告空字段崩溃.

  • 我创建了一个新分支handle-empty-fields并对该分支进行了两次提交,"解决"了这个问题.
  • 然后我将该分支提交给fizzbuzz项目经理,并将其链接到错误报告中.
  • 有人在我的修复程序中发现错误,写了另一个补丁并且该补丁被接受了.

现在handle-empty-fields我的代码中的代码是无用的:它不正确,不能再应用于代码,但它已在该错误报告中引用.

我该怎么办?保持分支?我会很快结束几十个被遗弃的分支,而git无法将分支标记为已废弃或已关闭.删除分支?但是那些查看该错误报告的人会发现它并获得404.

通常建议人们不要重新设置他们的存储库,因为这会给其他开发人员带来问题,尤其是下游开发人员.对功能或错误修复分支有什么建议?

更新:看起来github永远不会删除pull请求中包含的提交.因此,如果您推送更改并将其转换为拉取请求,则可以稍后删除该分支而不会丢失任何更改.好吧,虽然github还在工作;).

git github feature-branch

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

拆分seeds.rb文件

我的seeds.rb文件变得非常大.重构文件中数据的最佳方法是什么?

我可以将数据放入文件require中的各种文件中seeds.rb吗?

ruby refactoring ruby-on-rails

21
推荐指数
2
解决办法
6605
查看次数

如何破坏对象本身

是否有解决当前对象实例的解决方案?

我正在寻找一些看起来像的东西:

class KillMe {
    ....
    public void destroy() {
        this.getObject = null //this is only for demonstrate my idea
    }

    ....
}
Run Code Online (Sandbox Code Playgroud)

java object

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

应用程序支持哪些"标准"应用程序返回/退出代码?

是否有标准的应用程序返回代码集?比如返回0表示成功1表示失败,然后等等?

我有一个Windows Server应用程序,我正在添加一些返回错误代码,并希望坚持标准代码,除了我将需要的应用程序特定的代码.

windows standards

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

使用Mechanize读取本地HTML文件

我正在构建一个爬虫,我知道如何使用ruby mechanize使用以下代码从网上读取页面:

require 'mechanize'
agent = Mechanize.new
agent.get "http://google.com"
Run Code Online (Sandbox Code Playgroud)

但我可以使用Mechanize从文件系统中读取HTML文件吗?怎么样?

ruby mechanize

10
推荐指数
2
解决办法
6363
查看次数

用Ruby替换部分正则表达式匹配

我想转换以下文字

This is a ![foto](foto.jpeg), here is another ![foto](foto.png)
Run Code Online (Sandbox Code Playgroud)

This is a ![foto](/folder1/foto.jpeg), here is another ![foto](/folder2/foto.png)
Run Code Online (Sandbox Code Playgroud)

换句话说,我想找到括在括号中的所有图像路径(文本采用Markdown语法),并用其他路径替换它们.包含新路径的字符串由单独的real_path函数返回.

我想String#gsub在它的块版本中使用它.目前我的代码如下所示:

re = /!\[.*?\]\((.*?)\)/

rel_content = content.gsub(re) do |path|
    real_path(path)
end
Run Code Online (Sandbox Code Playgroud)

这个正则表达式的问题在于它将匹配![foto](foto.jpeg)而不仅仅是foto.jpeg.我也试过其他regexen,(?>\!\[.*?\]\()(.*?)(?>\))但无济于事.

我目前的解决方法是拆分路径并稍后重新组装.

是否有一个Ruby正则表达式只匹配括号内的路径而不是所有上下文所需的字符?

答案后更新:这里的主要问题是Ruby的regexen没有办法指定零宽度的lookbehinds.最通用的解决方案是将regexp之前的部分和实际匹配部分之后的部分分组,即/(pre)(matching-part)(post)/,然后重建完整的字符串.

在这种情况下,解决方案将是

re = /(!\[.*?\]\()(.*?)(\))/

rel_content = content.gsub(re) do
    $1 + real_path($2) + $3
end
Run Code Online (Sandbox Code Playgroud)

ruby regex markdown replace

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

将XML元素添加到Nokogiri :: XML :: Builder文档中

如何添加Nokogiri::XML::Element到正在创建的XML文档Nokogiri::XML::Buider

我目前的解决方案是序列化元素并使用该<<方法让Builder重新解释它.

orig_doc = Nokogiri::XML('<root xmlns="foobar"><a>test</a></root>')
node = orig_doc.at('/*/*[1]')

puts Nokogiri::XML::Builder.new do |doc|
    doc.another {
        # FIXME: this is the round-trip I would like to avoid
        xml_text = node.to_xml(:skip_instruct => true).to_s
        doc << xml_text

        doc.second("hi")
    }
end.to_xml

# The expected result is
#
# <another>
#    <a xmlns="foobar">test</a>
#    <second>hi</second>
# </another>
Run Code Online (Sandbox Code Playgroud)

然而,这Nokogiri::XML::Element是一个非常大的节点(以千字节和数千个节点的顺序),并且此代码处于热门路径中.分析表明序列化/解析往返非常昂贵.

如何指示Nokogiri Builder将现有XML元素添加node到"当前"位置?

ruby xml nokogiri

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

http.get和ISO-8859-1编码的响应

我即将写一个RSS-feed fetcher并遇到一些charset问题.

与编码相比,加载和解析订阅源非常简单.我正在加载Feed,http.get我将每个数据事件放在一起.后来我用npm-lib解析整个字符串,feedparser它对给定的字符串工作正常.

可悲的是我已经习惯了像utf8_encode()php 这样的函数,我在node.js中错过了它们,所以我坚持使用当前没有做我想要的Iconv.

没有编码,有几个utf8?-icons用于错误的字符集,用iconv,字符串被解析错误:/

目前我正在单独编码每个字符串:

//var encoding ? ISO-8859-1 etc. (Is the right one, checked with docs etc.)
// Shortend version

var iconv = new Iconv(encoding, 'UTF-8');

parser.on('article', function(article){
    var object = {
        title : iconv.convert(article.title).toString('UTF-8'),
        description : iconv.convert(article.summary).toString('UTF-8')
    }
    Articles.push(object);
});
Run Code Online (Sandbox Code Playgroud)

我应该使用数据缓冲区开始编码还是稍后使用完整的字符串?

谢谢!

PS:编码是通过解析xml的头来确定的

如何在node.js中进行编码的模块更容易?

character-encoding node.js

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