小编jam*_*her的帖子

Ruby中的装饰器(从Python迁移)

我今天花在从Python角度学习Ruby.我完全没能解决的一件事是相当于装饰者.为了削减一些东西,我试图复制一个简单的Python装饰器:

#! /usr/bin/env python

import math

def document(f):
    def wrap(x):
        print "I am going to square", x
        f(x)
    return wrap

@document
def square(x):
    print math.pow(x, 2)

square(5)

运行这个给了我:

I am going to square 5
25.0

所以,我想创建一个函数square(x),但是要对它进行修饰,以便在它发生之前提醒我它将会变成什么样.让我们摆脱糖,使其更基本:

...
def square(x):
    print math.pow(x, 2)
square = document(square)
...

那么,我如何在Ruby中复制它?这是我的第一次尝试:

#! /usr/bin/env ruby

def document(f)
    def wrap(x)
        puts "I am going to square", x
        f(x)
        end
    return wrap
    end

def square(x)
    puts x**2
    end

square = document(square)

square(5)

运行此生成:

./ruby_decorate.rb:8:in `document': wrong number …

ruby decorator

28
推荐指数
3
解决办法
8534
查看次数

是否有相当于Data.Text的Show类型类?

大家都知道Show.但是关于:

class ShowText a where
  showText :: a -> Text
Run Code Online (Sandbox Code Playgroud)

我无处可寻.为什么?

text haskell typeclass

27
推荐指数
3
解决办法
3333
查看次数

MySQL列类型"TIMESTAMP"隐式包含"NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP"

我花了几个小时来追踪这个bug.给出以下SQL:

DROP DATABASE IF EXISTS db;
CREATE DATABASE db;
CREATE TABLE db.tbl (t1 TIMESTAMP) ENGINE=INNODB;
SHOW CREATE TABLE db.tbl;
Run Code Online (Sandbox Code Playgroud)

最后一行告诉我:

'CREATE TABLE `tbl` (
  `t1` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=latin1'
Run Code Online (Sandbox Code Playgroud)

它究竟NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP来自哪里?我没有写任何这些,而且我非常不想要任何这些,而且我有点迷失,因为MySQL会做出这样的假设.

我是否打开/关闭了一些疯狂的模糊配置选项?这是默认行为吗?这是一个错误吗?无论如何,我如何让MySQL表现得很好?

mysql timestamp

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

Golang并发:如何从不同的goroutine附加到相同的切片

我有并发的goroutine想要将(指向a)指针结构附加到同一个切片.你如何在Go中编写它以使其兼容并发?

这将是我使用等待组的并发不安全代码:

var wg sync.WaitGroup
MySlice = make([]*MyStruct)
for _, param := range params {
    wg.Add(1)
    go func(param string) {
        defer wg.Done()
        OneOfMyStructs := getMyStruct(param)
        MySlice = append(MySlice, &OneOfMyStructs)
    }(param)
}
wg.Wait()
Run Code Online (Sandbox Code Playgroud)

我想你需要使用go渠道来实现并发安全.任何人都可以贡献一个例子吗?

concurrency append go goroutine

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

什么是文章"Oliver [1993]"描述PHP算法来计算文本相似性?

PHP库中有一个函数similar_text().文档(http://php.net/manual/en/function.similar-text.php)告诉我"这计算了Oliver [1993]中描述的两个字符串之间的相似性."

尽管进行了广泛的搜索,我找不到"Oliver [1993]"所指的论文; 也不是"Oliver"可能是谁的候选人.PHP源文档未记录.对Oliver 1993的唯一其他参考是在http://www.codeguru.com/forum/showthread.php?t=41089的论坛中,我认为该信息来自PHP文档.

任何人都知道这可能是什么?

php string text similarity

22
推荐指数
1
解决办法
5027
查看次数

CSS:浮动元素时对边距折叠问题的清晰解决方案

示例HTML + CSS:

<html>
  <body style="padding: 0; margin: 0;">
    <div style="float: right;">first</div>
    <div style="margin-top: 2em;">second</div>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

所需的行为:firstDIV浮到窗口的右上角. 实际行为:它漂浮在所需位置下方2em处. 原因: 保证金崩溃.

尽管发现了问题,但我能提出的解决方案感觉就像黑客一样:

  • 改变body风格 margin: -1px 0 0 0; border-top: 1px solid;.
  • <div style="height: 1px; margin-bottom: -1px;"></div>之前插入first
  • <div>first和之间插入上面的内容second

是否有一种清洁,惯用的方法来避免这个问题?

css layout margin css-float

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

Prolog中的Hello世界

我正在试图找出如何在Prolog中编写Hello World程序.我只是想创建一个像这样运行的程序:

> ./hw
Hello, world!
>
Run Code Online (Sandbox Code Playgroud)

问题是我可以找到的每个例子都在REPL中工作,如下所示:

?- consult(hello_world).
% hello compiled 0.00 sec, 612 bytes

Yes
?- hello_world.
Hello World!

Yes
Run Code Online (Sandbox Code Playgroud)

即使编译Prolog的例子也是如此:程序仍然只是落入REPL.对于"通用"语言来说,这显然没什么用处.那么,我该如何编写传统的Hello World?

prolog read-eval-print-loop

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

Disnix和NixOps之间有什么关系?

nixos.org上的一个顶级项目是Disnix,"Nix的分布式部署扩展".另一个项目是NixOps,"用于在网络或云中部署NixOS机器的工具".

该功能设置声音非常相似.他们是竞争对手,还是另一个的继承者,还是他们解决了不同的问题?如果他们似乎是"竞争对手",那么差异是什么,我应该使用哪些?

编辑:如果有任何迹象,NixOps似乎正在积极开发中,但我无法看到Disnix最后一次工作.

nixos

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

应用程序负载均衡器是否支持WebSockets?

我有一个Elastic Beanstalk应用程序,最初配置为使用经典负载均衡器.我发现这在通过WebSocket连接时会导致错误.因此,我将应用程序配置为使用Application Load Balancer,因为我被告知ALB支持WebSockets.但是,似乎他们没有:尝试通过WebSocket连接到我的ALB时,我得到了完全相同的错误.

ALB实际上支持WebSocket吗?AWS文档与此相矛盾.该页面说它只支持HTTP和HTTPS.没有指南来设置ALB以支持WebSocket.

amazon-web-services websocket elastic-load-balancer

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

Bootstrap复选框/单选按钮不会更改<input>值

BootstrapJavaScript页面显示了一些很好用的按钮来设置复选框和无线电字段的样式.例如,对于复选框,我可能会写

<div class="btn-group" data-toggle="buttons">
  <label class="btn btn-primary">
    <input type="checkbox"> Option 1
  </label>
</div>
Run Code Online (Sandbox Code Playgroud)

但是,库实际上并不会更改基础<input>字段的值- 它只会更改<label>字段是否具有类active.我原以为它会改变checked复选框上的属性.显然我不只是错误配置 - 这是Bootstrap网站上的示例工作方式.

这实际上是预期的行为吗?如果是这样,它似乎相当无用,因为人们想要使用复选框字段.如果没有,我如何正确配置Bootstrap复选框/单选按钮?

html javascript checkbox radio-button twitter-bootstrap

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