小编Yun*_*ang的帖子

如何将命令行参数传递给gnuplot?

我想用gnuplot从数据文件中绘制图形,比如说foo.data.目前,我在命令文件中硬编码了数据文件名,比如foo.plt,并运行命令gnuplot foo.plg来绘制数据.但是,我想将数据文件名作为命令参数传递,例如运行命令gnuplot foo.plg foo.data.如何解析gnuplot脚本文件中的命令行参数?谢谢.

command-line gnuplot

138
推荐指数
9
解决办法
12万
查看次数

在BASH中,是否可以在函数体中获取函数名称?

在BASH中,是否可以在函数体中获取函数名称?以下面的代码为例,我想在其正文中打印函数名"Test",但"$ 0"似乎是指脚本名而不是函数名.那么如何获取函数名称?

#!/bin/bash

function Test
{
    if [ $# -lt 1 ]
    then
        #   how to get the function name here?
        echo "$0 num" 1>&2
        exit 1
    fi
    local num="${1}"
    echo "${num}"
}

#   the correct function
Test 100

#   missing argument, the function should exit with error
Test

exit 0
Run Code Online (Sandbox Code Playgroud)

bash shell

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

std :: condition_variable的notify_all()和notify_one()有什么区别?

目前,我正在使用std::threadC++ 11 实现一个多线程项目.我std::condition_variable用来同步线程.详细地说,一个消费者函数从全局任务队列调用wait()成员函数std::condition_variable等待任务,另一个生成器函数生成并将任务放入队列.但我不知道notify_all()notify_one()成员函数之间的区别std::condition_variable.我应该在生产者函数中使用哪个函数?谢谢!

c++ multithreading condition-variable c++11

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

为什么back_insert_iterator/front_insert_iterator/insert_iterator的value_type/difference_type/pointer/reference都是无效的?

在我的项目中,我想将流分割为某些给定类型的值,因此我将模板函数实现为

template <typename TElem, typename TOutputIter>
TOutputIter SplitSpace(std::istream& IS, TOutputIter result)
{
    TElem elem;
    while (IS >> elem)
    {
        *result = elem;
        ++result;
    }
    return result;
}
Run Code Online (Sandbox Code Playgroud)

我认为这很尴尬,因为我必须明确给出TElem调用时的类型.例如,我必须写:

std::vector<int> v;
SplitSpace<int>(std::cin, back_inserter(v));
// I want to it to be   SplitSpace(std::cin, back_inserter(v)); 
Run Code Online (Sandbox Code Playgroud)

我试图从(模板)迭代器获取值类型并使用std::iterator_traits如下:

template <typename TOutputIter>
TOutputIter SplitSpace(std::istream& IS, TOutputIter result)
{
    typename std::iterator_traits<TOutputIter>::value_type elem;
    while (IS >> elem)
    {
        *result = elem;
        ++result;
    }
    return result;
}
Run Code Online (Sandbox Code Playgroud)

但是,上述代码不起作用back_insert_iterator.我检查的源代码back_insert_iterator/front_insert_iterator/insert_iteratorstd的命名空间,发现value_type/difference_type/pointer/reference都是 …

c++ types iterator iterator-traits

19
推荐指数
2
解决办法
850
查看次数

如何获取`std :: function`的参数个数?

这有可能获得参数的数量std::function吗?有点像NumOfArgument<...>::value.

例如,NumOfArgument<function<int(int, int)> >::value应该是2.

c++ function c++11

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

Linux上的PDF查看器"Evince"无法正确显示某些数学符号

我使用Evince在Ubuntu Linux 10.04上查看PDF文件.但有时程序无法正确显示数学符号.

一个例子.PDF文件可以从以下网址下载:

参见等式(1).

在Windows上,Acrobat Reader正确显示公式: 在此输入图像描述 但在Linux上,\sum它显示为一个实心点: 在此输入图像描述

我已经安装的软件包:ttf-symbol-replacement,libpoppler5,poppler-data.

linux pdf fonts

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

在 JQ 中获取或默认函数?

假设有一个json文件:

{
  "columns": {
    "id": {
      "required": true,
      "type": "integer"
    },
    "name": {
      "required": false,
      "type": "string"
    },
    "description": {
      "type": "string"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我想用来jq获取每列的值“必填”字段。如果“必填”字段不存在,则应返回默认值false

具体来说:

jq '.columns.id | getOrDefault("required", false)'  # true
jq '.columns.name | getOrDefault("required", false)'  # false
jq '.columns.description | getOrDefault("required", false)'  # false
Run Code Online (Sandbox Code Playgroud)

如何在 中实现这个神奇的 getOrDefault() 函数jq

json jq

12
推荐指数
2
解决办法
4706
查看次数

如何检查类是否在C++ 11中指定了嵌套类定义或typedef?

在我的项目中,我想实现一些现有更大类的模板代理类.现有的类是库类,因此无法修改它们.在大多数情况下,客户端不知道对象是代理类或更大类的实例.但是,在某些情况下,客户必须知道详细的课程信息.由于代理类本身就是一个模板类,我不认为通过类名简单的函数重载可以解决这个问题.我认为可能的解决方案是在代理类中添加内部嵌套类或typedef,并且客户端检查是否存在此类/ typedef以获取类信息.我的问题是:如何检查类是否在C++ 11中指定了嵌套类定义或typedef?

以下代码显示了一个示例:

#include <iostream>
#include <functional>
#include <string>
#include <vector>
#include <type_traits>

typedef std::string CBig1;  //  use string for demonstration
typedef std::string CBig2;  //  use string for demonstration

//class CBig1;   // the bigger class 1, codes of which can not be changed
//class CBig2;   // the bigger class 2, codes of which can not be changed

template <typename _Big, typename _Other>
class CProxy
{
public:
    struct proxy_tag { };
};

//  how to implement this ?
//  the …
Run Code Online (Sandbox Code Playgroud)

c++ templates typedef c++11

8
推荐指数
2
解决办法
4047
查看次数

如何向Kafka主题添加分区并将相同键的消息保留在同一分区中?

要求在给定 Kafka 主题的同一分区中进行排序是很常见的。也就是说,具有相同密钥的消息应该发送到相同的分区。现在,如果我想在正在运行的主题中添加新分区,如何制作并保持一致性?

据我了解,默认的分区策略是对 num-of-partition 进行 mod 。当分区数量改变时(例如4到5),一些消息可能会落入与之前具有相同键的消息不同的分区中。

我可以想象实现一致的散列来定制分区行为,但这可能会造成干扰。

或者,停止所有生产者,直到所有消息被消耗完;然后部署新分区并重新启动所有生产者。

还有更好的想法吗?

events consistent-hashing apache-kafka

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

如何使用字母顺序对主列进行排序,然后使用数字顺序对辅助列进

假设有一个文本文件:

10  A   QAZ
5   A   EDC
14  B   RFV
3   A   WSX
7   B   TGB
Run Code Online (Sandbox Code Playgroud)

我希望将第二列作为具有字母顺序的主列和第一列作为具有数字顺序的辅助列进行排序.以下是预期结果:

3   A   WSX
5   A   EDC
10  A   QAZ
7   B   TGB
14  B   RFV
Run Code Online (Sandbox Code Playgroud)

我尝试了sort -k 2,2 -k 1,1 a.txt -n,sort -k 2,2 -k 1,1 a.txt但都给出了错误的结果.我该怎么解决这个问题?谢谢.

sorting bash shell

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

语法高亮显示用于BASH脚本的VIM 7.3的错误

我刚刚将操作系统从Ubuntu 8.04升级到Ubuntu 12.04,以及相应的VIM包.但是,我发现BASH脚本的新VIM语法突出显示很奇怪:(1)开括号和右括号的颜色不同; (2)评论的颜色似乎错了; (3)注释中的BASH关键字不应突出显示.我已经加入let g:is_bash=1syntax on成为我的".vimrc"文件.我不确定这是否是VIM的错误或我的设置有问题.解决这个问题的任何方法?谢谢.

错误语法突出显示的屏幕截图. 在此输入图像描述

突出显示相应正确语法的屏幕截图: 在此输入图像描述

新的(错误的)VIM版本是:VIM - Vi IMproved 7.3(2010年8月15日,编译于2012年5月4日04:21:49)包含的补丁:1-429

旧的(正确的)VIM版本是:VIM - Vi IMproved 7.2(2008年8月9日,编译时间为2009年9月21日11:21:42)包含的补丁:1-245

vim bash syntax-highlighting

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

如何使用std :: log作为功能?

我尝试将std :: log作为函数参数传递,但似乎有std :: log的重载实现,并且编译器无法解析它.代码:

#include <cmath>
#include <iostream>
#include <vector>
#include <string>
#include <functional>

template <typename FOper>
double Eval(FOper fOper, double X)
{
    return fOper(X);
}

int main(int argc, char* argv[])
{
    std::function<double(double)> fPlus1 = std::bind(std::plus<double>(), 1.0, std::placeholders::_1);
    std::cout<<Eval(fPlus1, 10.0)<<std::endl;
    //  how to write this fLog ?
    //std::function<double(double)> fLog = std::log;
    //std::function<double(double)> fLog = std::log<double>;
    std::cout<<Eval(fLog, 10.0)<<std::endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果我取消注释fLog定义的任一行,则编译器会提示错误消息:

error: conversion from '<unresolved overloaded function type>' to non-scalar type 'std::function<double(doubl
e)>' requested
Run Code Online (Sandbox Code Playgroud)

c++ logging functional-programming c++11

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

在 Dart 中,如何验证单元测试中不抛出异常的 void 方法?

我正在 Dart 中实现一些数据验证库。验证方法具有void返回类型并在错误时引发异常。下面的代码显示了一个示例。

import 'package:quiver/check.dart';
    
void validate(int value) {
    checkArgument(value >= 0 && value <= 100);
}
Run Code Online (Sandbox Code Playgroud)

在单元测试中,我可以使用以下代码来测试无效输入的异常情况:

expect(() => validate(-1), throwsArgumentError);
Run Code Online (Sandbox Code Playgroud)

但是,如何验证该方法不会为有效输入抛出异常?

unit-testing dart

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