小编Ste*_*art的帖子

避免 SVN 递归检查外部

我有一个超级项目,其中svn:externals还有其他几个项目。他们,反过来又svn:external是他们自己的依赖者。我的问题之一是我的依赖项通常依赖于相同的svn:external(公共库),这导致大量重复的签出和构建。

当我签出或更新我的主项目时,我想签出我的直接外部,但忽略它们的外部。我想我可以在 svn 属性中设置它,但我还没有弄清楚如何设置。我会想象这样的事情:

$ svn propset svn:externals -r25 http://svn.example.com/foo/trunk foo --ignore-externals
Subcommand 'propset' doesn't accept option '--ignore-externals'
Type 'svn help propset' for usage.
Run Code Online (Sandbox Code Playgroud)

还有其他方法可以避免检查外部的外部吗? --depth并没有真正起作用,因为我的父存储库或中间存储库中的文件夹结构的深度是任意的,因此您无法使用该命令可靠地过滤掉外部内容。

svn svn-externals

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

使用 Boost Hana 反射 C 风格的数组

BOOST_HANA_DEFINE_STRUCT用内省声明结构时是一个很棒的宏。如果我有这样的结构:

struct Person {
  std::string name;
  std::string last_name;
  int age;
};
Run Code Online (Sandbox Code Playgroud)

我们可以通过像这样重新定义它来添加自省:

struct Person {
  BOOST_HANA_DEFINE_STRUCT(Person,
    (std::string, name),
    (std::string, last_name),
    (int, age)
  );
};
Run Code Online (Sandbox Code Playgroud)

但是如果我们有这样的结构怎么办:

struct Person {
  float eye_dioptre[2];
};
Run Code Online (Sandbox Code Playgroud)

我将如何使用BOOST_HANA_DEFINE_STRUCT语法来反映 C 风格的数组?我试过了:

struct Person {
  BOOST_HANA_DEFINE_STRUCT(Person, 
    (float[2], eye_dioptre),   // error: expected unqualified-id before ‘[’ token
    (float, eye_dioptre[2])    // error: template argument 2 is invalid  BOOST_HANA_DEFINE_STRUCT(structure_name, __VA_ARGS__ );                    
  );
};
Run Code Online (Sandbox Code Playgroud)

上面的两个选项都会导致编译器错误。我期待的答案是“你应该使用 c++ 风格的数组”。可以这样做:

struct Person {
  BOOST_HANA_DEFINE_STRUCT(Person,
    (std::array<float,2>, eye_dioptre)
  );
Run Code Online (Sandbox Code Playgroud)

但是有没有办法用 C 风格的数组来做到这一点?};

c++ arrays reflection boost

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

如何将boost :: asio :: tcp :: io_stream附加到我的io_service?

我习惯使用boost::asio::ip::tcp::sockets来构建它们io_service.这很有用,因为我有一个单独io_service的所有套接字,这些套接字共享一个线程池.

现在,我正在尝试使用a boost::asio::ip::tcp::io_stream,我希望它在同一个线程池中执行所有异步工作.但是,似乎不可能用外部构造一个.底层套接字确实使用内部初始化的io_service.有我的方式继续使用我的集中管理有?tcp::io_streamio_serviceio_servicetcp::io_stream

我正在使用boost版本1.62.

c++ boost asio

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

安装时不应用CMake WORLD_WRITE权限

CMakeLists.txt通过执行以下操作从a安装一个空目录:

file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/var/log)

install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/var
        DESTINATION ${CMAKE_INSTALL_PREFIX}
        DIRECTORY_PERMISSIONS
          OWNER_WRITE OWNER_READ OWNER_EXECUTE
          GROUP_WRITE GROUP_READ GROUP_EXECUTE
          WORLD_WRITE WORLD_READ WORLD_EXECUTE
        COMPONENT runtime
       )
Run Code Online (Sandbox Code Playgroud)

我希望看到这些权限:

/opt/myapp $ ls -l
drwxrwxrwx root root var
drwxrwxrwx root root var/log
Run Code Online (Sandbox Code Playgroud)

