小编Dav*_*man的帖子

有没有办法告诉git只包含某些文件而不是忽略某些文件?

我的程序通常生成巨大的输出文件(~1 GB),我不想备份到git存储库.所以不是能够做到的

git add .
Run Code Online (Sandbox Code Playgroud)

我必须做点什么

git add *.c *.cc *.f *.F *.C *.h *.cu
Run Code Online (Sandbox Code Playgroud)

这有点麻烦......

我相信我可以编写一个快速的perl脚本,将目录内容写入.gitignore,然后根据.gitinclude(或类似名称)文件删除文件,但这似乎有点过于苛刻.有没有更好的办法?

git gitignore

151
推荐指数
5
解决办法
6万
查看次数

Ruby类类型和case语句

有什么区别

case item.class
when MyClass
  # do something here
when Array
  # do something different here
when String
  # do a third thing
end
Run Code Online (Sandbox Code Playgroud)

case item.class
when MyClass.class
  # do something here
when Array.class
  # do something different here
when String.class
  # do a third thing
end
Run Code Online (Sandbox Code Playgroud)

出于某种原因,这些中的第一个有时会起作用而第二个起作用,而其他时候,第二个起作用,而第一个起作用.为什么?哪一个是"正确"的方式呢?

ruby duck-typing case-statement

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

为什么void_t <>检测成语不适用于gcc-4.9?

请考虑以下代码:

#include <iostream>
#include <type_traits>

struct Test { Test& operator++(); };
struct NoIncrement { };

template <typename...> using void_t = void;

template <class, class=void_t<>>
struct has_pre_increment_member : std::false_type { };

template <class T>
struct has_pre_increment_member<T, void_t<decltype( ++std::declval<T&>() )>>
  : public std::true_type { };

