我今天花在从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 …
大家都知道Show.但是关于:
class ShowText a where
showText :: a -> Text
Run Code Online (Sandbox Code Playgroud)
我无处可寻.为什么?
我花了几个小时来追踪这个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表现得很好?
我有并发的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渠道来实现并发安全.任何人都可以贡献一个例子吗?
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文档.
任何人都知道这可能是什么?
示例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是否有一种清洁,惯用的方法来避免这个问题?
我正在试图找出如何在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?
nixos.org上的一个顶级项目是Disnix,"Nix的分布式部署扩展".另一个项目是NixOps,"用于在网络或云中部署NixOS机器的工具".
该功能设置声音非常相似.他们是竞争对手,还是另一个的继承者,还是他们解决了不同的问题?如果他们似乎是"竞争对手",那么差异是什么,我应该使用哪些?
编辑:如果有任何迹象,NixOps似乎正在积极开发中,但我无法看到Disnix最后一次工作.
我有一个Elastic Beanstalk应用程序,最初配置为使用经典负载均衡器.我发现这在通过WebSocket连接时会导致错误.因此,我将应用程序配置为使用Application Load Balancer,因为我被告知ALB支持WebSockets.但是,似乎他们没有:尝试通过WebSocket连接到我的ALB时,我得到了完全相同的错误.
ALB实际上支持WebSocket吗?AWS文档与此相矛盾.该页面说它只支持HTTP和HTTPS.没有指南来设置ALB以支持WebSocket.
Bootstrap的JavaScript页面显示了一些很好用的按钮来设置复选框和无线电字段的样式.例如,对于复选框,我可能会写
<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复选框/单选按钮?