小编Sta*_*ked的帖子

如何为Ruby应用程序创建REST API?

我想知道如何使用REST API提供Ruby应用程序.我可以基于Ruby的TCPServer API编写代码,但这看起来有点低级.你认为这是一个很好的解决方案吗?或者你推荐一种更好的方法吗?

ruby rest

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

复制条款的条件?

我想验证以下优化是否按预期工作:

  • RVO
  • 命名为RVO
  • 按值传递参数时复制elision

所以我写了这个小程序:

#include <algorithm>
#include <cstddef>
#include <iostream>
#include <vector>

struct Foo {
    Foo(std::size_t length, char value) : data(length, value) { }

    Foo(const Foo & rhs) : data(rhs.data) { std::cout << "*** COPY ***" << std::endl; }

    Foo & operator= (Foo rhs) {
        std::cout << "*** ASSIGNMENT ***" << std::endl;
        std::swap(data, rhs.data); // probably expensive, ignore this please
        return *this;
    }

    ~Foo() { }

    std::vector<char> data;
};

Foo TestRVO() { return Foo(512, 'r'); }

Foo TestNamedRVO() { …
Run Code Online (Sandbox Code Playgroud)

c++

10
推荐指数
2
解决办法
1121
查看次数

UB是否可以访问"填充"字节?

如果我有这样一个对象:

struct {
    uint32_t n;
    uint8_t c;
} blob {};
Run Code Online (Sandbox Code Playgroud)

然后将有3'填充'字节.

UB是否可以访问填充的字节?例如:

uint8_t * data = reinterpret_cast<uint8_t*>(&blob);
std::cout << data[4] << data[5] << data[6] << data[7];
Run Code Online (Sandbox Code Playgroud)

我首先假设这可能是UB,但如果这是真的那么memcpy也将是UB:

memcpy(buf, &blob, sizeof(blob));
Run Code Online (Sandbox Code Playgroud)

我的具体问题是:

  • UB是否可以访问填充字节?
  • 如果不是,那么这是否也意味着定义了值?

c++ alignment language-lawyer

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

多个VirtualBox机器之间的网络链接

我正在尝试一个会议应用程序(BigBlueButton).

为此,我创建了一个充当应用程序服务器的Ubuntu虚拟机.在这台机器上,我可以通过导航到应用程序URL来测试应用程序(例如http://10.0.2.15).

我还创建了第二个应该充当客户端的虚拟机.在这台机器上,我希望能够导航到服务器,但这似乎不起作用.如果我尝试使用app-url从客户端导航到服务器,我什么也得不到,然后是超时.

为了在两台机器之间建立网络,我尝试了以下解决方案:

  • 在每个虚拟机上创建第二个网络适配器并连接到名为"vboxnet0"的"仅限主机的适配器"
  • 在每台计算机上创建第二个适配器并连接到名为"intnet"的"内部网络".

我认为上述任何一种选择都是一个很好的解决方案,但它们都不起作用.

有人可以帮我从这里出去吗?

仅供参考我使用MacOS X作为主机系统.

编辑:我通过克隆第一台机器(使用克隆实用程序)创建了我的第二台机器.也许这会导致两台机器相同,这使得它们在网络上无法区分.这会导致问题吗?(作为桌面开发人员,在涉及到IT时,我有点像菜鸟)

networking virtualbox

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

如何部署依赖于动态库的应用程序?

我正在开发一个使用GStreamer库的应用程序.为了便于部署,我想收集本地捆绑中的所有GStreamer库.为此我写了一个小脚本,执行以下操作:

  • 递归遍历依赖项(使用otool -L)
  • 将所有依赖项复制到本地目录
  • 制作相对于@executable_path的所有依赖路径(使用install_name_tool)

(如果您有兴趣,可以查看Ruby脚本.)

但是,我现在看到gst_init呼叫上的运行时错误:

(process:22843): GLib-GObject-CRITICAL **: gtype.c:2458: initialization assertion failed, use g_type_init() prior to this function

(process:22843): GLib-CRITICAL **: g_once_init_leave: assertion `initialization_value != 0' failed
Run Code Online (Sandbox Code Playgroud)

只有在我使用本地化库时才会出现这些错误.


Are there certain 'common pitfalls' when it comes to using install_name_tool? Does anyone have an idea what I could be doing wrong? If you need to know certain details then feel free to ask.

Update
I changed a few things:

  • For the …

c++ macos dynamic-linking install-name-tool

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

GCC何时定义NDEBUG?

可能重复:
-DNDEBUG通常来自哪里?

我在我的代码中使用断言,但我不知道它们是否会触发,因为我不知道是否定义了NDEBUG.我是否应该在编译期间明确指定-DNDEBUG?

c++ gcc

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

Linux上的Windows交叉编译提升

我正在尝试在Linux机器上创建mingw二进制文件以进行提升.mingw编译器在我的系统中作为/ usr/bin/i586-mingw32msvc-g ++存在,我已经能够创建一个简单的HelloWorld.exe应用程序.

以下是我的行动的确切列表:

$ tar xvf boost_1_46_1.tar.gz
$ cd boost_1_46_1/
$ echo "using gcc : 4.4.4: i586-mingw32msvc-g++ ;" > user-config.jam
$ ./bootstrap.sh
$ ./bjam toolset=gcc target-os=windows
Run Code Online (Sandbox Code Playgroud)

结果是这样的:

Building the Boost C++ Libraries.


...found 83 targets...
...updating 9 targets...
common.mkdir bin.v2
common.mkdir bin.v2/libs
common.mkdir bin.v2/libs/regex
common.mkdir bin.v2/libs/regex/build
common.mkdir bin.v2/libs/regex/build/gcc-mingw-4.4.4
common.mkdir bin.v2/libs/regex/build/gcc-mingw-4.4.4/debug
common.mkdir bin.v2/libs/regex/build/gcc-mingw-4.4.4/debug/target-os-windows
gcc.compile.c++ bin.v2/libs/regex/build/gcc-mingw-4.4.4/debug/target-os-windows/has_icu_test.o
In file included from /usr/include/unicode/pwin32.h:123,
                 from /usr/include/unicode/umachine.h:47,
                 from /usr/include/unicode/uversion.h:47,
                 from libs/regex/build/has_icu_test.cpp:12:
/usr/include/inttypes.h:290: warning: ISO C++ 1998 does not support ‘long long’
/usr/include/inttypes.h:291: warning: ISO C++ …
Run Code Online (Sandbox Code Playgroud)

c++ mingw cross-compiling

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

Lisp(Clojure)和Tcl如何在抽象和元编程能力方面进行比较?

两者似乎都有助于构建可扩展的API和代码生成.

它们之间的主要区别是什么?

你认为他们的优点,缺点是什么......

lisp tcl clojure

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

依赖于ADL for std :: begin()和std :: end()?

迭代标准容器时,您认为省略std::前缀并依赖ADL查找定义是个好主意吗?例:

std::vector<int> vec = get_vec();
// range-based for loop would be preferred here, but just for the sake of example
for (auto it = begin(vec), end = end(vec); it != end; ++it) { /*...*/ }
Run Code Online (Sandbox Code Playgroud)

有没有理由这样做?

c++

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

在空和非空结构中明确默认的构造函数

仅当我将-DA=1标志传递给编译器时,以下程序才会编译:

#include <iostream>
#include <vector>
#include <algorithm>

struct element {
    element() = default;

    element(element&&) = default;
    element& operator=(element&&) = default;

    element(const element&) = delete;
    element& operator=(const element&) = delete;

    #if A
    std::vector<int> v;
    #endif
};

int main() {
    std::vector<element> source(10), destination;
    std::move(std::begin(source), std::end(source), std::back_inserter(destination));
}
Run Code Online (Sandbox Code Playgroud)

如果-DA=0传递,则编译失败并显示错误:

stl_algobase.h:373:4: error: static assertion failed: type is not assignable
Run Code Online (Sandbox Code Playgroud)

看看Coliru吧.

使用GCC 4.9或Clang 3.4时失败.

成员变量的存在是否会影响显式默认构造函数的行为?

更新

我正在为GCC和Clang使用stdlibc ++.使用Clang 3.4和libc ++时代码会编译.

c++

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