但相反,我看到:

/opt/myapp $ ls -l
drwxr-xr-x root root var
drwxrwxrwx root root var/log
Run Code Online (Sandbox Code Playgroud)

DIRECTORY_PERMISSIONS WORLD_WRITEGROUP_WRITE适用于var/log但不适用var.目前我需要sudo chmod 777 var让我的程序运行.我怎么能纠正这个?

install cmake

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

金字塔服务器上的 CORS

我正在将 Web api 应用程序从 python 的 Flask 迁移到 Python 的金字塔,但是当我向服务器发送POST或方法时遇到问题(工作正常):DELETEGET

跨源请求被阻止:同源策略不允许读取http://localhost:5002/api/index/1b5_1-auto-20180925_113130.db处的远程资源。(原因:CORS 预检通道未成功)。

(损坏的)金字塔应用程序如下所示:

from wsgiref.simple_server import make_server
from pyramid.config import Configurator
from pyramid.response import Response
from pyramid.events import NewRequest
from resultindex import ResultIndex 

def add_cors_headers_response_callback(event):
    def cors_headers(request, response):
        response.headers.update({
        'Access-Control-Allow-Origin': '*',
        'Access-Control-Allow-Methods': 'POST,GET,DELETE,PUT,OPTIONS',
        'Access-Control-Allow-Headers': 'Origin, Content-Type, Accept, Authorization',
        'Access-Control-Allow-Credentials': 'true',
        'Access-Control-Max-Age': '1728000',
        })
    event.request.add_response_callback(cors_headers)

def delete_result_from_index(request):
    file = request.matchdict['file']
    index = ResultIndex(rootdir)
    return index.DeleteResult(file)

