小编bet*_*ido的帖子

使用存储在另一个数据表中的值规范化数据表中的值

我试图dt使用存储在另一个数据表(dt.base)中的基线值来规范化数据表()中的值.接下来,您将获得这些表的示例内容以及生成该示例的代码:

> dt
   Bench Config Part Power
1:     A     10    P   171
2:     A     10    Q   125
3:     A    100    P   139
4:     A    100    Q   109
5:     B     10    P   196
6:     B     10    Q   101
7:     B    100    P   157
8:     B    100    Q   176
> dt.base
   Bench Config Part Power
1:     A   Base    P   187
2:     A   Base    Q   104
3:     B   Base    P   166
4:     B   Base    Q   188
Run Code Online (Sandbox Code Playgroud)

示例生成代码:

set.seed(13)

dt …
Run Code Online (Sandbox Code Playgroud)

r data.table

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

使用嵌套因子删除条形图中的每个面板未使用因子

前段时间我问了一个关于如何删除条形图中未使用因子的问题,我得到了一个有用的解决方案,感谢@Aaron.现在,我面临着一个非常类似的问题,但我过去使用的解决方案对于这种情况并不适用.

这是重现我正在使用的数据框的代码:

set.seed(17)
df <- data.frame(BENCH = sprintf('bench-%s', sort(rep(letters[1:8], 4))),
                 CLASS.CFG = sprintf('class-%s',
                     c(rep('C', 4), rep('A', 4), rep('B', 8),
                       rep('C', 8), rep('A', 4), rep('D', 4))),
                 EXEC.CFG = rep(c('st', 'st', 'dyn', 'dyn'), 8),
                 METRIC = rep(c('ipc', 'pwr'), 16),
                 VALUE = runif(32))
Run Code Online (Sandbox Code Playgroud)

绘制此数据框的简单命令是:

library(lattice)
barchart(VALUE ~ BENCH | EXEC.CFG + CLASS.CFG, df, groups = METRIC,
         scales = list(x = list(rot = 45, relation = 'free')),
         auto.key = list(columns = 2))
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我正在为每个BENCH绘制VALUE约束到EXEC.CFG和CLASS.CFG的每个可能组合(这就是我对嵌套因子的意思),并使用METRIC创建组.

这是我获得的结果:

plot_with_gaps

即使我对X轴使用"自由"刻度,在绘图中一些条之间也存在一些(不必要的)间隙(例如,在bench-b和之间bench-g).

我尝试以下列方式应用我之前提出的问题的解决方案:

pl1 <- …
Run Code Online (Sandbox Code Playgroud)

plot r lattice

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

当OOM杀手杀死一个进程时返回代码

我正在使用SUSE SLES 11在POWER7系统上运行多程序工作负载(基于SPEC CPU2006基准测试).

有时,工作负载中的每个应用程序都会消耗大量内存,并且总内存占用量超过系统中安装的可用内存(32 GB).

我禁用了交换,否则测量可能会对使用交换的进程产生严重影响.我知道通过这样做,内核,通过OOM杀手,可能会杀死一些进程.那很好.问题是我希望内核杀死的线程退出时出现错误(例如,进程被信号终止).

我有一个框架,启动所有进程,然后等待使用它们

waitpid(pid, &status, 0);
Run Code Online (Sandbox Code Playgroud)

即使一个线程被OOM杀手杀死(我知道因为我在屏幕上和/ var/log/messages中得到了一条消息),所以

WIFEXITED(status);
Run Code Online (Sandbox Code Playgroud)

返回一个,然后是通话

WEXITSTATUS(status);
Run Code Online (Sandbox Code Playgroud)

返回零.因此,我无法区分进程何时正确完成以及何时被OOM杀手杀死.

我做错了吗?你知道如何检测一个进程被OOM杀手杀死的时间.

非常感谢你,

胜利者

PS:我发现这篇文章提出了几乎相同的问题.但是,由于这是一个老帖子,答案不尽如人意,我决定发一个新问题.

