小编And*_*rew的帖子

mongoengine - 忽略模式验证的额外字段

我正在尝试查询我的数据库.某些记录当前有额外的字段未包含在我的模型模式中(错误,但我想处理这些情况).当我尝试查询数据库并将记录转换为模式时,我收到以下错误:

FieldDoesNotExist
The field 'X' does not exist on the document 'Y'
Run Code Online (Sandbox Code Playgroud)

由于数据库中的额外字段与架构不同.

有没有办法忽略mongoengine中额外字段的模式验证?

mongodb database-schema mongoengine

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

如何在C中区分静态函数与nm或readelf输出

我试图在可执行文件上处理nm或readelf -s的输出.但是,我无法在输出中区分静态函数.

这是我正在使用的:

test.c的

static int foo() {
    int x = 6;
}

main() {}
Run Code Online (Sandbox Code Playgroud)

other.c

static int foo() {
    int x = 5;
}
Run Code Online (Sandbox Code Playgroud)

我这样编译它们:

gcc -o test test.c other.c
Run Code Online (Sandbox Code Playgroud)

然后运行nm命令以获取所有符号:

nm test
Run Code Online (Sandbox Code Playgroud)

其中出现以下两个符号(对于我的静态函数):

00000000004004ed t foo
0000000000400500 t foo
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以区分特定foo函数出现的文件?或者我需要在编译之前做一些魔术才能让它发挥作用?

我应该补充一点,对于我的用例,我可以访问最终的二进制文件和它使用的目标文件,但我实际上无法自己构建它以确保它有一个符号表.

谢谢!

c static symbol-table nm

8
推荐指数
1
解决办法
2821
查看次数

将远程分支重新引导到主服务器,同时保持远程分支更新

我试图将我的远程分支重新绑定到master上,但是我想让远程分支指向它的提交,只是基于master中的不同点.

这是我的结构:

A - B - C - D  (origin/master)
 \
  R - S - T (origin/develop)
Run Code Online (Sandbox Code Playgroud)

我想要:

A  - B - C - D (origin/master) - R - S - T (origin/develop)
Run Code Online (Sandbox Code Playgroud)

如果没有某种合并,这种变革是否可能?

git rebase git-remote

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

如何将可选参数传递给bash脚本中的另一个命令?

我正在编写一个bash脚本,它接受一些可选参数.我想翻译它们并将它们传递给另一个脚本.但是,我很难优雅地传递可选参数.

这是我设法在伪代码中工作的概述:

灰:

if arg1 in arguments; then
    firstArg="first argument"
fi
if arg2 in arguments; then
    secondArg="second argument"
fi

./b.sh $firstArg $secondArg "default argument"
Run Code Online (Sandbox Code Playgroud)

请注意参数中的空格.

b.sh:

for arg in "$@"
do
    echo $arg
done
Run Code Online (Sandbox Code Playgroud)

我想调用b.sh,可选地带firstArgsecondArg和一个默认参数,如下所示:

./b.sh $firstArg $secondArg "default argument"
Run Code Online (Sandbox Code Playgroud)

这个问题是,如果$firstArg或是$secondArg带空格的字符串,它们将表示为多个参数,输出将类似于:

first
argument
second
argument
default argument
Run Code Online (Sandbox Code Playgroud)

好的,这很容易修复,让我们通过在它周围添加引号来捕获整个参数字符串,如下所示:

./b.sh "$firstArg" "$secondArg" "defaultArg"
Run Code Online (Sandbox Code Playgroud)

问题是,例如,如果firstArg没有设置,它会产生一个空行(因为它将被解释""为参数),所以输出将是这样的:

(blank line here)
second argument
defaultArg
Run Code Online (Sandbox Code Playgroud)

我也尝试构造一个字符串并将其传递给shell脚本,但它似乎也没有那样工作(它将整个字符串解释为参数,即使我将参数与引号分开).

请注意,b.sh使用引用的参数从我的命令行调用工作正常.有没有办法在bash脚本中模仿它的工作原理?

bash shell

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

如何在历史记录的不同位置从多个提交中创建一个git补丁?

我试图从我的分支中的多个提交创建一个git补丁.但是,我需要从任意提交创建它(它们不一定在一个范围内).在我想要创建补丁的提交之间,某些提交更改补丁中的某些文件可能也已更改.

这是我的用例(假设更大的数字=以后的提交日期):

develop HEAD
Commit 5 - Changed a.txt
Commit 4 - Changed a.txt, b.txt, c.txt
Commit 3 - Changed b.txt, c.txt
Commit 2 - Changed a.txt
Commit 1 - Changed a.txt, b.txt, c.txt, d.txt
master HEAD
Run Code Online (Sandbox Code Playgroud)

现在,我希望能够从开发分支为提交1,3和5创建补丁,并将它们应用于主分支.

我环顾四周,我能找到的是能够在一个范围内创建补丁的能力.有没有办法为多个提交创建一个补丁,它们之间的文件可能会发生变化?

git git-rebase git-patch

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

如何在 Visual Studio 中调试单行函数?

Visual Studio中有没有一种方法可以调试只有一行的函数?

就像是:

int foo(int a) { return a + 1; }
Run Code Online (Sandbox Code Playgroud)

看起来当 VS 进入函数时,没有任何数据被正确初始化,并且在检查变量“a”时,我得到了垃圾数据。一旦我进入下一行,数据通常会被初始化,但由于这是一个单行函数,它似乎永远不会这样做,这很烦人(因为我需要重新编译所有内容只是为了检查 a 的值)。

c++ visual-studio visual-studio-2015

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