小编Mic*_*ndr的帖子

如何将变量传递到 Connexion Flask 应用程序上下文中?

我像这样运行 Connexion/Flask 应用程序:

import connexion
from flask_cors import CORS
from flask import g

app = connexion.App(__name__, specification_dir='swagger_server/swagger/')
app.add_api('swagger.yaml')
CORS(app.app)
with app.app.app_context():
    g.foo = 'bar'
    q = g.get('foo') # THIS WORKS
    print('variable', q)
app.run(port=8088, use_reloader=False)
Run Code Online (Sandbox Code Playgroud)

代码中的其他地方:

from flask import abort, g, current_app

def batch(machine=None):  # noqa: E501
    try:
        app = current_app._get_current_object()
        with app.app_context:
            bq = g.get('foo', None) # DOES NOT WORK HERE
            print('variable:', bq)
        res = MYHandler(bq).batch(machine)
    except:
        abort(404)
    return res
Run Code Online (Sandbox Code Playgroud)

这不起作用 - 我无法将变量('bla')传递给第二个代码示例。

知道如何正确传递上下文变量吗?或者如何传递一个变量并在所有 Flask 处理程序中全局使用它?

我已经尝试过这个解决方案(有效):在第一个代码部分我会添加:

app.app.config['foo'] = 'bar' …
Run Code Online (Sandbox Code Playgroud)

python flask connexion

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

如何确定Kafka的API版本?

我正在使用kafka-python访问 Kafka。我尝试创建一个 Kafka Producer:

kafka_producer = KafkaProducer(bootstrap_servers=['kafka:9092'])
Run Code Online (Sandbox Code Playgroud)

但这会因kafka.errors.NoBrokersAvailable: NoBrokersAvailable异常而失败。

我发现我需要向api_versionKafkaProducer添加参数:

kafka_producer = KafkaProducer(bootstrap_servers=['kafka:9092'],
                               api_version=(0, 10, 1))
Run Code Online (Sandbox Code Playgroud)

此命令有效。

问题是:如何确定 的值api_version

kafka-broker-api-versions.sh --bootstrap-server localhost:9092给了我一些东西,但我不确定是否有我可以使用的号码。我尝试了随机值api_version=(20, 2, 1),它也有效。

apache-kafka kafka-python kafka-producer-api

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

Midnight Commander查看器中的语法高亮显示

我想mc viewer(由F3键运行)突出显示我的C++代码.可能吗?对于编辑(F4键)我使用vim自己的语法高亮.对于查看我找不到这样的选择.有

editor_syntax_highlighting=1
Run Code Online (Sandbox Code Playgroud)

可以在〜/ .mc/ini或〜/ .config/mc/ini中更改,但它显然与内置的mcedit有关,而不是与查看器有关.有没有像viewer_syntax_highlighting = 1或任何其他方式如何突出显示查看器中的语法?

syntax-highlighting mc

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

哪个 C++ 草案?

我对当前的 C++ 标准感兴趣,并且对http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/上的链接有点困惑。新版本应该是什么?我应该寻找什么标题?是“工作草案,编程语言 C++ 标准”还是“编程语言 \xe2\x80\x94 C++ ”?这些论文有什么区别?为什么N4141纸张有密码保护,而较新的N4296则没有?

\n\n

问题在哪里可以找到当前的 C 或 C++ 标准文档?有一个很好的草稿列表,但我仍然无法分辨草稿的“稳定”版本是什么,即我可以使用什么作为 C++11 的参考?

\n

c++ standards c++11

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

部分终端无法正确显示表情符号

我安装了几个终端。但只有其中一些可以正确显示所有 Unicode 字符。例如,经典的表情符号在不同的终端上显示不同:

\n\n

Xterm\nxterm

\n\n

Urxvt(又名 rxvt-unicode)\n乌尔克斯VT

\n\n

术语\n术语

\n\n

正如您所看到的,术语(以及 gnome-terminal 或 st,此处不存在)可以正确显示表情符号。urxvt、xterm 无法显示矩形而不是正确的字符。

\n\n

