@ProCxx

Страница 2087 из 2477
Andrew
23.05.2018
16:02:40
Да

регистры состояний
Никогда не пытался запомнить название, но спасибо)

Constantine
23.05.2018
16:03:52
ну вот, и хочется иметь возможно без регистрации и смс получать data_button_state = button_state_engined<data_engine> slots_for_button_state = button_state_engined<slot_engine> slot_for_button_state = some_byelement_operation<button_state_engined, data_engine, slot_engine>

т.е. получать на вход слота data_button_state и раскидывать на входы поэлементно объявленных слотов

Google
Andrew
23.05.2018
16:04:41
регистры состояний
Вот что я имел ввиду https://en.m.wikipedia.org/wiki/State_pattern

Сиие
23.05.2018
16:05:32
Никогда не пытался запомнить название, но спасибо)
кокое название? я не ро название я про int state; state en —— state&1«1; state vis —— state&1«2; state def —— state&1«3;

Constantine
23.05.2018
16:06:31
это потребует глобального объявления компараторов и так далее

redl1ne
23.05.2018
16:06:57
Подскажите как перезаписать контекст потока процесса не ппибегая к помощи winapi Грубо говоря setcontextthread только самописный. Есть где то реализация / алго?

Andrew
23.05.2018
16:07:33
это потребует глобального объявления компараторов и так далее
Это пишеться вариадик темплейт и дальше уже по классике жанра

Constantine
23.05.2018
16:07:36
Неэффективное использование памяти
Здесь дело не в модели сигнал-слоты

Andrew
23.05.2018
16:07:54
Здесь дело не в модели сигнал-слоты
А в идее доставать данные эффективно

Constantine
23.05.2018
16:08:15
На самом деле я могу объяснять на другом XY уровне, просто объяснять будет достаточно долго

Сиие
23.05.2018
16:08:21
Неэффективное использование памяти
одна переменая вместо трёх?

Constantine
23.05.2018
16:08:35
Сигнал-слоты здесь как раз близкое по сути

Сиие
23.05.2018
16:08:53
одна переменая вместо трёх?
а поняв, не еффективно относительно енама чтоль?

Google
Andrew
23.05.2018
16:08:56
одна переменая вместо трёх?
Enum памяти занимает как максимум с заданных типов

Constantine
23.05.2018
16:09:08
Кратко: нельзя писать ВСЁ button_state при желании записать только button_state.default по причинам просадки производительности в миллиард раз

Сиие
23.05.2018
16:10:10
Ага
ну как сказать, а как вы будете записывать когда у вас все три будут тру, а ктогда два первых тру и фолс? магии не будет, один параметр - один разряд

Constantine
23.05.2018
16:10:25
Потому что настоящая подложка будет не сигнал-слотовой, а реактивной с потенциально долгим расчетом, и там нельзя фильтровать оповещения

Сиие
23.05.2018
16:11:45
Ага
тем более если вы захотите поменять одно значение вам прийдётся узнать предыдущее состояние, а в случае с регистром просто одна побитовая операция

Andrew
23.05.2018
16:14:14
struct button_state { bool enabled; bool visible; bool default; };
Да, неплохо бы иметь подобную структуру для вот такой задачи

Осознал все плюсы подобной структуры

А пока действительно только эдаким битсетом можно обойтись и нормальным хендлером запросов

И табличкой: "работает - не трогать!"

Сиие
23.05.2018
16:20:01
И табличкой: "работает - не трогать!"
да не нужна там табличка, если посмотреть как это правильно писать. Используешь макросы и всё понятно, даже фнкции не нужны толком #define BUTT_ST_EN 1«1 if(state&BUTT_ST_EN) - do some

Constantine
23.05.2018
16:20:39
А пока действительно только эдаким битсетом можно обойтись и нормальным хендлером запросов
Вы можете обойтись битсетом, пока у кнопки сверху в этой структуре не появилось название кнопки :)

