我上传了一个简单的Sinatra应用程序到AppFog.它在我的本地机器上运行良好.但在将应用程序上传到AppFog后,当我访问AppFog域时,会显示带有"禁止"消息的页面.
这些是appFog日志:
====> /logs/stderr.log <====
...
W, [2012-06-01T06:32:54.008426 #28933] WARN -- : attack prevented by Rack::Protection::IPSpoofing
211.32.146.42 - - [01/Jun/2012 06:32:54] "GET / HTTP/1.1" 403 - 0.0002
10.0.64.157 - - [01/Jun/2012:06:32:54 UTC] "GET / HTTP/1.0" 403 9 - -> /
W, [2012-06-01T06:32:54.393022 #28933] WARN -- : attack prevented by Rack::Protection::IPSpoofing
211.32.146.42 - - [01/Jun/2012 06:32:54] "GET /favicon.ico HTTP/1.1" 403 - 0.0002
10.0.64.157 - - [01/Jun/2012:06:32:54 UTC] "GET /favicon.ico HTTP/1.0" 403 9 - -> /favicon.ico
Run Code Online (Sandbox Code Playgroud)
我没有Rack::Protection::IPSpoofing在我的代码中使用,但我得到了这些错误.Rack::Utils …
我想使用lodash.template()创建一个html代码,但结果不是我预期的.
var a = '<td>a</td>';
var expected = '<tr><td>a</td></tr>';
var actual = _.template('<tr><%- a %></tr>', {a: a});
console.log(actual);
"<tr><td>a</td></tr>"
Run Code Online (Sandbox Code Playgroud)
因此填充的文本a已被转义.
我怎样才能得到结果expected?
我可以设置options.escape,但不知道如何使用此选项.
谢谢!
我想使用Ruby从文本文件中获取单词列表.我发现如何使用正则表达式来解析这里的单词,所以我创建了一个如下脚本:
src = File.open("text.txt")
word_list = []
src.each do |line|
word_list << line.downcase.split(/[^[:alpha:]]/).delete_if {|x| x == ""}
end
word_list.flatten!.uniq!.sort!
p word_list
Run Code Online (Sandbox Code Playgroud)
以下是示例文本文件text.txt:
TextMate可能是开发Ruby on Rails应用程序的最新热潮,但Vim是永恒的.此插件为Ruby on Rails应用程序开发提供以下功能.
自动检测包含来自Rails应用程序的文件的缓冲区,并将设置应用于这些缓冲区(并且仅应用于那些缓冲区).您也可以使用自动命令来应用自己的自定义设置.
非侵入.只应影响Rails应用程序中的文件; 常规Ruby脚本保持不变.即使启用了该插件,如果您不使用其功能,该插件也应该不受影响.
轻松导航Rails目录结构.gf考虑上下文并了解部分,固定装置等等.有两个命令:A(备用)和:R(相关),用于在文件之间轻松跳转,包括模型到迁移,模板到帮助器和控制器到功能测试等收藏夹.对于更高级的用法,:Rmodel,:Rview,:Rcontroller,以及其他几个命令.
作为一名Ruby新手,我想为这个问题学习更好(更清晰,更简洁,更符合惯例)的解决方案.
感谢您的任何建议和更正.
我想测试一个调用error()它的方法.
IntEmptyStack.top 是我想用specs2测试的:
abstract class IntStack {
def push(x: Int): IntStack = new IntNonEmptyStack(x, this)
def isEmpty: Boolean
def top: Int
def pop: IntStack
}
class IntEmptyStack extends IntStack {
def isEmpty = true
def top = error("EmptyStack.top")
def pop = error("EmptyStack.pop")
}
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止写的规范:
import org.junit.runner.RunWith
import org.specs2.runner.JUnitRunner
import org.specs2.mutable.Specification
@RunWith(classOf[JUnitRunner])
class IntStackSpec extends Specification {
"IntEmptyStack" should {
val s = new IntEmptyStack
"be empty" in {
s.isEmpty must equalTo(true)
}
"raise error when top called" in …Run Code Online (Sandbox Code Playgroud) 假设我们有一个二进制字符串,如10010010.
我想要的只是一个函数返回1该字符串的s 索引:
indicesOfOnes("10010010") -> List(0, 3, 6)
indicesOfOnes("0") -> List()
Run Code Online (Sandbox Code Playgroud)
我实施的是:
def indicesOfOnes(bs: String): List[Int] = {
val lb = ListBuffer[Int]()
bs.zipWithIndex.foreach { case (v, i) =>
if (v == '1') {
lb += i
}
}
lb.toList
}
Run Code Online (Sandbox Code Playgroud)
这有效,但我认为有更好的(更多功能)方法来完成这项工作.任何建议将不胜感激.
我正在尝试使用Flume NG将文本文件中的日志收集到HBase.日志文件中的每一行都是JSON文本,我将它们作为值插入HBase表中.问题是我不知道如何自定义行键模式.例如,当我计算表中的行时:
hbase(main):001:0> count 'flume-ng-test', 100000
Current count: 100000, row: default32e473e0-4f54-48b5-8081-c3f845b38456
Current count: 200000, row: default65b0cc3d-5421-4bb1-87e2-b21c2841fcd6
Current count: 300000, row: default98be85e3-bb9f-402e-8f36-0db74cb8ab44
Current count: 400000, row: defaultcbf888dc-e2bb-492f-ab17-63f5e0327344
Current count: 500000, row: defaultfedc40e5-04b4-49a4-8734-655f43956d6e
502224 row(s) in 8.1540 seconds
Run Code Online (Sandbox Code Playgroud)
行键是default + UUID_like_string.如果我想使用当前时间戳(升序或降序)更改行键模式,我该怎么办?
谢谢你的评论.