为什么会这样呢?所有终端的区域设置都相同。字体显然安装正确。xterm 和 rxvt-unicode 应该支持 Unicode(至少像 \xc4\x9b\xc5\xa1\xc4\x8d\xc5\x99 这样的捷克字符显示没有问题),但它们显然不支持 100%。

\n

unicode terminal emoji

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

类内的 std::function 初始化

我试图了解 std::function 是如何工作的,但我无法编译它,也不明白为什么。我认为这与在类中使用 std::function 有关系,因为没有类(在全局范围内定义的映射)它可以工作。

这是我收到的错误消息:

functor.cc:37:9:错误:无法转换‘{{"A", ((C*)this)->C::f}, {"B", ((C*)this)->C::g}, {"C", ((C*)this)->C::h}}’‘<brace-enclosed initializer list>’‘std::map<std::__cxx11::basic_string<char>, std::function<bool(const std::vector<std::__cxx11::basic_string<char> >&)> >’

示例代码(它没有意义,但它很好地代表了我遇到的问题):

#include <iostream>
#include <map>
#include <functional>
#include <vector>


class C { 
    public:
        bool f(const std::vector<std::string>& s) {
            std::cout << "F" << std::endl;
            for (auto& i : s) {
                std::cout << i << std::endl;
            }
            return true;
        }

