@ProCxx

Страница 2078 из 2477
Assasin
21.05.2018
21:26:23
язык разве гарантирует синхронизацию на доступе к статическому объекту функции?

Constantine
21.05.2018
21:26:48
он гарантирует только синхронизацию создания

Assasin
21.05.2018
21:26:54
а, речь об инициализации

Constantine
21.05.2018
21:27:03
это же по сути и есть синглтон

Google
Assasin
21.05.2018
21:27:40
ну вернее можно, наверное, исхитриться и передать всякими decltype от функции, но это уже извращение какое-то

Constantine
21.05.2018
21:29:41
нет, не нужно

потому что это функция в CPP файле и последнее невозможно

анонимный неймспейс вообще нельзя писать в .h-нике

Assasin
21.05.2018
21:30:43
речь о других файлах, где нужно передать синглтон в качестве параметра

void doAcion(<Singleton?> &obj);

Constantine
21.05.2018
21:31:06
хм... зачем нужно синглтон передавать как параметр?

Assasin
21.05.2018
21:31:29
чтобы работал полиморфизм

Constantine
21.05.2018
21:31:32
синглтоны выражают глобальные ресурсы же

их запрашивают как глобальные ресурсы

если можно передавать параметр, то и синглтон не нужен

Assasin
21.05.2018
21:32:17
например, базовый конфиг-синглтон и переопределенный конфиг, скажем, для тестов

Google
Constantine
21.05.2018
21:32:31
угу, система с депенденси инжекшн

Assasin
21.05.2018
21:32:52
да

Constantine
21.05.2018
21:32:55
в данном случае источник синглтона - глобальный ресурс

одна лишняя косвенность, там shared_ptr лежит

и метод guard_object tests::register_injection()

Assasin
21.05.2018
21:34:33
короче, рассуждать можно долго, да спать пора)

приятно было поговорить, спокойной ночи

Constantine
21.05.2018
21:34:52
ну я пока не рассуждаю, просто рассказываю, как это написано :)

Assasin
21.05.2018
21:35:09
спасибо, я реализовывал свой простой DI)

Constantine
21.05.2018
21:35:16
там еще куча шаманской магии типа this_thread_register_injection и this_thread_register_isolation

Assasin
21.05.2018
21:35:31
правда не на плюсах, да

стоит заняться как-нибудь

Constantine
21.05.2018
21:35:47
где последнее проваливает нафиг тест в случае, если идет попытка обратиться к чему-то плохому

Al
22.05.2018
00:27:04
т.е. формально если у вас есть ребро A -> B, то пока живо состояние А, должно быть живо и состояние В
Какой то странный граф. Проверять наличие вершин по граням? Если это направленый граф то если нет вершины А то нет ничего дальше что было от этой вершины исходящим

Zaur
22.05.2018
00:43:45
Я думаю граф ненаправленный

Al
22.05.2018
00:45:04
Без разницы. Тогда удаление основания ветки приведет к созданию 2 полностью независимых графов

вы не сможете сделать это на shared/weak ptr
Так как вы это обьясняете конечно не сможет. Но если касаться графов то изначально нужно понимать что граф это инструмент для описания множества множеств и отношений между этими множествами. То есть если вы хотите создать какой то инструмент который будет производить определенную работу при наличии конечного списка условий. То с точки зрения графа. У вас будет множество описаное одной вершиной (работа) и набор связаных вершин (условий), каждое из которых является множеством само по себе. Ничто не мешает вам реализовать простой алгоритм. Когда при каких то внешних событиях будет отрабатываться множество и результатом будет работа, например какая то глобальная переменная изменит свое значение. А если множество сделало изменение то оно может вызвать любое количество вышестоящих множеств и те в свою очередь проверив например связаный список глобальных переменных либо сделают какую работу либо ничего не произойдет. Никаких циклов.

Подходя ближе к задаче. Организовать убийство связаных процессов не проблема. Достаточно просто помнить процессы и как они связаны. А то дерево это очень частный случай графа

И может получиться не приятно когда рубанув по листику завалишь всю систему

Alex
22.05.2018
01:27:09
здесь могла быть ваша реклама...

Google
Al
22.05.2018
01:36:30
здесь могла быть ваша реклама...
Точно блин. И тут реклама ЕНОТА. ?

Система которая превратит кучу ваших данных в связанные множества и вы обнаружите ранее не очевидные связи и зависимости. :) Как Палантир только полностью автоматический и гораздо дешевле.

D A
22.05.2018
03:55:13
Ребятааа

Ищу криптор

Продукт на сях написан, но нужен крипт ?

Доброе утро/между тем

Constantine
22.05.2018
04:37:26
Так как вы это обьясняете конечно не сможет. Но если касаться графов то изначально нужно понимать что граф это инструмент для описания множества множеств и отношений между этими множествами. То есть если вы хотите создать какой то инструмент который будет производить определенную работу при наличии конечного списка условий. То с точки зрения графа. У вас будет множество описаное одной вершиной (работа) и набор связаных вершин (условий), каждое из которых является множеством само по себе. Ничто не мешает вам реализовать простой алгоритм. Когда при каких то внешних событиях будет отрабатываться множество и результатом будет работа, например какая то глобальная переменная изменит свое значение. А если множество сделало изменение то оно может вызвать любое количество вышестоящих множеств и те в свою очередь проверив например связаный список глобальных переменных либо сделают какую работу либо ничего не произойдет. Никаких циклов.
Это все конечно хорошо, как реализовывать конечный автомат будем?