Сиие
23.05.2018
16:23:27
Constantine
23.05.2018
16:23:34
в гуе есть куча примеров, например, контракт передачи данных окна-предка окну-потомку struct child_info_type { int dpi; space_enum space; /*элемент перечисления, изначально завязанный на монитор, влияющий на выбор текстовок*/ std::shared_ptr<const renderer_config_type> renderer_config; /*совокупность настроек цветовой гаммы, клавиатурный индикатор*/ };

Andrew
23.05.2018
16:23:41
нет времени чиать, к чему это?
Не стоит использовать макросы

Constantine
23.05.2018
16:24:10
ой поправил

Сиие
23.05.2018
16:24:13
Не стоит использовать макросы
кек, авторитетное мнение

Andrew
23.05.2018
16:24:41
Ну это холивар, но если использовать Гугл стайл

Google
Constantine
23.05.2018
16:25:51
сейчас бы про макросы похоливарить

Сиие
23.05.2018
16:26:00
Ну это холивар, но если использовать Гугл стайл
Я бы рекомендовал пользоваться не гуглстайл, а здравым смыслом, к слову сишники чуть ли не одних макросах и пишут

Constantine
23.05.2018
16:26:33
угу, еще в 2018 константы макросами объявлять, причем кривыми

Andrew
23.05.2018
16:26:50
Я сам иногда прибегаю к чистому С и действительно иначе нельзя

Сиие
23.05.2018
16:28:23
Это же стиль для плюсов
макросы нужны и удобны, если их кто-то использует как мудак - это его проблемы

Alex
23.05.2018
16:29:24
макросы нужны и удобны, если их кто-то использует как мудак - это его проблемы
обычно проблем больше не у мудака, а у тех, кто с ним работает

Andrew
23.05.2018
16:29:28
макросы нужны и удобны, если их кто-то использует как мудак - это его проблемы
Там намек на то что это не совсем безопасно + в с++ есть все инструменты для того чтобы заменить макросы

Andrew
23.05.2018
16:30:09
Увы, нет
А что возможно сделать только макросами?

Constantine
23.05.2018
16:30:24
А что возможно сделать только макросами?
Выведите мне в лог исключения место, которое его выбросило

у меня пишется some_exception(UTILS_HERE)

Сиие
23.05.2018
16:31:08
Там намек на то что это не совсем безопасно + в с++ есть все инструменты для того чтобы заменить макросы
и как ты заменишь мне коефициент трения 465734 взятый из справочника? переменной? константой? в чё разница с макросом? чем он плох?

Andrew
23.05.2018
16:31:55
В том что это препроцессор который втупую ищет совпадения в коде

Constantine
23.05.2018
16:32:26
вы же используете for, зачем, если есть while?

Google
Сиие
23.05.2018
16:32:56
тем, что макрос слишком общий, в отличие от константы
ну так его и надо испоьлзовать для слишком общих параметров

Constantine
23.05.2018
16:33:17
ну так его и надо испоьлзовать для слишком общих параметров
его надо использовать для того, для чего нет альтернатив. Для констант такие есть

Сиие
23.05.2018
16:33:53
вы же используете for, зачем, если есть while?
зачем использовать do ... while(0)?

Constantine
23.05.2018
16:34:12
я не умеют в do - while, не пользуюсь

я уверен, что while (1) с выходом посередине читается лучше

Сиие
23.05.2018
16:34:59
я не умеют в do - while, не пользуюсь
я тоже сам сперва не понял смысл этой конструкции, но потом понял на сколько это удобно

Constantine
23.05.2018
16:35:14
можно пример?)

Сиие
23.05.2018
16:35:37
можно пример?)
инициализация и если что-то пошло не так брейки

Constantine
23.05.2018
16:35:50
пример это что-то похожее на код

Сиие
23.05.2018
16:36:02
да можно иначе, но можно и так

Constantine
23.05.2018
16:36:24
инициализация и если что-то пошло не так брейки
для подпрограмм придумали лямбды

