小编d11*_*wtq的帖子

Emacs在多个文件中查找并替换正则表达式(find-name-dired + Q),不保存我的缓冲区?

我无法弄清楚这里发生了什么.我已完成搜索并替换整个目录,使用:

  1. Mx find-name-dired RET
  2. 选择我的项目的根目录
  3. 输入*.rb作为要匹配的文件名
  4. 按"t"选择找到的所有文件
  5. 按"Q"(切换Q)开始搜索/替换
  6. 输入"transaction"作为查询,然后输入"invoice"作为替换

现在我循环浏览它为我打开的所有缓冲区,根据替换选择性地按"y"或"n".当它完成时,它只是让我进入我改变的最后一个缓冲区.

因此,按Cz来查看emacs窗口并查看更改内容,显示没有保存任何文件,这是我所期望的.

所以我做了M-x save-some-buffers RET,告诉我没有文件可以保存.所以我开始使用Cx b旋转我的缓冲区并确认,确实,缓冲区确实与磁盘上的内容相比有所变化.

所以我重复这个过程,这次是一个全新的emacs进程(当我启动进程时根本没有打开缓冲区).最后我有一堆缓冲区打开,有变化(我可以看到),再次,emacs说没有什么可以保存.

所以我尝试使用Cx Cb来调出IBuffer.标记我要保存的所有文件,然后按"S"保存它们,此时显示"操作已完成;保存了27个缓冲区".真棒......除了git还在告诉我,emacs实际上什么也没有保存.

我究竟做错了什么?我想在整个项目中用"invoice"替换"transaction",虽然我确实需要以交互方式进行,因为有些地方不应该进行替换.

Emacs 23.

emacs

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

编写便携式方案代码.除了R5RS本身有什么"标准"吗?

我正在学习计划,直到现在一直在使用诡计.我真的只是学习一种教自己一种函数式编程语言的方法,但是我想发布某种类型的开源项目来重新加强研究 - 不知道到底是什么......我是一名网络开发人员,所以可能是webby.

很明显,发布方案代码并不是很容易做到,所有这些不同的实现都没有超出语言本身核心的真正标准(R5RS).例如,我几乎肯定需要在磁盘上和TCP套接字上执行基本IO,以及字符串操作,例如扫描/正则表达式,这似乎不被R5RS覆盖,除非我没有看到它在文件中.似乎Scheme更像是一个"概念"而不是一种实用的语言......这是一个公平的评估吗?如果我想学习一种更适合在开源项目中使用的函数式编程语言,也许我应该看看像Haskell这样的东西?

实际上,当您想要发布开源项目时,不同的方案实现会带来多大的痛苦?我真的不想在各种主流实现(Chicken,guile,MIT,DrRacket)下为字符串操作等基本内容维护5种不同的函数.实际上有多少人为交叉实现兼容性编写方案,而不是与仅存在于他们自己的方案中的库函数紧密耦合?

我已经阅读了http://www.ccs.neu.edu/home/dorai/scmxlate/scheme-boston/talk.html,这并不能让我满怀信心;)

编辑| 让我们将"标准"重新定义为"共同".

scheme

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

AWS AutoScalingGroup HealthCheckType'ELB'过早地考虑实例"InService"

我试图AutoScalingRollingUpdate通过引入在线新实例来开始我的自动扩展组,然后只有在新实例接受流量时才终止旧实例.似乎AutoScalingRollingUpdate就是为此目的而设计的.

我将AutoScalingGroup的HealthCheckType设置为'ELB'.我还在ELB上设置了HealthCheck,要求:

  • 3个成功请求/"健康"
  • 10个不成功的请求/"不健康"
  • 没有宽限期(零,0)

现在,从ELB的角度来看,当新实例联机时,它们不是InService几分钟,这就是我的期望.但是,从AutoScalingGroup的角度来看,它们几乎立即被视为InService,因此,我的AutoScalingGroup在新实例准备好接收流量之前将健康实例停止服务.我很困惑为什么ASG认为实例在ELB之前是健康的,当HealthCheckType明确地设置为'ELB'时.

我已经尝试过设置宽限期,但这根本不会改变任何东西.事实上,我删除了300秒的宽限期,因为我认为在宽限期或某些事情中,可能实例是隐含的"InService".