linux out-of-memory return-code waitpid

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

typedef结构指针定义

我是C中的新手,并且在所有指针内容方面都存在一些问题.

我写了这段代码:

typedef struct edgeitem
{
    double          weight;
}EDGE_ITEM, *pEDGE_ITEM; //also declaration of a pointer

/************ edge that includes a pointer to the edge item, next and prev ******/
typedef struct edge
{
    pEDGE_ITEM  *edge_item;  
    pEDGE       *next;      //pointer to next edge
    pEDGE       *prev;      //pointer to prev edge
}EDGE, *pEDGE;
Run Code Online (Sandbox Code Playgroud)

我这样得到一个错误,只是无法理解为什么.

我知道,edgeitem并且edge是标签,我可以使用struct edge *next,但我声明了指针那为什么我不能用呢?

如果我有指针,我需要使用*吗?

pEDGE_ITEM *edge_item
//or
pEDGE_ITEM edge_item
Run Code Online (Sandbox Code Playgroud)

我不明白,这是一个指针,为什么我要添加*?

最后一个问题是:如果我使用上述内容,有什么区别:

*EDGE  next
EDGE  *next
Run Code Online (Sandbox Code Playgroud)

最后一个:如果我要补充:

typedef struct edge_list
{
    EDGE        *head;
}EDGE_LIST;
Run Code Online (Sandbox Code Playgroud)

是这样的: …

c struct pointers typedef declaration

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

unique_ptr的解除引用运算符在Eclipse中不起作用

按照这篇文章中的步骤后,我设法让Eclipse(Indigo)识别unique_ptr(和其他C++ 11新东西).问题是,operator->对于unique_ptr似乎并没有在Eclipse的支持.这里有一个例子:

class Foo { void bar() { /* ... */ } };

std::unique_ptr<Foo> foo;
(*foo).bar(); // 1
foo->bar();   // 2
Run Code Online (Sandbox Code Playgroud)

案例1按预期工作:没有错误和自动完成工作.2但是,对于大小写,Eclipse会在语句中标记错误("方法'栏'无法解析"),加上自动完成foo->功能不起作用.

最有趣的是,我没有任何问题std::shared_ptr.它只发生在std::unique_ptr.

有谁遇到过同样的问题?有谁知道修复它的方法?

编辑:只是为了澄清目的,编译过程适用于上面显示的代码片段.所以,问题不在于编译器本身,而是在Eclipse上.

c++ eclipse eclipse-cdt unique-ptr c++11

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

如何配置 coreaudio HAL 插件

不久前,我用 C++ 开发了一个coreaudio HAL 插件,可以将音频从 Mac OS 发送到 Raspberry Pi。

现在,我想要配置一些参数(例如,RPI 的 IP 地址)。我想至少实现以下目标之一:

  • 让插件加载一些配置文件(例如,来自/Library/Preferences)
  • 有一个 CLI 工具与插件通信,以便可以随时更改配置

我浏览了苹果的文档,我找到的唯一相关的内容是以下段落:

此外,主机进程是沙盒的。因此,除了系统库和框架之外,AudioServerPlugIn 只能读取其捆绑包中的文件。除了通过 Apple API 派生的系统缓存和临时目录之外,它不能访问用户文档或写入任何文件系统位置。主机为插件提供了一种从持久存储中存储和检索数据的方法。