Al
22.05.2018
04:51:17
Это все конечно хорошо, как реализовывать конечный автомат будем?
Так и будем. Расматриваем каждую функцию как множество. Функция проверяет переменные которые получает от функций ниже или внешнего мира. И согласно условий изменяет или нет переменную на выходе. Изменение переменной на выходе вызывает вышестоящую функцию и так пока не доберется до действия. А запускать цепочку можно по прерыванию от внешнего события.

Al
22.05.2018
04:54:04
А можно чуть ближе к С++ коду? Я там уже ява-прототип набросал class AutomatonState { Map<char, AutomatonState> next; };
В яве есть вложения и так. Статья была на хабре пару месяцев назад.с картинками

Constantine
22.05.2018
04:54:26
Я не очень большой специалист по яве

Не знаю, что там называется вложением

Constantine
22.05.2018
04:55:02
Но прототип выше это буквальное мое понимание, как это должно быть описано

(изначально дискуссия была, почему shared_ptr / weak_ptr не описывают структуру владения)

А то пока получается смешная ситуация вроде "как перевести intmax_t в wstring локаленезависимым образом в С++14?"

Много что можно использовать, но пример набросать... :)

И главное, детским недостатком языка это никто так и не признал

Aidar
22.05.2018
05:02:17
Но сами окна типа перемещаемые

Короче интерфейс нормальный а кишки упороты

Google
Constantine
22.05.2018
05:02:58
Я упорюсь пимплы писать

Главное, зачем?)

Constantine
22.05.2018
05:04:05
Ты же понимаешь, что пимпл это два раза весь контракт окна описать?

Aidar
22.05.2018
05:04:13
А не как в кьюте

Ну второй может быть уже

Constantine
22.05.2018
05:04:50
Ну... это * константа времени разработки непонятно зачем

Admin
ERROR: S client not available

Constantine
22.05.2018
05:05:07
За такое на эту константу зарплату делят)

Aidar
22.05.2018
05:05:19
Я так понял у тебя щас архитектура дико похожа на кьют

Constantine
22.05.2018
05:05:29
Наверняка

Aidar
22.05.2018
05:05:34
А меня от него подташнивает

Constantine
22.05.2018
05:05:44
Кроме того, что вместо сигнал-слотов используется реактивное вычисление

Aidar
22.05.2018
05:05:47
Просто потомучто это джава ебаная

На виртуальном полиморфизме

Constantine
22.05.2018
05:06:19
Ну сделай мне модули компиляции

У меня сейчас 44 минуты сборка

Aidar
22.05.2018
05:06:34
С неперемещабельными окнами и ссылками на родителя

И COW со всех щелей

Google
Constantine
22.05.2018
05:06:50
Ссылки на родителей и COW нет

Там чуть сложнее

Вместо ссылки на родителя

Она скрыта в реактивной модели

предок просто обожает выдавать потомку значение, валидное исключительно в диапазоне Create..Destroy

в норме потомок не собирается напрямую обращаться к предку, разумеется

Al
22.05.2018
05:14:56
Оказывается есть такая утилитка уже

Constantine
22.05.2018
05:26:41
Зачем мне std::optional?

Оказывается есть такая утилитка уже
Есть в С++17, можно портировать на более ранние с некоторыми танцами с бубном

Al
22.05.2018
05:29:56
Зачем мне std::optional?
Ну так ты хотел же чего то там описывать. Ну вот и описывай в одном так сказать флаконе. Как флакон наполнится так делай чего там нужно. Оно ж для этого и сделано.

Al
22.05.2018
05:31:41
Я хочу конечный автомат и плохо понимаю, как мне поможет std::optional
Тут вот за жабу. Но общий смысл тот же. https://habr.com/post/347576/

Constantine
22.05.2018
05:32:08
Тут вот за жабу. Но общий смысл тот же. https://habr.com/post/347576/
Классно, у меня внедрено года полтора назад, но зачем в этом примере?)

Al
22.05.2018
05:39:55
Классно, у меня внедрено года полтора назад, но зачем в этом примере?)
Начни с начала в чем цель конечного автомата? При соблюдении определенных условий произвести какие то действия? И что не так с опшинал?

Constantine
22.05.2018
05:40:59
Начни с начала в чем цель конечного автомата? При соблюдении определенных условий произвести какие то действия? И что не так с опшинал?
С опшнал? Ну я могу еще использовать QWindow, только зачем? Цель конечного автомата - описать множество принимаемых строк

Al
22.05.2018
05:45:43
Ты хочешь составить список зависимостей процессов. что бы прибивать автоматом дочернии процессы? Причем тут конечный автомат и графы и прочая хрень?

Al
22.05.2018
05:50:21
Пиши их в список друг за другом. Потому что это не дерево. Это векторы. И прибивай каждый вектор согласно списка.

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