小编Sam*_*adi的帖子

Pandoc Markdown到PDF图像位置

使用pandoc将Markdown文档转换为PDF时,我的图像不会放在我将它们放在源代码中的相同位置.我相信这是由于通过LaTeX的转换,但我不确定如何在Markdown源中解决这个问题.

如果我使用带有几段示例文本的占位符图像并策略性地将图像放在源代码中,它会变得太大而无法放在我放置它的位置的页面上,因此LaTeX布局引擎将它放在下一页.但是,我宁愿这没有发生,因为这意味着图像不是我期望的地方,更难以引用.

如果有必要,我可以包含一个示例,但重现并且源需要有点广泛来填充整个页面.

pdf markdown pandoc

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

Nim`Warning:re已被弃用`,反而使用什么?

我正在编写一个使用正则表达式的Nim程序,它工作正常,但是当我编译时,我收到此错误消息:

Warning: re is deprecated [Deprecated]
Run Code Online (Sandbox Code Playgroud)

我查看了该re模块的文档,但没有提到创建正则表达式的新方法.

我的问题是,如果 re"regex"不推荐使用构造函数,我应该使用什么?

regex deprecated deprecation-warning nim-lang

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

可迭代解包的默认值

我经常对Python的可迭代解包缺乏灵活性感到沮丧.

请看以下示例:

a, b = range(2)
Run Code Online (Sandbox Code Playgroud)

工作良好.正如预期的那样a包含0b包含1.现在让我们试试这个:

a, b = range(1)
Run Code Online (Sandbox Code Playgroud)

现在,我们得到一个ValueError:

ValueError: not enough values to unpack (expected 2, got 1)
Run Code Online (Sandbox Code Playgroud)

不理想,当期望的结果是0aNoneb.

有很多黑客可以解决这个问题.我见过的最优雅的是:

a, *b = function_with_variable_number_of_return_values()
b = b[0] if b else None
Run Code Online (Sandbox Code Playgroud)

不漂亮,可能会让Python新手感到困惑.

那么最恐怖的方式是什么?将返回值存储在变量中并使用if块?该*varname黑客?别的什么?

python python-3.x iterable-unpacking

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

在编译时运行Nim代码

所以我知道如果我定义一个constNim会评估我在编译时分配给它的任何东西,所以我可以这样做:

proc compileTimeCode: bool =
  # Put code here
  return true

const _ = compileTimeCode()
Run Code Online (Sandbox Code Playgroud)

然后我可以把我的代码放在compileTimeCodeproc中.

这可行,但似乎凌乱,过于复杂和不直观.它还需要更多的打字,并且很难干掉.

dry compile-time nim-lang

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

安全地解压缩str.split的结果

我经常对Python的可迭代解包缺乏灵活性感到沮丧.请看以下示例:

a, b = "This is a string".split(" ", 1)
Run Code Online (Sandbox Code Playgroud)

工作良好.正如预期的那样a包含"This"b包含"is a string".现在让我们试试这个:

a, b = "Thisisastring".split(" ", 1)
Run Code Online (Sandbox Code Playgroud)

现在,我们得到一个ValueError:

ValueError: not enough values to unpack (expected 2, got 1)
Run Code Online (Sandbox Code Playgroud)

不理想,当期望的结果是"Thisisastring"aNone或更好,但""b.

有很多黑客可以解决这个问题.我见过的最优雅的是:

a, *b = mystr.split(" ", 1)
b = b[0] if b else ""
Run Code Online (Sandbox Code Playgroud)

不漂亮,并且对Python新手来说非常困惑.

那么最恐怖的方式是什么?将返回值存储在变量中并使用if块?该*varname黑客?别的什么?

python python-3.x iterable-unpacking

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

Cython布尔numpy数组

我有一个numpy的布尔数组:

myarr = np.array([[False, True], [True, False]])
Run Code Online (Sandbox Code Playgroud)

如果我尝试使用它初始化Cython MemoryView,如下所示:

cdef bint[:,:] mymem = myarr
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

ValueError: Does not understand character buffer dtype format string ('?')
Run Code Online (Sandbox Code Playgroud)

如果我改为这样做,则可以正常工作:

cdef np.int_t[:,:] mymem = np.int_(myarr)
Run Code Online (Sandbox Code Playgroud)

如何使用Cython MemoryViews存储布尔型numpy数组?

python numpy cython memoryview typed-memory-views

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

是否定义了 _Bool 递增?

A _Bool is defined by the C standard to be an unsigned type containing either 0 or 1. If a value of 1 of type _Bool is incremented, there are, as far as I can see, two options:

  • The value wraps around from 1 to 0
  • The value is incremented to 2, which is nonzero, and hence is changed into 1 when converted back to a _Bool

On GCC and Clang on my system, the behaviour seems to be the …

c boolean increment undefined-behavior

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

sed 对变量而不是标准输入或文件进行操作

有很多的问题询问有关如何在SED模式中使用一个变量,例如:sed "s/re/$VAR/" file,但我想执行替换的变量。到目前为止,我一直echo在这样做:

echo "$VAR" | sed 's/re/new/'
Run Code Online (Sandbox Code Playgroud)

但是,虽然这有效,但看起来很混乱。在 bash 或 zsh 中是否有更简单/更优雅的方法来做到这一点?

regex variables shell sed

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

C++独立可执行文件

我正在用C++编写一个程序,需要一个文件在当前目录中,但我想将它作为一个可执行文件分发.Love2D为您创建.love文件的游戏使用分发方法,并用于cat组合love2d二进制文件和.love文件(例如cat love2d awesomegame.love > awesomegame).如何编写我的程序,以便它可以使用自身末尾的信息,并将其提取到文件中.

---更新---

感谢来自@Dawid的所有精彩帮助,我的工作方式比我最初建议的更清晰(如果你想这样做,请参阅我的回答).这是我的最终源代码:

#include <fstream>
#include "ncat.h"

using namespace std;

int main () {
    ofstream ofile("ncat.exe", ios_base::out | ios_base::binary);
    for (unsigned long i = 0 ; i < ncat_exe_len; ++i) ofile << ncat_exe[i];
    ofile.close();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是我正在使用的(二进制)文件:https://www.dropbox.com/s/21wps8usaqgthah/ncat.exe?dl = 0

c++ linux file

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

你应该在 C 程序结束时释放吗

假设我有一个如下所示的程序

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
  if (argc < 2) return 1;
  long buflen = atol(argv[1]);
  char *buf = malloc(buflen);
  fread(buf, 1, buflen, stdin);

  // Do stuff with buf

  free(buf);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

此类程序通常具有更复杂的清理代码,通常包括对错误处理的多次调用free,有时包括标签甚至清理函数。

我的问题是:free(buf)最后真的有必要吗?我的理解是,当程序退出时,内核会自动清理未释放的内存,但如果是这样的话,为什么在代码末尾放置 free 是一种常见的模式?

BusyBox 提供了一个编译选项来禁用在执行结束时调用 free。如果这不是问题,那么为什么有人会禁用该选项呢?纯粹是因为像 Valgrind 这样的程序在分配的内存未释放时检测到内存泄漏吗?

c memory-management

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