(请参阅https://developer.apple.com/library/archive/qa/qa1811/_index.html)。

我不知道最后一句话是什么意思。它可能指的是插件从文件读取数据的方式吗?

有没有人做过类似的事情并成功与插件进行通信,以便它可以(重新)加载其配置?

c++ macos plugins hal core-audio

6
推荐指数
0
解决办法
1296
查看次数

使用vim检测C ++标准头文件的文件类型

C ++的标准标头通常安装在/usr/include/c++/4.x中(在Linux中)。由于大多数头文件没有任何扩展名(.h,.hpp等),因此vim无法将这些文件的格式识别为C ++。

我在SO中看到了另一个问题,但是在那里发布的解决方案无法解决我的问题。那里的一种解决方案涉及使用,modeline但是标准的C ++头文件不包含vim友好的签名。相反,它们在第一行中包含以下内容:

// <algorithm> -*- C++ -*-
Run Code Online (Sandbox Code Playgroud)

我想我可以搜索该模式(-*- C++ -*-)以检测文件类型。前面提到的SO问题中发布的另一个解决方案实际上就是朝这个方向发展的。答案建议使用:

au BufRead * if search('MagicPattern', 'nw') | setlocal ft=cpp | endif
Run Code Online (Sandbox Code Playgroud)

所以我尝试做:

au BufRead * if search('-*- C++ -*-', 'nw') | setlocal ft=cpp | endif
Run Code Online (Sandbox Code Playgroud)

但它不起作用(即未检测到文件类型)。

使用这种方法是否可以检测文件类型?是否存在任何插件或其他解决方案?

c++ linux vim file-type

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

struct和class and inheritance(c ++)

你能保证我,如果在所有访问修饰符(包括继承)struct是public?

换句话说:那些是平等的吗?

class C: public B, public A { public:
    C():A(1),B(2){}
    //...
};
Run Code Online (Sandbox Code Playgroud)

和

struct C: B, A {
    C():A(1),B(2){}
    //...
};
Run Code Online (Sandbox Code Playgroud)

c++ inheritance struct

5
推荐指数
2
解决办法
2425
查看次数

单击时更改按钮背景颜色

我创建了一个按钮,我希望在用户点击时更改其颜色.我看到了选项"setimagebackground ... forstate ......",但没有其他选项可以改变背景颜色.我在viewdidload中更改了y按钮的值,当我使用"settint color:[uicolor redcolor]"时,没有任何反应.我该怎么解决?这是我的代码:

    button1.layer.borderColor = [[UIColor purpleColor]CGColor];
    button1.layer.cornerRadius = 8.0f;
    button1.layer.masksToBounds = YES;
    button1.layer.borderWidth = 1.0f; 
    [button1.tintColor = [UIColor redColor]CGColor];
    [button1 setTintColor:[UIColor blueColor]];
    [button1 setTitleColor:[UIColor cyanColor] forState:UIControlStateNormal];
    [button1 setTitleColor:[UIColor redColor] forState:UIControlStateHighlighted];
    [button1 setTintColor:[UIColor redColor]];
Run Code Online (Sandbox Code Playgroud)

谢谢!

xcode objective-c uibutton

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

运行Boost单元测试不同的进程

我想在SystemC程序中进行单元测试.我们的想法是在每个套件中安装多个测试套件并进行多次测试.每个测试都需要重置SystemC框架(例如,通过调用sc_simcontext::reset()),但实际上这是不可能的,因为某些错误显然不会很快修复.因此,我决定提出一个解决方法.

我发现如果我在不同的进程上运行每个测试,一切正常.以下代码段概述了我用于使其工作的方案:

void test1() {
  // ...
  sc_start();
}

void test2() {
  // ...
  sc_start();
}

typedef std::function<void()> TestFunction;

void run_test(TestFunction test_function) {
  pid_t pid = fork();
  switch (pid) {
  case -1:
    throw std::runtime_error("Error forking process");
  case 0:
    test_function();
    exit(0);
  default:
    waitpid(pid, nullptr, 0);
    break;
  }
}

int main() {
  run_test(test1);
  run_test(test2);
}
Run Code Online (Sandbox Code Playgroud)

现在我想用Boost单元测试来实现这样的测试方案.

我一直在研究Boost单元测试库的内部结构,我发现这unit_test_main似乎是触发所有测试执行的函数.但我无法设计一种非侵入性的方式与Boost单元测试进行交互,以便在不同的进程上运行每个测试.

有谁知道在不同的进程上运行每个测试的简单解决方案?

c++ boost unit-testing systemc boost-test

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