Сиие
23.05.2018
16:37:56
для подпрограмм придумали лямбды
не совсем понял, ну да ладно, там можно и ексепшенами сделать, можно и функцией с ретурнами, а можно ду вайл 0, все пути

Constantine
23.05.2018
16:39:27
не совсем понял, ну да ладно, там можно и ексепшенами сделать, можно и функцией с ретурнами, а можно ду вайл 0, все пути
auto button_item = [&] () { if (is_null(image)) return representation::make_button(std::move(text), std::move(button_state), std::move(options)); if (is_null(text)) return representation:::make_button(std::move(image), std::move(button_state), std::move(options)); return representation::make_button(std::move(image), std::move(text), std::move(button_state), std::move(options)); }();

не совсем понял, ну да ладно, там можно и ексепшенами сделать, можно и функцией с ретурнами, а можно ду вайл 0, все пути
auto deciphered = [&] () { auto fail = [&] () -> std::vector<BYTE> { failed = true; return {}; }; auto deciphered = /*expression*/; if (/*condition 1*/) return fail(); if (/*condition 2*/) return fail(); return deciphered; }();

еще примеров?)

подпрограммы - топ2 использование лямбд по частоте

Владислав
23.05.2018
17:50:47
https://github.com/facebook/infer/releases/tag/v0.14.0 у нас тут плюсы заржавели

Alexander
23.05.2018
18:35:31
https://github.com/facebook/infer/releases/tag/v0.14.0 у нас тут плюсы заржавели
не знал про такую штуку. есть какое-нибудь сравнение с cppcheck, clang-tidy, pvs-studio?

Alexander
23.05.2018
18:39:43
Не видел
а сам юзал эту штуку?

Google
Владислав
23.05.2018
18:40:14
а сам юзал эту штуку?
Не, беркус в расточат кинул, я суда переслал :)

Энивэй, это очень свежая фича, я даже описания внятного насчёт неё не нашёл

Max
23.05.2018
18:49:29
А вот такой вопрос: у меня есть некая коллекция, в которую клиент может засунуть объект и вместе с ним - time_duration, после которого этот объект должен прокиснуть. Можно ли как-нибудь это реализовать без постоянно занятого треда, который бы оббегал всю коллекцию и сверял время?

Объектов много — потенциально миллионы. Время тоже любое, от нескольких секунд до нескольких часов.

хочется какой-нибудь epoll на таймерах :)

Max
23.05.2018
18:50:43
каким то образом отсортировать по времени протухания и чтобы к времени протухания первого элемента в коллекции чтото просыпалось и его удаляло

Владислав
23.05.2018
18:50:45
condition variable?

Max
23.05.2018
18:51:03
condition variable?
А что с ним делать? Кто будет дергать notify?

Владислав
23.05.2018
18:51:16
гугли как с ним работать

Max
23.05.2018
18:51:50
я знаю, как с ним работать. Я не втыкаю, кто должен оповещать.ю

Max
23.05.2018
18:52:40
если тебе надо удалять из коллекции прямо сразу после протухания тогда нужен тред

если можно лениво то можно сделать при обращении к коллекции

Владислав
23.05.2018
18:56:17
найди минимальный td, поставь тред на ожидание с cv, который по истичению проснётся и удалит нужный елемент. Дальше повторить

Constantine
23.05.2018
18:57:29
угу, и priority_queue вам в руки

если неотзываемые

Max
23.05.2018
18:59:00
найди минимальный td, поставь тред на ожидание с cv, который по истичению проснётся и удалит нужный елемент. Дальше повторить
Ага. Похоже, придётся так. Хотелось бы, чтобы он не был постоянно занят :) Что-нибудь вроде "переместить кондвар с таймаутом в тред, который ждёт, пока кто-нибудь не отдуплится".

Минус очереди в том, что придётся постоянно пересчитывать таймауты. По истечению и при добавлении/удалении элемента.

Constantine
23.05.2018
19:00:01
вы хотите одно и то же число вычесть из всех элементов очереди?

как только у вас возникает такое желание, просто ничего не вычитайте

Страница 2087 из 2477