小编Jos*_*ver的帖子

为什么Ruby不符号#=〜(正则表达式匹配运算符)?

在对它们执行正则表达式匹配时,Ruby不会自动对符号进行字符串化,这在包含符号的变量时很容易实现,并且在尝试正则表达式匹配之前忘记需要在它们上调用#to_s:

>> :this =~ /./
=> false
>> :this =~ :this
=> false
>> :this =~ /:this/
=> false
Run Code Online (Sandbox Code Playgroud)

事实证明:=〜是在Object,Ruby 1.8的原始类中定义的:

http://rubybrain.com/api/ruby-1.8.7/doc/index.html?a=M000308&name==~

当然,实现只返回false,将其留给String和Regexp这样的子类来提供有意义的实现.

那么为什么Symbol不能提供类似下面的内容呢?

def =~(pattern)
  self.to_s =~ pattern
end
Run Code Online (Sandbox Code Playgroud)

那里的任何Ruby语言学家都知道吗?

ruby

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

如何在Rails before_save钩子中正确处理更改的属性?

我有一个看起来像这样的模型:

class StopWord < ActiveRecord::Base
  UPDATE_KEYWORDS_BATCH_SIZE = 1000

  before_save :update_keywords

  def update_keywords
    offset = 0
    max_id = ((max_kw = Keyword.first(:order => 'id DESC')) and max_kw.id) || 0
    while offset <= max_id
      begin
        conditions = ['id >= ? AND id < ? AND language = ? AND keyword RLIKE ?',
            offset, offset + UPDATE_KEYWORDS_BATCH_SIZE, language]

        # Clear keywords that matched the old stop word
        if @changed_attributes and (old_stop_word = @changed_attributes['stop_word']) and not @new_record
          Keyword.update_all 'stopword = 0', conditions + [old_stop_word]
        end …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails

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

如何在Python 2.5中为局部变量分配异常?

在Python 2.6+中,您可以处理以下异常:

  try:
    # stuff
  except Exception as e:
    return 'exception %s' % type(e)
Run Code Online (Sandbox Code Playgroud)

2.5中的等价物是多少?

python python-2.5

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

如何在AWS SQS队列上添加权限?

使用以下代码,我可以使用我的AWS账号添加权限,但队列不会收到来自SNS的任何消息.

AddPermissionRequest addPermissionRequest = new AddPermissionRequest();
addPermissionRequest.ActionName.Add("SendMessage");
addPermissionRequest.ActionName.Add("ReceiveMessage");
addPermissionRequest.QueueUrl = queueUrl;
addPermissionRequest.Label = General.IpAddressAWSFriendly;
addPermissionRequest.AWSAccountId.Add(AWS_ACCOUNT_ID);
sqs.AddPermission(addPermissionRequest);
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试通过通配符(*)为每个人设置权限时:

addPermissionRequest.AWSAccountId.Add("*");
Run Code Online (Sandbox Code Playgroud)

它给了我一个错误.如果我在AWS SQS控制台中手动添加权限并指定

SendMessage
ReceiveMessage
Run Code Online (Sandbox Code Playgroud)

对于允许的操作和原则,我将其设置为"所有人",队列确实从我的SNS主题接收消息.所以,显然,我做错了什么,但我再也看不到了.

任何帮助都会很棒!我希望亚马逊有示例,SDK附带的示例并未显示有关设置策略或权限的任何信息.在线文档中也没有显示任何内容.令人沮丧.

c# permissions clojure amazon-sqs amazon-web-services

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

如何在Clojure中删除第n个项目?

如何删除集合中的第n个项目?我想做这样的事情:

(def coll [:apple :banana :orange])

(drop-nth 0 coll)  ;=> [:banana :orange]
(drop-nth 1 coll)  ;=> [:apple :orange]
(drop-nth 2 coll)  ;=> [:apple :banana]
Run Code Online (Sandbox Code Playgroud)

到目前为止,有没有比我想出的更好的方法呢?

(defn drop-nth [n coll]
  (concat (take n coll) (nthrest coll (inc n))))
Run Code Online (Sandbox Code Playgroud)

clojure

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

lein repl以错误的命名空间开始

TLDR;

lein repl在命名空间开始于定义:mainproject.clj,而不是user如所期望.

细节

我有一个Leiningen项目,它在uberjar中作为命令行应用程序部署,所以我可以像这样运行它:

java -jar my-app-1.0-standalone.jar --some --args
Run Code Online (Sandbox Code Playgroud)

我还有一个dev/user.clj给我一个很好的REPL环境,如这里所述.