        bool g(const std::vector<std::string>& s) {
            std::cout << "G" << std::endl;
            for (auto& i : s) {
                std::cout << i …
Run Code Online (Sandbox Code Playgroud)

c++ c++11 std-function

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

在模板中比较==!=

在模板类中执行==和!=运算符的正确方法是什么?假设这段代码:

template<typename T>
class C {
        T x, y;

        public:
        C(T a, T b) : x(a), y(b) {}

        bool cmp() {
                return x == y;
        }

};

int main()
{
        // OK
        C<int> i(1,2);
        i.cmp();

        // not OK
        C<double> d(1.0, 2.0);
        d.cmp();

        return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果你用g ++ -Wfloat-equal构建它,你就会得到

警告:将浮点数与==或!=进行比较是不安全的[-Wfloat-equal]

因为你不能简单地比较浮点变量.


更新

我已经使用type_traits和enable_if解决了这个问题(感谢@Andrew和@OMGtechy):

#include <type_traits>
#include <limits>
#include <cmath>
#include <iostream>

using namespace std;

template <typename IntegralType>
typename std::enable_if<std::is_integral<IntegralType>::value, bool>::type
equal(const IntegralType& a, const IntegralType& b) {
        return a == b; …
Run Code Online (Sandbox Code Playgroud)

c++ comparison templates floating-accuracy

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

从std :: vector <bool>获取bool引用

我知道这是一个坏习惯,但我想知道一些解决方法或破解这个问题.我有一个这样的课:

template <class T>
class A : std::vector<T> {
  T& operator()(int index) { // returns a _reference_ to an object
    return this->operator[](index);
  }
};
Run Code Online (Sandbox Code Playgroud)

可以做这样的事情:

A<int> a{1,2,3,4};
a(3) = 10;
Run Code Online (Sandbox Code Playgroud)

但是如果有人使用bool作为模板参数,它就会停止工作

A<bool> a{true, false, true};
std::cout << a(0) << std::endl; // not possible
if (a(1)) { /* something */ }   // not possible
Run Code Online (Sandbox Code Playgroud)

std::vector<bool>是矢量的专用版本(http://www.cplusplus.com/reference/vector/vector-bool/),它不允许这样的事情.

有没有办法从std :: Vector获取布尔变量的引用?或者任何不同的解决方

c++ boolean stdvector

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

如何在for_each方法中使用自己的类的函数?

假设我有这个类(继承自std :: Vector,它只是一个例子)

#include <vector>

using namespace std;

template <class T>
class C : public vector<T> {

    // I don't want to use static keyword
    void transformation(T i) {
        i *= 100;
    }

    public:   
    void method() {
        for_each(this->begin(), this->end(), transformation);
    }
};

int main() {
    C<double> c;
    for (int i=-3; i<4; ++i) {
        c.push_back(i);
    }

    c.method();
}
Run Code Online (Sandbox Code Playgroud)

如何在类本身内部使用类方法调用for_each?我知道我可以使用static关键字,但是有什么其他方法可以在不使用静态的情况下使用函数对象?

我在编译时收到此错误消息:

for_each.cc:21:55:错误:无法将'C :: transformation'从类型'void(C ::)(double)'转换为'void(C ::*)(double)'for_each(this-> begin(),this-> end(),transformation);

我想我需要添加.*或在->*某处,但我找不到在哪里以及为什么.

c++ foreach function-object c++11

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

PostgreSQL中一行中窗口函数的第一个和最后一个值

我想在指定分区的一行中获得一列的第一个值和第二列的最后一个值.为此我创建了这个查询:

SELECT DISTINCT
b.machine_id,
batch,
timestamp_sta,
timestamp_stp,
FIRST_VALUE(timestamp_sta) OVER w AS batch_start,
LAST_VALUE(timestamp_stp) OVER w AS batch_end
FROM db_data.sta_stp AS a
JOIN db_data.ll_lu AS b
ON a.ll_lu_id=b.id
WINDOW w AS (PARTITION BY batch, machine_id ORDER BY timestamp_sta)
ORDER BY timestamp_sta, batch, machine_id;
Run Code Online (Sandbox Code Playgroud)

但正如您在图像中看到的那样,batch_end列中返回的数据不正确.

batch_start列具有正确的timestamp_sta列的第一个值.但是batch_end应为"2012-09-17 10:49:45",它等于同一行的timestamp_stp.

为什么会这样?

在此输入图像描述

postgresql window-functions

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

如何在bash中创建绝对路径的相对路径?

我在这个目录中:

/home/michal/project/test/my-utils/rel/0.1.0
Run Code Online (Sandbox Code Playgroud)

我想获得Linux shell中/ home/michal/project /的相对路径:

../../..
Run Code Online (Sandbox Code Playgroud)

我用sed尝试了一些东西,但是我没有成功创建正则表达式.例如其中一次尝试:

pwd | sed -e "s/.*project\///g" | sed -e "s/[^\/]+/../g"
Run Code Online (Sandbox Code Playgroud)

任何提示怎么做?

regex bash sed relative-path pwd

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

为什么无法将 Kafka 偏移量设置到主题的开头?

我想将mytopic具有 1 个分区且给定组 IDtestgroup1为 0 的主题的偏移量设置为 0。但这并不总是可行。如果我想将偏移量设置为 0,我会收到以下消息:

bash-4.4# kafka-consumer-groups.sh --bootstrap-server localhost:9092 --topic mytopic --group testgroup1 --reset-offsets --to-offset 0 --execute
[2021-06-04 09:23:30,854] WARN New offset (0) is lower than earliest offset for topic partition mytopic-0. Value will be set to 1365671 (kafka.admin.ConsumerGroupCommand$)

bash-4.4# kafka-topics.sh --bootstrap-server localhost:9092 --topic mytopic --describe 
Topic: mytopic  PartitionCount: 1   ReplicationFactor: 1    Configs: segment.bytes=1073741824
    Topic: mytopic  Partition: 0    Leader: 1001    Replicas: 1001  Isr: 1001

bash-4.4# kafka-configs.sh --bootstrap-server localhost:9092 --describe --entity-name mytopic --entity-type topics …
Run Code Online (Sandbox Code Playgroud)

offset apache-kafka retention

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

如何使用 lambda 函数创建新字符串?

我想调用setValue()需要 String 参数的方法- 它检查是否可以转换为整数并将其增加 1,转换回 String 或使用原始值:

String origStr  = "123";
MyClass.setValue(() -> {
    String val = origStr;
    try
    {
        val = String.valueOf(Integer.parseInt(origStr) + 1);
    } catch(NumberFormatException e) {}
    return val;
});
Run Code Online (Sandbox Code Playgroud)

但是这是不可能的,我从编译器得到“ lambda 转换的目标类型必须是一个接口”

知道如何创建这个字符串吗?

编辑:我为什么要这样做?实际上我使用构建器模式,我想在没有临时值的情况下设置它:

MYClass x = new MyClass.Builder
.setValue()  // here's my code
.setSomethingElse()
.setOneMoreTime()
.build();
Run Code Online (Sandbox Code Playgroud)

java lambda

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