我知道我可以在滚动更新策略上设置PauseTime,但这很脆弱,因为有时在实例联机时会发生故障,并且在完成配置之前它们会被修复和替换,因此有时可能会超出PauseTime窗口.此外,我想尽量减少我的应用程序同时运行两个不同版本的时间.

    ... ELB stuff ...

    "HealthCheck": {
      "HealthyThreshold": "3",
      "UnhealthyThreshold": "10",
      "Interval": "30",
      "Timeout": "15",
      "Target": {
        "Fn::Join": [
          "",
          [
            {"Fn::Join": [":", ["HTTP", {"Ref": "hostPort"}]]},
            {"Ref": "healthCheckPath"}
          ]
        ]
      }
    },

   ... ASG Stuff ...

  {
    ... snip ...

    "HealthCheckType": "ELB",
    "HealthCheckGracePeriod": "0",
    "Cooldown": "300"
  },
  "UpdatePolicy" : {
    "AutoScalingRollingUpdate" : {
      "MinInstancesInService" : "1",
      "MaxBatchSize" : "1"
    }
  }
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-elb aws-cloudformation autoscaling

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

将charset名称转换为NSStringEncoding

给定一个charset字符串,例如"utf-8","iso-8859-1","us-ascii"等,是否有任何内置方法可以在Cocoa中获取相应的NSStringEncoding?

现在我正在考虑构建一个NSDictionary,其中包含映射到NSStringEncoding的名称的规范化版本,然后具有以相同方式规范化输入的查找机制.但是,如果给出字符串"UTF-8"等,真的没办法获得NSUTF8StringEncoding吗?

cocoa encoding objective-c character-encoding

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

为什么Rails使布局选择成为控制器问题而不是视图问题?我可以从视图中选择布局吗?

也许有一个技术/实现的原因,但在我看来,"布局"显然是视图层的一部分,但Rails似乎只允许在控制器级别指定布局.

我的控制器不应该关心布局......模板应该.有没有办法在.erb文件中指定要使用的布局?

就像是:

<%= with_layout :news_feed do %>

  <p>
    My markup in here.
  </p>

<% end %>
Run Code Online (Sandbox Code Playgroud)

或者你能想到的任何其他实现......但是文档似乎只是从控制器的角度来看布局.

也许实现一个with_layout帮助器并不太难.

编辑| 我找到了我正在寻找的东西:

<% render :layout => "some_layout" do %>
  <p>
    My markup here
  </p>
<% end %>
Run Code Online (Sandbox Code Playgroud)

现在提供的ActionController具有:

class ApplicationController < ActionController::Base
  layout nil
Run Code Online (Sandbox Code Playgroud)

然后,每个模板都可以使用这种方法选择自己的布局.

如果在app/layouts中放置一个名称与控制器匹配的布局,那么将使用该布局,因此您不必严格指定它们是否完全相同.无论哪种方式,花花公子如何编写你的模板现在可以完全控制它,而不是那个正在编写控制器的家伙:)

layout ruby-on-rails

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

Ruby C扩展开发人员的命名约定

我有兴趣在C语言中为ruby编写扩展时遵循正确的命名约定.具体来说,我指的是添加_p谓词的函数名称和m为模块添加前缀c的类,等等.

例如,如果我们想在C中定义如下的谓词方法,我们应该_p在定义方法的函数中使用后缀作为后缀.

class MyClass
  def awesome?
    true
  end
end
Run Code Online (Sandbox Code Playgroud)

在C:

static VALUE my_extension_my_class_awesome_p(VALUE self) {
  return Qtrue;
}

void Init_my_extension(void) {
  VALUE cMyClass = rb_define_class("MyClass", rb_cObject);

  rb_define_method(cMyClass,
                   "awesome?",
                   my_extension_my_class_awesome_p,
                   0);
}
Run Code Online (Sandbox Code Playgroud)

查看核心Ruby源代码,我看到_p(谓词)的后缀_m,而我无法从中推断出含义.我确信还有其他一些惯例.

还有其他命名约定,例如何时使用下划线以及何时使用骆驼外壳.在编写具有大量C代码的扩展时,如果没有指导原则,就很容易造成混乱.

某个地方有明确的清单吗?在谷歌搜索Ruby C扩展主题时,我似乎从未出现过有用的结果.任何显示纯Ruby语法和正确命名的等效C函数的快速示例?

c ruby

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

Rails 3基于用户权限的ActiveRecord验证