if __name__ == '__main__':

    config = Configurator()
    config.add_subscriber(add_cors_headers_response_callback, NewRequest)

    config.add_route(name='api-index-file-d', …
Run Code Online (Sandbox Code Playgroud)

python cors pyramid

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

按位转换uint32_t以在C/C++中浮动

我从网络接收缓冲区,该缓冲区被转换为32位字的数组.我有一个单词被我的界面文档定义为ieee float.我需要从缓冲区中提取这个单词.在不调用转换的情况下从一种类型转换为另一种类型很困难.这些位已经符合ieee浮点标准,我不想重新排列任何位.

我的第一次尝试是将地址转换uint32_t为a void*,然后将其转换void*为a float*,然后取消引用为float:

float ieee_float(uint32_t f)
{
    return *((float*)((void*)(&f)));
}
Run Code Online (Sandbox Code Playgroud)

错误:解除引用类型惩罚指针将破坏严格别名规则[-Werror = strict-aliasing]

我的第二次尝试是这样的:

float ieee_float(uint32_t f)
{
    union int_float{
        uint32_t i;
        float f;
    } tofloat;

    tofloat.i = f;
    return tofloat.f;
}
Run Code Online (Sandbox Code Playgroud)

然而,街上的一句话是,工会完全不安全.从最近没有编写的联合成员读取它是未定义的行为.

所以我尝试了更多的C++方法:

float ieee_float(uint32_t f)
{
  return *reinterpret_cast<float*>(&f);
}
Run Code Online (Sandbox Code Playgroud)

错误:解除引用类型惩罚指针将破坏严格别名规则[-Werror = strict-aliasing]

我的下一个想法是"搞砸它.为什么我要处理指针呢?" 并尝试过:

float ieee_float(uint32_t f)
{
  return reinterpret_cast<float>(f);
}
Run Code Online (Sandbox Code Playgroud)

错误:从'uint32_t {aka unsigned int}'类型无效转换为'float'类型

有没有办法在不触发警告/错误的情况下进行转换?我用g ++编译-Wall -Werror.我宁愿不接触编译器设置.

我标记了C,因为c解决方案是可以接受的.

c++

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

Rust String 与 &amp;str 迭代器

我正在尝试编写一个接受令牌列表的函数。但是我遇到了问题,使其足以处理两个非常相似的调用:

let s = String::from("-abc -d --echo");

parse( s.split_ascii_whitespace() );
parse( std::env::args() );
Run Code Online (Sandbox Code Playgroud)

有没有办法让我编写一个函数签名来parse接受这两种方法?

我的解决方案现在需要复制函数体:

fn main() {
    let s = String::from("-abc -d --echo");

    parse_args( s.split_ascii_whitespace() );
    parse_env( std::env::args() );
}

fn parse_env<I: Iterator<Item=String>>(mut it: I) {
    loop {
        match it.next() {
            None => return,
            Some(s) => println!("{}",s),
        }
    }
}

fn parse_args<'a, I: Iterator<Item=&'a str>>(mut it: I) {
    loop {
        match it.next() {
            None …
Run Code Online (Sandbox Code Playgroud)

iterator traits rust

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

Python条件打印格式

我有这样的功能:

def PrintXY(x,y):
    print('{:<10,.3g} {:<10,.3g}'.format(x,y) )
Run Code Online (Sandbox Code Playgroud)

当我运行它时,它是完美的:

>>> x = 1/3
>>> y = 5/3
>>> PrintXY(x,y)
0.333      1.67
Run Code Online (Sandbox Code Playgroud)

但是,让我们说x并且y不保证存在:

>>> PrintXY(x, None)
unsupported format string passed to NoneType.__format__
Run Code Online (Sandbox Code Playgroud)

在那种情况下,我想打印什么,只是空的空间.我试过了:

def PrintXY(x,y):
    if y is None: 
        y = ''
    print('{:<10,.3g} {:<10,.3g}'.format(x,y) )
Run Code Online (Sandbox Code Playgroud)

但是这给了:

ValueError: Unknown format code 'g' for object of type 'str'
Run Code Online (Sandbox Code Playgroud)

如果数字不存在,如何打印空格,如果数字存在,则如何正确格式化?我宁愿不打印0或-9999来表示错误.

python

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

如何调用成员的右值方法?

我正在编写一个类 ( ),它封装了一个恰巧具有右值函数的Interface类 ( )(请参阅 参考资料)。ImplImpl::Close

\n
class Impl\n{\npublic:\n    /// Called from Dtor.\n    /// You can't reuse this after it has been closed\n    /// Therefore && added so need temporary / rvalue ref.\n    void Close(int why) && noexcept { /*...*/ }\n};\n\n\n\nclass Interface\n{\npublic:\n    void Close(int why) && noexcept { _i.Close(why); }\nprivate:\n    Impl _i;\n};\n
Run Code Online (Sandbox Code Playgroud)\n

林天给我:

\n
\n

错误:成员函数“Close”的“this”参数是左值,但函数具有右值引用限定符

\n
\n

g++ 给了我:

\n
main.cpp: In member function \xe2\x80\x98void Interface::Close(int) &&\xe2\x80\x99:\nmain.cpp:15:51: error: passing \xe2\x80\x98Impl\xe2\x80\x99 as \xe2\x80\x98this\xe2\x80\x99 argument discards …
Run Code Online (Sandbox Code Playgroud)

c++ rvalue

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

循环使用宏

我需要做一个循环,我将这个简单的反射示例转换为:

std::string mystring[3] = {{"mystring[0]"},{"mystring[1]"},{"mystring[2]"}};
Run Code Online (Sandbox Code Playgroud)

为更长的阵列更加可管理的形式.解决方案听起来像我应该使用带循环的宏或递归.但是,宏不支持循环或递归!

如何创建一个宏来随意处理这个问题?

#define NAME_OBJ(type, name, size)
Run Code Online (Sandbox Code Playgroud)

c++ macros

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

标签 统计

c++ ×5

boost ×2

python ×2

arrays ×1

asio ×1

cmake ×1

cors ×1

install ×1

iterator ×1

macros ×1

pyramid ×1

reflection ×1

rust ×1

rvalue ×1

svn ×1

svn-externals ×1

traits ×1