project.clj看起来像这样:

(defproject my-app "1.0"
  :main my-app.cli
  :aot [my-app.cli]

  :profiles {:dev {:source-paths ["src" "dev"]}})
Run Code Online (Sandbox Code Playgroud)

当我lein repl从命令行或M-x cider-jack-in从Emacs 启动我的REPL时,我在my-app.cli命名空间中,而不是user.

如果我:main my-app.cli从中移除project.clj,我的REPL user就像我期望的那样在命名空间中启动,但显然这会破坏我的超级明星.

有任何想法吗?

clojure leiningen

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

Where is sdl-config installed on MacOS 10.6 (Snow Leopard)

After installing SDL and SDL-devel in MacOS X 10.6 (Snow Leopard), trying to configure some source code that requires SDL yields:

checking for sdl-config... no
checking for SDL - version >= 1.2.0... no
*** The sdl-config script installed by SDL could not be found
*** If SDL was installed in PREFIX, make sure PREFIX/bin is in
*** your path, or set the SDL_CONFIG environment variable to the
*** full path to sdl-config.
configure: error: *** SDL version 1.2.0 not found! …
Run Code Online (Sandbox Code Playgroud)

macos sdl

6
推荐指数
2
解决办法
5691
查看次数

编写Makefile.am以调用googletest单元测试

我正在尝试将我的第一个单元测试添加到现有的开源项目中.具体来说,我添加了一个名为audio_manager的新类:

src/audio/audio_manager.h
src/audio/audio_manager.cc
Run Code Online (Sandbox Code Playgroud)

我创建了一个src/test目录结构,它反映了实现文件的结构,并编写了我的googletest单元测试:

src/test/audio/audio_manager.cc
Run Code Online (Sandbox Code Playgroud)

现在,我正在尝试设置我的Makefile.am来编译并运行单元测试:

src/test/audio/Makefile.am
Run Code Online (Sandbox Code Playgroud)

我从以下位置复制了Makefile.am:

src/audio/Makefile.am
Run Code Online (Sandbox Code Playgroud)

有没有人对我有一个简单的配方,还是对我来说是神秘的汽车文档?:)

c++ automake unit-testing makefile googletest

6
推荐指数
2
解决办法
4549
查看次数

将Clojure添加到Java项目中的问题

我正在开发一个使用Maven构建它的Java项目.我正在开发的一些功能在Java中非常麻烦,但在Clojure中很简单,所以我想在Clojure中实现它并让Java无缝地使用生成的类.

这是我需要传递的单元测试(src/test/java/com/foo/weather/DataProcessorTest.java):

package com.foo.weather;

import static org.junit.Assert.*;
import org.junit.Test;
import java.util.*;

public class DataProcessorCljTest {
   @Test
   public void processWithTotalsAndSubTotals() throws Exception {
      assertEquals(2, DataProcessor.process(createRawData()).size());
   }

   private List<List<String>> createRawData() {
      List<List<String>> data = new ArrayList<List<String>>();
      data.add(new ArrayList<String>(Arrays.asList("2011-11-01", "Temperature", "19.2")));
      data.add(new ArrayList<String>(Arrays.asList("2011-11-01", "Pressure", "1.1")));
      return data;
   }
}
Run Code Online (Sandbox Code Playgroud)

这是Clojure代码(src/main/clojure/com/foo/weather/data-processor.clj):

(ns com.foo.weather.DataProcessor
  (:gen-class
    :methods [#^{:static true} [process [java.util.List] java.util.List]]))

(defn process [raw-data]
  (java.util.ArrayList. []))
Run Code Online (Sandbox Code Playgroud)

我已将以下内容添加到我的pom.xml中以构建Clojure代码:

<project>
   <!-- lots of stuff omitted -->
   <build>
      <plugins>
         <!-- ... -->
         <plugin>
            <groupId>com.theoryinpractise</groupId>
            <artifactId>clojure-maven-plugin</artifactId>
            <version>1.3.6</version>
            <executions>
               <execution> …
Run Code Online (Sandbox Code Playgroud)

java clojure maven

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

Clojure中的基本几何

我正在寻找一个Clojure库来做一些基本的几何,例如:

  • 给出其起点和终点坐标的线的斜率
  • 给定具有已知斜率的线和x值,计算y值(并计算给定y的x)

考虑到方程的数学定义,我可以很容易地写出这些,但是如果有一个像样的库已经做到这一点,那么这样做似乎是一种耻辱.

请注意,我不需要以图形方式绘制事物等等,因此引入大量图形依赖项的库并不受欢迎.

math geometry clojure

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