小编Sta*_*ked的帖子

如何记录Ruby代码?

在记录ruby代码时是否存在某些代码约定?例如,我有以下代码片段:

require 'open3'

module ProcessUtils

  # Runs a subprocess and applies handlers for stdout and stderr
  # Params:
  # - command: command line string to be executed by the system
  # - outhandler: proc object that takes a pipe object as first and only param (may be nil)
  # - errhandler: proc object that takes a pipe object as first and only param (may be nil)
  def execute_and_handle(command, outhandler, errhandler)
    Open3.popen3(command) do |_, stdout, stderr|
      if (outhandler)
        outhandler.call(stdout)
      end
      if …
Run Code Online (Sandbox Code Playgroud)

ruby

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

使用Wt C++框架的经验?

  • 有没有人认真使用过Wt?
  • 它运作得好吗?
  • 您是否遇到过某些限制?还是有优势?

Wt是一个用于开发Web应用程序的C++库.

请避免讨论C++是否是Web开发的好语言.我只想尝试一下,因为看起来它可能是一件有趣的事情.

c++ wt

72
推荐指数
6
解决办法
2万
查看次数

如何列出命名空间的功能?

我想知道如何列出Clojure命名空间的所有函数.我做了一些研究,但我还没有.我已经找到了如何使用show方法列出Java类的方法:

(show java.awt.Graphics)
Run Code Online (Sandbox Code Playgroud)

要列出Clojure命名空间的功能,我尝试过这样的show方法:

