小编And*_*ore的帖子

使用map/reduce映射集合中的属性

更新:MongoDB的后续操作获取集合中所有键的名称.

正如Kristina所指出的,可以使用Mongodb的map/reduce来列出集合中的键:

db.things.insert( { type : ['dog', 'cat'] } );
db.things.insert( { egg : ['cat'] } );
db.things.insert( { type :  [] }); 
db.things.insert( { hello : []  } );

mr = db.runCommand({"mapreduce" : "things",
"map" : function() {
    for (var key in this) { emit(key, null); }
},  
"reduce" : function(key, stuff) { 
   return null;
}}) 

db[mr.result].distinct("_id")

//output: [ "_id", "egg", "hello", "type" ]
Run Code Online (Sandbox Code Playgroud)

只要我们想要只获得位于第一级深度的键,这就可以了.但是,它将无法检索位于更深层次的密钥.如果我们添加一条新记录:

db.things.insert({foo: {bar: {baaar: true}}})
Run Code Online (Sandbox Code Playgroud)

我们再次运行上面的map-reduce + distinct片段,我们将得到:

[ …
Run Code Online (Sandbox Code Playgroud)

mapreduce mongodb

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

将两个a5页合并为一个单页a4页(不使用pdfnup)

我正在使用Dompdf从html模板和Pdfnup(Pdfjam的一部分)生成A5 pdf文档,将它们组合成一张漂亮的单张A4纸,这有助于在打印时节省一些纸张:)

# Generate an a5 pdf 
php dompdf.php mytemplate.html -p 'A5' -f a5doc.pdf

# combine two copies of the generated A5 into a single A4 page
pdfnup a5doc.pdf a5doc.pdf --nup '2x1' 
Run Code Online (Sandbox Code Playgroud)

这很好用; 虽然第二步迫使我安装大量的依赖项(即Tex-Latex,pdftex,ecc.)并且会混乱我的生产服务器.我想知道是否有任何方法来组合生成的文件而不实际使用Pdfnup.例如,有没有办法用pdftk这样做?

先感谢您!

pdf-generation ghostscript dompdf pdftk

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

配置 bazel 以使用特定的 JVM 版本构建/测试

我正在评估 Bazel 并尝试对其进行配置,以便它使用与构建时使用的 JDK 不同的 JDK 来构建和测试我的 scala 项目。

这些是来自 my 输出的相关行bazel info

java-home: /nix/store/09x4mnxfzppwq1yjaakrfa6aj3rp7sw8-openjdk-11.0.4-ga/lib/openjdk
java-runtime: OpenJDK Runtime Environment (build 11.0.3-internal+0-adhoc..jdk11u-jdk-11.0.3-ga) by Oracle Corporation
java-vm: OpenJDK 64-Bit Server VM (build 11.0.3-internal+0-adhoc..jdk11u-jdk-11.0.3-ga, mixed mode) by Oracle Corporation
max-heap-size: 8325MB
package_path: %workspace%
release: release 1.1.0- (@non-git)

Run Code Online (Sandbox Code Playgroud)

虽然我的包管理器似乎使用相当新版本的 openjdk 构建了 Bazel,但我想要构建/测试的项目应该使用我安装在下面的 JDK:/usr/lib/jvm/java-8-openjdk.

通过深入研究各种 github 问题,我最终得到了以下解决方案,这使我能够获得绿色构建:

bazel test \
    --define=ABSOLUTE_JAVABASE=/usr/lib/jvm/java-8-openjdk \
    --host_javabase=@bazel_tools//tools/jdk:absolute_javabase \
    --host_java_toolchain=@bazel_tools//tools/jdk:toolchain_vanilla \
    --java_toolchain=@bazel_tools//tools/jdk:toolchain_vanilla \
    --test_timeout=10 --test_output=all //...
Run Code Online (Sandbox Code Playgroud)

但是,我仍然对以下内容感到困惑:

  • 如何在项目基础上永久设置此选项,以便我不必一直提供它们?
  • 我可以这样做吗,intellij Bazel 插件会自动选择它?
  • 上面覆盖的设置是什么,是否有更简单的方法来实现相同的结果?

java bazel

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

Haskell模式匹配出错了

我正在学习一些Haskell,我试图了解模式匹配的工作原理.在这样做的过程中,我编写了一个简单的nth函数.

nth' :: Integer -> [a] -> a
nth' n [] = error "Index out of bound"
nth' n (x:xs) = if n == 0 then x else nth' (n - 1) xs
Run Code Online (Sandbox Code Playgroud)

第一个实现似乎按预期工作.

-- nth' 25 ['a'..'z']
-- 'z'
-- nth' 26 ['a'..'z']
-- *** Exception: Index out of bound
Run Code Online (Sandbox Code Playgroud)

但是,当我重构它用模式匹配替换if语句时,我最终得到"索引越界"异常,我显然不应该这样做.

nth' :: Integer -> [a] -> a
nth' _ [] = error "Index out of bound"
nth' 0 (x:[]) = x
nth' n (_:xs) = nth' …
Run Code Online (Sandbox Code Playgroud)

haskell list pattern-matching

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