小编Pat*_*nan的帖子

如何在两个标签之间创建补丁并在它们之间进行多次提交?

我的git在同一个分支中有两个标签.它们之间至少有5-6个提交.如何在两个标签之间创建一个补丁,以便它可以应用于GitHub存储库?

git patch

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

MATLAB中的高效数组预分配

在MATLAB中学习有效编程的第一件事就是避免动态调整数组大小.标准示例如下.

N = 1000;

% Method 0: Bad
clear a
for i=1:N
    a(i) = cos(i);
end

% Method 1: Better
clear a; a = zeros(N,1);
for i=1:N
    a(i) = cos(i)
end
Run Code Online (Sandbox Code Playgroud)

这里的'Bad'变量需要运行O(N^ 2)时间,因为它必须分配一个新数组并在循环的每次迭代中复制旧值.

调试时我自己的首选做法是分配一个数组NaN,更难以与有效值混淆0.

% Method 2: Easier to Debug
clear a; a = NaN(N,1);
for i=1:N
    a(i) = cos(i)
end
Run Code Online (Sandbox Code Playgroud)

然而,人们会天真地认为,一旦我们的代码被调试,我们就会浪费时间分配一个数组,然后用0或填充它NaN.如前所述在这里,你可以按如下也许创建一个未初始化数组

% Method 3 : Even Better?
clear a; a(N,1) = 0;
for i=1:N
    a(i) = cos(i); …
Run Code Online (Sandbox Code Playgroud)

matlab memory-management octave

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

我可以在GitHub上查看自己的拉取请求吗?

我希望能够在GitHub上查看自己的请求请求。

这样做的动机是,一旦其他N-1个维护者批准,就允许N个维护者中的最后一个合并合并请求。这样,任何人都可以推动承诺并使包括我的现有批准无效。

是否有启用此功能的选项?

github

5
推荐指数
0
解决办法
66
查看次数

从OS X命令行调用的ctags不正确

我想使用旺盛的ctags.但是,在OS X 10.9上,默认似乎是调用不同的二进制文件, /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ctags

我可以很容易地从MacPorts获得丰富的ctags sudo port install ctags ,我的路径似乎设置正确,允许使用新的二进制文件/opt/local/bin(我的路径中的第一个位置)

$ which ctags
/opt/local/bin/ctags
Run Code Online (Sandbox Code Playgroud)

但是,执行ctags仍然调用里面的版本XCode.app.我当然可以使用 which ctags 并使用其完整路径调用正确的二进制文件,但我很困惑为什么路径似乎没有像它应该的那样工作.

为什么which在这种情况下实际上没有指定将执行哪个二进制文件的结果?

更新:启动新的bash shell解决了该问题.据推测,可执行文件的名称已缓存在某个地方,但我怎样才能防止将来发生这种情况?

macos bash path ctags osx-mavericks

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

GNU Make:检查并行作业数

我想对(GNU)生成文件添加快速检查,以提醒用户-j/ --jobs(并行生成)的可用性。也就是说,类似

$ make
  TIP: this will build faster if you use use "make -j"
  Building ..

$ make -j 
  Building in parallel ..
Run Code Online (Sandbox Code Playgroud)

执行Makefile时,如何确定并行作业的数量?

这里有个窍门 http://blog.jgc.org/2015/03/gnu-make-insanity-finding-value-of-j.html

以及对GNU的建议更改在此处 https://github.com/esantoro/make/commit/b0334e7f3009dc58dbc8e6e6fdec94711537fb3b

但是也许有些更新和/或更容易的东西。

makefile gnu-make

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

GCC的-Wyybe -ininitialized是否为基于枚举的switch语句生成-O1的虚假警告?

我有一段以下形式的代码:

typedef enum {A=1,B} EnumType;

int foo (EnumType x)
{
  int r;
  switch (x) {
    case A:
      r = 1;
      break;
    case B:
      r = 2;
      break;
      /*
    default:
      r = -1;
      break;
      */
  }
  return r;
}
Run Code Online (Sandbox Code Playgroud)

我用GCC 6.3.0编译并收到警告:

$ gcc --version
gcc (MacPorts gcc6 6.3.0_2) 6.3.0
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ …
Run Code Online (Sandbox Code Playgroud)

c enums gcc compiler-warnings gcc6

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

具有模板参数相关大小的固定大小的 C 数组

我正在使用模板化类,我想包含固定大小的数据数组,其大小取决于模板参数。一个简化的例子是

template<int D>
class Foo
{    
    private:
        int m_array[D*(D+1)];            
};
Run Code Online (Sandbox Code Playgroud)

虽然可变大小的 C 数组通常不受欢迎是可以理解的,但在这里它们可能是合理的,因为D它很小并且很清楚有多少值m_array保存(并且它不能改变大小)。我的问题是

  1. 首先,这实际上是对可变大小数组的合理使用吗?
  2. 这是否总是不好的做法,因为编译器并不普遍支持这些数组?
  3. 有没有干净的替代品?可以使用 astd::vector并在构造函数中设置大小,我认为这会使代码不太清楚。是否最好使用 C++11 的std::array,从而将上面示例中的相关行更改为std::array<int,D*(D+1)> m_array;

c++ c++11

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

如果阵列等级/大小可用,是否有任何理由使用假定大小的数组?

如果我知道传递给函数或子例程的数组的等级和/或大小,是否有任何理由使用假定形状或假定大小的数组?例如,如果我可以替换

function f(a,m,n)
   real,dimension(*),intent(inout) :: a
   ! ...
end function
Run Code Online (Sandbox Code Playgroud)

function f(a,m,n)
    real,dimension(m,n),intent(inout) :: a
    ! ...
end function
Run Code Online (Sandbox Code Playgroud)

是否有任何理由(在Fortran 90或更高版本中)不这样做?

arrays fortran multidimensional-array fortran90

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