我正在将代码从非标准自定义PHP框架内置的应用程序转移到Ruby on Rails(版本3).在PHP版本中,所有控制器都非常胖,有薄模型,我一直不同意,所以我很享受Rails在模型级别进行验证的方式,这可能是这些胖控制器中发生情况的90%目前.

我面临的一个问题是,不确定如何解决问题,那就是基于谁对模型进行更改的不同验证规则.例如,管理员或记录的原始创建者应该能够执行诸如将记录标记为已删除(软删除)之类的操作,而其他人则不应该这样做.

class Something < ActiveRecord::Base
  ...
  validates :deleted, :owned_by_active_user => true
  ...
end

class OwnedByActiveUserValidator < ActiveModel::EachValidator
  validate_each(record, attr_name, attr_value)
    # Bad idea to have the model know about things such as sessions?
    unless active_user.admin? || active_user.own?(record)
      record.errors.add :base, "You do not have permission to delete this record"
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

由于模型本身(理论上)不知道正在进行更改的用户,所以做这种事情的"轨道方式"是什么?我应该将活动用户设置为记录上的虚拟属性(实际上没有保存到DB),还是应该只在控制器中执行这些检查?我不得不承认,让模型检查活动用户的权限确实很奇怪,并且在测试模型时增加了复杂性.

我渴望在模型中尽可能多地保留这一点的一个原因是因为我想提供API(通过OAuth访问)和网站,而不需要复制太多代码,例如这些类型的权限检查.

validation permissions activerecord ruby-on-rails ruby-on-rails-3

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

使用sinon.js创建一个基于真实构造函数/原型的间谍方法的"间谍对象"

我正在使用sinon.js作为在Mocha测试中存根依赖关系的方法.我喜欢'间谍'方法而不是经典的模拟方法,因为间谍的内省看起来更清晰,并且提供了比经典模拟对象稍微落后思考更多的灵活性.

也就是说,我想知道在创建整个对象的测试间谍时我是否正确使用它.假设我有一个测试依赖项,它有4个方法,我希望将每个方法存根并在其中的一个或两个上进行断言.目前我这样做:

var spyObj = {
  aMethod: sinon.spy(),
  otherMethod: sinon.spy(),
  whatever: sinon.spy()
};
Run Code Online (Sandbox Code Playgroud)

然后我就问问题spyObj.aMethod.calledWith(a, b, c).

是否有更好的方法来模拟整个类而不是重复测试套件本身的方法名称?看起来像sinon.stub()尝试迭代给定对象的所有成员,但这似乎不能作为一种方法来获取更现代的JS运行时(如V8)中的大多数对象的所有方法,除非对象实际上是可以枚举的东西.它还尝试对实际对象进行修补,而不是返回等效的对象,这在某种程度上是不可取的.我只需要一个符合接口的对象,但行为类似于null对象,除非我另有说明.

能做这样的事情会很好:

var spyObject = sinon.spy(MyClass.prototype);
Run Code Online (Sandbox Code Playgroud)

如何在Node.js中找到构造函数/原型的所有方法,以便像上面那样创建一个包装器?

这更多的是关于存根逻辑,而不是测试许多方法的调用(我试图限制为一个,或者推动两个).例如,可能会执行不需要的I/O,或者如果执行需要额外的复杂装置.

javascript mocha.js node.js sinon

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

可搜索,离线的Erlang文档?

有没有我可以下载易于搜索的Erlang文档副本的地方,以便我可以在长途飞行中使用它,例如?

erlang

10
推荐指数
1
解决办法
620
查看次数

如何使用docker-py(官方docker客户端)启动bash shell?

我正在尝试使用docker-py运行一个docker容器并将我放入该容器中的bash shell中.我得到了运行容器(我可以看到它docker ps,我可以使用本机docker客户端很好地附加它),但是当我使用attach()官方Python库时,它只是给我一个空字符串作为响应.如何附加到我的bash shell?

>>> import docker
>>> c = docker.Client()
>>> container = c.create_container(image='d11wtq/python:2.7.7', command='/bin/bash', stdin_open=True, tty=True, name='docker-test')
>>> container
{u'Id': u'dd87e4ec75496d8369e0e526f343492f7903a0a45042d312b37859a81e575303', u'Warnings': None}
>>> c.start(container)
>>> c.attach(container)
''
Run Code Online (Sandbox Code Playgroud)

python docker dockerpy

10
推荐指数
1
解决办法
6566
查看次数