(show 'clojure.contrib.repl-utils)
Run Code Online (Sandbox Code Playgroud)

这表明一些Java类方法,而不是我在寻找像那些docshow.我怎么能得到那些?

clojure

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

错误处理理论?

关于错误处理的大多数建议归结为一些提示和技巧(例如,参见这篇文章).这些提示很有帮助,但我认为他们没有回答所有问题.我觉得我应该根据某种哲学设计我的应用程序,这是一种为构建基础提供坚实基础的思想流派.是否有关于错误处理主题的理论?

这是一些实际问题:

  • 如何判断错误是应该在本地处理还是传播到更高级别的代码?
  • 如何确定记录错误或将其显示为错误消息给用户?
  • 记录应该只在应用程序代码中完成的东西?或者可以从库代码中进行一些日志记录.
  • 如果出现例外情况,您通常应该在哪里捕获它们?在低级别或更高级别的代码?
  • 您是否应该通过所有代码层争取统一的错误处理策略,或者尝试开发一个能够适应各种错误处理策略的系统(以便能够处理来自第三方库的错误).
  • 创建错误代码列表是否有意义?或者这些日子过时了吗?

在许多情况下,常识足以开发出足够好的策略来处理错误情况.但是,我想知道是否有更正式/"学术"的方法?

PS:这是一个普遍的问题,但也欢迎C++特定的答案(C++是我工作的主要编程语言).

c++ error-handling

53
推荐指数
5
解决办法
5334
查看次数

如何在多个客户端之间共享一个vimrc文件?

我有时不是一个非常有秩序的人,我经常发现自己处于丢失旧的完全调整的vimrc文件并且不得不重新开始的情况.或者在不同的客户端上使用不同版本的vimrc文件.由于这个烂摊子对我来说已经失控,我想知道是否有一种管理我的vimrc文件的好方法.

我的第一个举措是将我的_vimrc放在subversion(谷歌代码)上,我打算维护它.其他想法是受欢迎的.

更新

我决定使用以下解决方案:

  • 将上传.vimrc和上传.gvimrc到名为的目录中的在线代码存储库Vim.使用文件名_vimrc,_gvimrc以便它们不被隐藏,并与Windows兼容.

  • 签出目标系统上的存储库

  • 在Mac OSX/Linux上创建符号链接:

    ~ $ ln -s my_repository/Vim/_vimrc $HOME/.vimrc

    ~ $ ln -s my_repository/Vim/_gvimrc $HOME/.gvimrc

  • 在Windows上,我将Vim文件夹签出到Program Files目录中的文件夹上.SVN抱怨已存在的文件,但您可以将其添加到忽略列表中.

vim

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

应用程序级代码分开"include"和"src"文件夹?

这个问题主要涉及Unix/Linux风格的C++开发.我看到许多C++ 将其头文件存储在"include"文件夹中,源文件存储在"src"文件夹中.为了一致性,我在自己的代码中采用了这个.但是我不清楚是否应该对应用程序代码进行此操作.我已经看过一些使用平面目录结构的情况.推荐的方法是什么?

c++ project-management

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

如何在GDB中抛出特定的异常类型时中断?

根据文档,我可以通过使用条件断点来打破特定的异常类型.但是条件的语法对我来说不是很清楚:

condition bnum <expression>
Run Code Online (Sandbox Code Playgroud)

看一下表达式语法,我认为这是我需要的模式:

{type} addr

但是,我不知道我应该为addr论证传递什么.我尝试了以下方法:

(gdb) catch throw
(gdb) condition 1 boost::bad_function_call *
Run Code Online (Sandbox Code Playgroud)

但它不起作用(gdb中断所有异常类型).

有人可以帮忙吗?


更新

我也试过了@ Adam的建议,但它会导致错误信息:

(gdb) catch throw boost::bad_function_call
Junk at end of arguments.
Run Code Online (Sandbox Code Playgroud)

没有boost::名称空间

(gdb) catch throw bad_function_call
Junk at end of arguments.
Run Code Online (Sandbox Code Playgroud)


解决方法

打破bad_function_call作品的构造.

c++ gdb

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

C++ 11 lambda作为成员变量?

可以将lambda定义为类成员吗?

例如,是否可以使用lambda而不是函数对象重写下面的代码示例?

struct Foo {
    std::function<void()> bar;
};
Run Code Online (Sandbox Code Playgroud)

我想知道的原因是因为以下lambda可以作为参数传递:

template<typename Lambda>
void call_lambda(Lambda lambda) // what is the exact type here?
{ 
    lambda();
}

int test_foo() {
    call_lambda([]() { std::cout << "lambda calling" << std::endl; });
}
Run Code Online (Sandbox Code Playgroud)

我想如果lambda可以作为函数参数传递,那么也许它们也可以存储为成员变量.

经过更多的修修补补后,我发现这有效(但这有点毫无意义):

auto say_hello = [](){ std::cout << "Hello"; };
struct Foo {
    typedef decltype(say_hello) Bar;
    Bar bar;
    Foo() : bar(say_hello) {}
};
Run Code Online (Sandbox Code Playgroud)

c++ lambda c++11

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

Clojure中的函数组合?

Clojure可以像Haskell那样实现(g∘f)构造g . f吗?我目前正在使用类似的解决方法(fn [n] (not (zero? n))),这不是很好:)

clojure

35
推荐指数
2
解决办法
7957
查看次数

函数钩在C++中?

"挂钩"是指非侵入性地覆盖函数行为的能力.一些例子:

  • 在函数体之前和/或之后打印日志消息.
  • 将函数体包裹在try catch体中.
  • 测量函数的持续时间
  • 等等...

我在各种编程语言和库中看到了不同的实现:

  • 面向方面编程
  • JavaScript的第一类函数
  • OOP装饰图案
  • WinAPI子类化
  • Ruby的 method_missing
  • SWIG%exception关键字用于包装try/catch块中的所有函数,可以(ab)用于挂钩

我的问题是:

  • IMO这是一个非常有用的功能,我想知道为什么它从未被实现为C++语言功能.是否有任何理由阻止这种情况发生?
  • 在C++程序中实现这一点有哪些推荐的技术或库?

c++

33
推荐指数
2
解决办法
6449
查看次数

标签 统计

c++ ×6

clojure ×2

c++11 ×1

error-handling ×1

gdb ×1

lambda ×1

project-management ×1

ruby ×1

vim ×1

wt ×1