在Javascript中给出类似字典的对象,例如{a:1, b:-2, c:42},是否有一种随机选择属性的简单方法?
在上面的例子中,我想有,将返回的函数a,b或c随机.
我提出的解决方案如下:
var proplist = []
forEach(property in foo) {
if(propertyIsEnumerable(foo[property]) {
proplist.push(property);
}
}
var n = proplist.length;
// randomly choose property (randInt(n) returns a random integer in [0,n))
proplist[randInt(n)];
Run Code Online (Sandbox Code Playgroud)
有没有比较惯用的方法呢?
我正在尝试将远程计算机上的 MySQL 数据库中的表复制到本地计算机上的另一个 MySQL 数据库中。我注意到在将转储导入到我的本地机器后,有像 ’ 这样的字符而不是单引号。
我认为这是一个编码问题,所以我进入了两个数据库并运行了show create table posts,在两个数据库接近尾声时,我看到了CHARSET=utf8. 另外,我file -i在将转储文件scp导入本地机器之前和之后都运行了它,它们都是 utf8。
但是,当我导入这个文件时,我之前得到了这个:
attendees—policy makers,
Run Code Online (Sandbox Code Playgroud)
之后:
attendees—policy makers,
Run Code Online (Sandbox Code Playgroud)
我不确定为什么会这样,一切都使用 utf8,我错过了什么?
编辑:我在mysql Ver 14.12 Distrib 5.0.75, for debian-linux-gnu (x86_64)远程和mysql Ver 14.14 Distrib 5.5.25a, for osx10.7 (i386)本地使用。
给定一个函数,如fibonacci重复的树递归实现,我如何在表达式的评估中显示每个步骤(fib 5)?
(define (fib n)
(cond ((= n 0) 0)
((= n 1) 1)
(else (+ (fib (- n 1)
(fib (- n 2))))))
Run Code Online (Sandbox Code Playgroud)
例如,我想输出:
(fib 5)
(+ (fib 4) (fib 3))
(+ (+ (fib 3) (fib 2)) (+ (fib 2) (fib 1)))
(+ (+ (+ (+ (fib 1) 0) (fib 1) (+ (fib 1) 0)) (+ (+ (fib 1) 0) (fib 1)))
(+ (+ (+ (+ 1 0) 1 (+ 1 0)) (+ (+ 1 0) 1)) …Run Code Online (Sandbox Code Playgroud) 我有以下宏来打印出一个整数数组的内容用于调试目的:
#define PRINT_ARRAY(ary, num) \
int ai = 0; \
printf("{"); \
for(ai=0; ai < num; ++ai) { \
printf("%d", ary[ai]); \
if(ai < num-1) printf(", "); \
} \
printf("}\n");
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,当我不止一次使用它时,一些编译器抱怨我正在重新定义ai.
有没有办法使宏标识符的每次调用都不同?我可以提出一个名称冲突变化非常小的命名方案,但我想让它自动化.
我知道我可以使用一个函数,但我仍然很好奇,因为我想知道是否有办法用宏来做这个.
我试图获取ASCII编码字符串的SHA256总和.首先,我尝试了sha256sum可执行文件:
$ echo foo | sha256sum
b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c
Run Code Online (Sandbox Code Playgroud)
但是当我使用这个PyCrypto库时,我会得到一些不同的东西:
from Crypto.Hash import SHA256
h = SHA256.new();
h.update('foo');
print(h.hexdigest());
Run Code Online (Sandbox Code Playgroud)
我得到以下内容:
c5aac592460a9ac7845e341090f6f9c81f201b63e5338ee8948a6fe6830c55dc
Run Code Online (Sandbox Code Playgroud)
我怀疑我错过了关于第一个的东西,也就是说,echo foo可能有分隔符或其他东西,但我无法弄清楚是什么.
这两种情况有什么不同?
我有一个名为 的表变量,@t它是我在此处定义的 specsAndModel 类型的实例:
CREATE TYPE specsAndModel AS TABLE
(
specName VARCHAR(50)
,specVal VARCHAR(50)
)
Run Code Online (Sandbox Code Playgroud)
做 aselect specName,specVal from @t给出以下形式的数据:
specName | specVal
--------------------------------
[modelNumber] | F00-B4R
[Internal Switch(es)] | 2.00000
[Number of Ports] | 1.00000
[Color Insulator] | Yellow
Run Code Online (Sandbox Code Playgroud)
我插入了第一行,这样当我转置表格时,就会有一个modelNumber字段。我打算将转置表连接到该字段上的另一个表。
为了考虑不同模型的不同记录数,我使用字符串连接构造了pivot语句:
DECLARE @cols NVARCHAR(MAX);
DECLARE @query NVARCHAR(MAX);
SELECT @cols = COALESCE(@cols + ',' + specName, specName) FROM @t;
SET @query = N'SELECT ' + @cols
+ N' FROM @var src'
+ N' PIVOT …Run Code Online (Sandbox Code Playgroud) c ×1
command-line ×1
encoding ×1
javascript ×1
macros ×1
mysql ×1
mysqldump ×1
python ×1
scheme ×1
scope ×1
sha256 ×1
sql ×1
sql-server ×1
utf-8 ×1