小编tos*_*spo的帖子

数据库中的分层数据:递归查询与闭包表与图数据库

我正在开始一个有一些分层数据的新项目,我正在查看目前存储在数据库中的所有选项.

我正在使用PostgreSQL,它允许递归查询.我还研究了关系数据库的设计模式,比如闭包表,我看了一下图形数据库解决方案,比如neo4j.

我发现很难在这些选项之间做出决定.例如:假设我的RDBMS允许递归查询,那么使用闭包表是否仍然有意义?在可维护性和性能方面,它与图数据库解决方案相比如何?

任何意见/经验将不胜感激!

postgresql rdbms hierarchical-data neo4j transitive-closure-table

11
推荐指数
1
解决办法
3189
查看次数

如何在Vim中为换行符定义例外?

我在Vim中编辑文件是我记录终端命令行以及我所做的描述.我的所有命令行都以$开头,所以我的文件看起来像这样:

This is a description of what this
command does, it can be quite long and
should have line breaks.

$ ./the_command.sh
Run Code Online (Sandbox Code Playgroud)

这些实际上是Viki文件,但我想这个问题应该适用于任何文件类型.我有文件类型检测,文件被正确识别.

现在的问题是:

我希望(硬)换行符插入到所有文本中,除了命令行的实际副本,这可以通过前导$轻松识别.

在Vim中是否可以根据模式定义应用换行规则的异常?我会在viki文件的语法文件中这样做吗?

更新使用Herbert和Jefromi建议的组合,我现在在.vimrc中有这个:

au CursorMovedI *.viki call SetTextWidth()

function! SetTextWidth()
    if getline(".")=~'^\$'
        set textwidth=1000
    else
        set textwidth=80
    endif
endfunction
Run Code Online (Sandbox Code Playgroud)

它完全符合我的要求.多谢你们!

vim file-type syntax-highlighting

5
推荐指数
1
解决办法
341
查看次数

Python pip:安装在特定的非用户目录中并忽略系统范围的包

我想为整个团队设置一个 Python 环境,但我没有服务器的 root 访问权限。

我已经用 Perl 做了类似的事情,并希望能够以类似的方式为 Python 做这件事,但我一直遇到问题。

基本上,我希望能够将软件包安装到系统上的 /SOME/DIR 中,同时忽略该软件包的任何系统范围版本。然而,当我跑步时

pip install --install-option="--prefix=/SOME/DIR/" --up --ignore-installed SOME-MODULE
Run Code Online (Sandbox Code Playgroud)

我不断收到“权限被拒绝”错误,因为 pip 在升级时不断尝试删除系统范围的软件包。这是什么工作

pip install --user --up --ignore-installed SOME-MODULE
Run Code Online (Sandbox Code Playgroud)

它不会尝试接触系统范围的软件包,但会将模块安装到 $HOME/.lib 中的目录中,这不是我需要的。

似乎不可能将 --user 和“--prefix”选项结合起来,所以看起来我可以安装到任意路径,但随后会与已安装的系统范围包或安装到我的主目录发生冲突。它们都不是我所需要的。现在我一直在使用 --user 选项,然后将安装的文件移动到 /SOME/DIR ,这可以工作,但看起来很奇怪。

我错过了什么吗?我已经阅读了 virtualenv,但这听起来也不太像我需要的。感谢您的帮助!

python pip

5
推荐指数
1
解决办法
4891
查看次数

如何在 bsub 命令中处理引号和分号

我正在尝试使用 bsub 向 LSF 调度程序提交命令,但此命令包含一个必须用引号引起来并包含分号的参数值。

这是一个简单的命令来说明我的问题

bsub -o t.o -e t.e echo "foo;bar"
Run Code Online (Sandbox Code Playgroud)

它因“第 8 行:bar:未找到命令”而失败,所以我以为我可以转义分号,但是这

bsub -o t.o -e t.e echo "foo\;bar"
Run Code Online (Sandbox Code Playgroud)

导致同样的错误,这也是

bsub -o t.o -e t.e echo 'foo;bar'
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过将命令写入脚本文件并将其作为 bsub 命令执行来解决它,但在这种情况下,我将测试许多参数,并且只修改 bsub 命令而不是每次编辑一个shell脚本。

谢谢你的帮助!

lsf

5
推荐指数
1
解决办法
801
查看次数

如何找出vim高亮定义的位置?

我正在尝试更改vim中突出显示的组合"折叠".我正在使用颜色方案"koehler",我的折叠线在gvim的灰色背景上显示为青色,这是完全不可读的.我以为我可以在koehler.vim颜色方案文件中编辑负责此组的:highlight命令,但该文件中没有"折叠"的定义.

我确认我有配色方案koehler:

:echo g:colors_name
koehler
Run Code Online (Sandbox Code Playgroud)

然后我用另一篇文章中的命令列出了所有突出显示的组:

:so $VIMRUNTIME/syntax/hitest.vim   

Highlighting groups for various occasions
-----------------------------------------
[...]
Folded  Folded
FoldColumn  FoldColumn
[...]
Run Code Online (Sandbox Code Playgroud)

"折叠"组以我在文件中看到的丑陋颜色显示.我正在编辑的文件是一个"viki"文件,但我对perl脚本完全相同,因此必须在中心位置定义"折叠"的突出显示.我的.vimrc中没有任何:hilight命令.

我怎样才能找出这个组的定义?

vim color-scheme highlighting

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

BASH在调试模式下引用

我在BASH脚本中使用调试模式来跟踪脚本执行的命令.到目前为止,这一切都运行良好,但现在我需要运行一个命令,其中包含一些字符串中的选项,该字符串包含引号,这些引号似乎在调试模式下导致问题.

这是一个简短的例子

#!/bin/bash
job_opts='-q long -M5000000 -R"select[mem>5000] rusage[mem=5000]"'
set -x
bsub $job_opts # .... more options for job here
set +x
Run Code Online (Sandbox Code Playgroud)

此脚本使用bsub命令生成对lsf作业队列的提交,但这无关紧要.在STDERR上,我看到了这个痕迹:

+ bsub -q long -M5000000 '-R"select[mem>5000]' 'rusage[mem=5000]"' 
Job submission rejected.
Run Code Online (Sandbox Code Playgroud)

bsub命令应该是这样的:

+ bsub -q long -M5000000 -R"select[mem>5000]' 'rusage[mem=5000]"
Run Code Online (Sandbox Code Playgroud)

所以我的bsub命令失败了,我也可以看到这是因为它没有看到-R开关,大概是因为整个开关周围有额外的单引号.

我知道BASH在调试模式下在引用的字符串周围放置单引号,但我没想到这会影响正在发出的实际命令,这似乎已经发生了.

我在这里做错了什么,或者有没有办法在BASH调试模式中避免这种额外的引用?以这种方式记录命令是非常方便的,如果因为那些讨厌的引用我不能再这样做,那将是一种耻辱.

谢谢你的帮助!

debugging bash quoting

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