Size: a a a

2020 September 27

PK

Pavel Kazakov in pro.cxx
> The goal of structured logging is to bring a more defined format and details to your logging. [...] The problem with log files is they are unstructured text data. This makes it hard to query them for any sort of useful information. As a developer, it would be nice to be able to filter all logs by a certain customer # or transaction #. The goal of structured logging is to solve these sorts of problems and allow additional analytics.
https://stackify.com/what-is-structured-logging-and-why-developers-need-it/
источник

PK

Pavel Kazakov in pro.cxx
чета рвань какая-то, руками не сделать категории, чтоли?
источник

ПК

Побитый Кирпич... in pro.cxx
Так и зачем тут макросы? Какой код то должен быть и что делать?
источник

m

magras in pro.cxx
Bytearray
я не против awaitable, знать бы только как из него достать какую-либо передаваемую в генератор переменную
Очень приблизительно так:
class Source {
 struct promise_type {
   int value;
   int yield_value() { return value; }
   ...
 };
 coroutine_handle m_coro;
public:
 void push(int v) { m_coro.promise().value = v; }
};

Скорее всего для того чтобы реализовать awaitable понадобится еще continuation хранить в promise.

upd: Код принципиально неправильный и сама идея реализовывать здесь корутину не верна.
источник

ПК

Побитый Кирпич... in pro.cxx
𝛈 µ
без хороших макросов так нельзя
log.Debug("Incoming metrics data");

это что нельзя в с++ сделать без макросов?
источник

m

magras in pro.cxx
magras
Очень приблизительно так:
class Source {
 struct promise_type {
   int value;
   int yield_value() { return value; }
   ...
 };
 coroutine_handle m_coro;
public:
 void push(int v) { m_coro.promise().value = v; }
};

Скорее всего для того чтобы реализовать awaitable понадобится еще continuation хранить в promise.

upd: Код принципиально неправильный и сама идея реализовывать здесь корутину не верна.
Хотя я туплю. Кажется здесь сама корутина не нужна. Можно просто awaitable реализовать.
источник

AZ

Alexander Zaitsev in pro.cxx
Побитый Кирпич
log.Debug("Incoming metrics data");

это что нельзя в с++ сделать без макросов?
конечно нельзя, а вот на расте можно
источник

АР

Андрей Руссков... in pro.cxx
Побитый Кирпич
log.Debug("Incoming metrics data");

это что нельзя в с++ сделать без макросов?
проблема логирования в с++ обычно в ленивости. Грубо говоря, в строчке
log.Debug("bla"s + "bla" + "bla");
выражение "bla"s + "bla" + "bla" вообще не должно вычисляться если уровень логгирования ниже дебага
источник

m

magras in pro.cxx
magras
Хотя я туплю. Кажется здесь сама корутина не нужна. Можно просто awaitable реализовать.
Кажется здесь уже без экзекютера не обойтись. Если я правильно понимаю, такой источник данных должен при suspend'е должен сохранить continuation. В методе push он долен зашедулить исполнение в экзекютере. В простейшем случае думаю можно просто продолжить исполнение на текущем трэде. В общем я попробую набросать рабочий пример.
источник

m

magras in pro.cxx
Андрей Руссков
проблема логирования в с++ обычно в ленивости. Грубо говоря, в строчке
log.Debug("bla"s + "bla" + "bla");
выражение "bla"s + "bla" + "bla" вообще не должно вычисляться если уровень логгирования ниже дебага
Этого можно добиться завернув в лямбду. Но да, обычно просто условной компиляцией убирают.
источник

АР

Андрей Руссков... in pro.cxx
magras
Этого можно добиться завернув в лямбду. Но да, обычно просто условной компиляцией убирают.
логгирование должно быть в первую очередь удобным
источник

АР

Андрей Руссков... in pro.cxx
во-вторую - по минимуму раздувать код
источник

АР

Андрей Руссков... in pro.cxx
и уже в третью четвертую и т.д. очередь быть функциональным
источник

АР

Андрей Руссков... in pro.cxx
если только у вас конкретный функционал не must have
источник

m

magras in pro.cxx
Андрей Руссков
логгирование должно быть в первую очередь удобным
Так я не предлагаю это делать руками. Макрос, который прячет вычисление строки для логирования в лямбду и исполняет ее только если в рантайме уровень логирования соответствующий.
источник

АР

Андрей Руссков... in pro.cxx
в макрос можно и банальный
if (log_level >= curr_log_level)
   print(macro_args);
запихнуть
источник

P

PRoSToC0der in pro.cxx
magras
Очень приблизительно так:
class Source {
 struct promise_type {
   int value;
   int yield_value() { return value; }
   ...
 };
 coroutine_handle m_coro;
public:
 void push(int v) { m_coro.promise().value = v; }
};

Скорее всего для того чтобы реализовать awaitable понадобится еще continuation хранить в promise.

upd: Код принципиально неправильный и сама идея реализовывать здесь корутину не верна.
yield_value разве можно без аргументов? (ну и соответственно co_yield без expression?)
источник

RL

Rachel Lumin in pro.cxx
Добрый вечер. По-наглому: нужна помощь в написании кода
источник

RL

Rachel Lumin in pro.cxx
Посчитать сумму чисел этой последовательности. Перестать считать после двух нулей. Пример:  1 5 0 7 5 0 0 1
Сумма = 1+5+0+7+5 = 18
источник

RL

Rachel Lumin in pro.cxx
#include <iostream>
#include <math.h>

using namespace std;
int main()
{
int a,k=0,i=-1;
do
{
 cin>>a;
 i++;
 k=k+a;
}
while(a!=0);
cout<<k;
}
источник