int main() {
  std::cout << has_pre_increment_member<Test>::value << " ";
  std::cout << has_pre_increment_member<NoIncrement>::value << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

使用g ++版本5及更高版本(当然还有-std = c ++ 14标志),此代码输出

1 0
Run Code Online (Sandbox Code Playgroud)

正如它应该.但是,使用g ++版本4.9(以及-std = c ++ 14标志),它会输出

1 1
Run Code Online (Sandbox Code Playgroud)

两者都声称使用相同的语言标准,那么这里的问题是什么?

c++ templates g++ sfinae c++14

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

有关ODR使用的另一个铿锵/ gcc差异?

为什么这个代码用GCC(4.9和5+)编译,而不是用clang(3.5-3.9)编译?

void test(const int&) { }
int main() {
  const int x = 42;
  auto f = []{ test(x); };
}
Run Code Online (Sandbox Code Playgroud)

我有一些模糊的想法,认为这种差异与ODR(一种定义规则)的使用有关,但我不太了解这一点,以便弄清楚这里发生了什么.

c++ g++ one-definition-rule c++11 clang++

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

在调用表达式中完美转发Callable参数的目的?

在Scott Meyer的书" Effective Modern C++"(第167页)(印刷版)中,他给出了以下示例:

auto timeFuncInvocation = [](auto&& func, auto&&... params) {
  // start timer;
  std::forward<decltype(func)>(func)(
    std::forward<decltype(params)>(params)...
  );
  // stop timer and record elapsed time;
};
Run Code Online (Sandbox Code Playgroud)

我完全理解完美的转发params,但是当我完全转发func相关时,我不清楚.换句话说,上述优点有以下几点:

auto timeFuncInvocation = [](auto&& func, auto&&... params) {
  // start timer;
  func(
    std::forward<decltype(params)>(params)...
  );
  // stop timer and record elapsed time;
};
Run Code Online (Sandbox Code Playgroud)

c++ lambda perfect-forwarding auto c++14

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

如何使用英特尔编译器编译autotools?

我希望我的代码可以使用英特尔编译器或gcc/g ++进行编译,具体取决于configure参数.这可能吗?我需要在configure.ac和Makefile.am文件中放置什么来实现这一目标?

automake autoconf autotools

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

Ruby的"Open Classes"打破了封装吗?

在Ruby中,程序员可以更改预定义的类.所以一个非常糟糕的程序员可以做类似的事情:

class String
  def ==(other)
    return true
  end
end
Run Code Online (Sandbox Code Playgroud)

显然,几乎没有人会这么愚蠢,但是对于预定义类的更微妙的改变可能会导致已经工作的代码出现问题的想法在我看来违反了封装原则.

四个问题:

  1. 首先,这实际上是否违反了OO封装原则?
  2. 第二,作为一名程序员,我是否有办法在我的代码中保证我正在使用未修改版本的类?
  3. 第三,我是否应该出于任何原因在我的代码中"打开"类?
  4. 最后,在大规模的生产编码环境中如何处理这类事情?换句话说,编程行业的人们是否真的在其他人会使用的代码中执行此操作?或者即使他们不这样做,你如何确保一些插件作者在某个地方没有做到这样会破坏你程序的重要部分呢?

我知道这是一个有点主观的问题,但我真的想知道更广泛的编程社区对这个所谓的"猴子修补"的看法.

ruby encapsulation monkeypatching

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

使用AppleScript访问停靠栏图标右键菜单项

有没有办法让AppleScript访问右键单击停靠栏图标时出现的菜单项?

具体来说,这就是我想要做的事情:

我在MacOS X Snow Leopard上使用谷歌浏览器作为我的网络浏览器.我是键盘快捷键上瘾者,我使用QuickSilver为我能做的任何事情创建键盘快捷键.我做的最常见的事情之一是打开一个新的Web浏览器窗口.但是我经常使用Spaces来分区我正在处理的任务,当我打开带有QuickSilver触发器的Web浏览器或网页时,空格切换到我使用Chrome的最后一个空格并打开一个新标签,这通常是分散了我几个小时的注意力,因为它把我带到了不同的空间,从而完成了不同的任务.我可以通过右键单击Google Chrome图标并单击"新窗口"选项来解决此问题,该选项会在当前空间中打开一个新窗口.但是在AppleScript中,要对谷歌Chrome做任何事情,我要做的第一件事就是激活它,这让我回到原来的问题!任何人都可以想到这个问题的解决方案,AppleScript或其他?这已经成为一个严重的问题.回到我使用Firefox的时候,我通过改变一个首选项来解决这个问题,该首选项说"总是在新窗口中打开弹出链接"或类似的东西,这是一种大锤方法,但它起作用了.我总是可以回到Firefox,但我想我先问我的问题.有想法的人吗?

macos applescript google-chrome window-management

7
推荐指数
3
解决办法
4682
查看次数

首选Python(或任何语言,真正的)样式:if if返回时应该使用吗?

很简单的问题:

特别是在Python中(因为Python实际上具有在PEP 8中指定的"强烈推荐"样式指南,但实际上这适用于任何语言),具有if始终返回的子句的函数是否应该在子句中具有替代代码else?换句话说,func_style_one()func_style_two()在下面的代码段是(明显)完全等效:

def func_style_one():
    if some_conditional_function():
        do_something()
        return something()
    else:
        do_something_else()
        return something_else()

def func_style_two():
    if some_conditional_function():
        do_something()
        return something()
    do_something_else()
    return something_else()
Run Code Online (Sandbox Code Playgroud)

显然,最好和最具可读性的风格取决于具体情况,而且意见会有所不同,哪个更好,但我问的是核心Python社区特别偏好哪个.(例如,标准库中哪些更常用,所有其他条件相同?)

python coding-style

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

将自定义过滤器定义嵌入到jinja2模板中?

我正在编写一些Jinja2模板,我希望能够在切向相关项目中尽可能轻松地重用这些模板.我有一套自定义便利过滤器,我希望模板随身携带.是否有用于将过滤器定义嵌入模板本身的Jinja2语法?或者是一种将任何类型的纯Python函数嵌入到Jinja2模板中的机制,该模板可以作用于传递给模板的变量?我曾经使用mako,并且在那里做这件事是微不足道的,但是由于缺乏自定义语法,在mako中模板化LaTeX是痛苦的,所以我不得不进行切换.

python customization plugins templates jinja2

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