[12:52:23] <ada_ru> (budden73) А в Аде бывает так, чтобы было и явное управление памятью, и сборка мусора, в одном приложении?
[13:03:34] <ada_ru> (I_vlxy_I) Сборки мусора в Аде я не видел в реальности
[13:06:07] <ada_ru> (budden73) А насколько велик ваш опыт работы с адой?
[13:06:11] <ada_ru> (budden73) -Может
[13:06:12] <ada_ru> (budden73) Я
[13:06:18] <ada_ru> (budden73) Опять мелкий пришёл.
[13:06:49] <ada_ru> (budden73) Может, есть какие-то реализации, где сборка присутствует?
[13:06:59] <ada_ru> (budden73) Я имею в виду сборку мусора, а не счётчики ссылок
[13:25:03] <ada_ru> (I_vlxy_I) Может и есть. Мне про это не известно.

Хотя.. возможно при компиляции в jvm-байткод будет сборка мусора
[13:43:08] <ada_ru> (I_vlxy_I) Или в .net
[14:35:50] <ada_ru> (Максим)  отвечает (budden73) на <Может, есть какие-то…>
Есть библиотеки с поддержкой Boehm GC
[14:36:42] <ada_ru> (FROL256) Я не понимаю зачем в Аде может понанобится сборка мусора ...
[14:37:47] <ada_ru> (Максим)  отвечает (budden73) на <Может, есть какие-то…>
Управление идет на уровне пулов памяти. Ты создаешь объект, Storage Pool и потом или говоришь компилятору использовать его по умолчанию, или для нужных ссылочных типов указываешь этот ссылочный пул, тогда он используется при операциях new
[14:38:16] <ada_ru> (I_vlxy_I)  отвечает (Максим) на <Есть библиотеки с по…>
Это и для с++ есть, так то.

Более того, в стандарте с++ есть поддержка GC :-)
[14:38:18] <ada_ru> (Максим) Но эти реализации не особо прижились.
[14:38:53] <ada_ru> (Максим) АдаКора их не спешит поддерживать
[14:39:09] <ada_ru> (I_vlxy_I)  отвечает (I_vlxy_I) на <Это и для с++ есть, …>
Но эта поддержка не прижилась
[14:39:34] <ada_ru> (Максим) Если программа маленькая и не долго живущая проще просто забить на освобождение памяти
[14:40:28] <ada_ru> (Oleg)  отвечает (Максим) на <Если программа мален…>
Так все видимо и делают :-)
[14:40:58] <ada_ru> (Oleg) Но можно же всякими там статическими анализаторами проверить
[14:42:19] <ada_ru> (Максим) Да, если это библиотека или долгоиграющий сервис, то нужно серьезно этим заниматься. В случае с библиотекой GC не канает, т.к. заранее не известно, кто и как будет использовать библиотеку
[14:42:36] <ada_ru> (Максим) Получается ниша для GC довольно небольшая
[14:43:10] <ada_ru> (Oleg) GC нинужин :-)
[14:43:26] <ada_ru> (Oleg) Нужно нормально заниматься ресурсами
[14:43:32] <ada_ru> (FROL256) +1
[14:43:34] <ada_ru> (I_vlxy_I)  отвечает (Oleg) на <Но можно же всякими …>
Лучше динамическими ещё. Статика далеко не все ловит и имеет много false positive срабатываний
[14:43:43] <ada_ru> (I_vlxy_I) https://www.bloomberg.com/news/articles/2014-04-11/nsa-said-to-have-used-heartbleed-bug-exposing-consumers
[14:44:03] <ada_ru> (Oleg) Возможно
[14:44:19] <ada_ru> (I_vlxy_I) Правительство Скрывало Джва Года!
[14:45:41] <ada_ru> (I_vlxy_I)  отвечает (Oleg) на <Возможно>
Я просто этим активно занимаюсь по работе.
[15:00:31] <ada_ru> (I_vlxy_I) Кстати, были ли случаи когда в ЯП не было мусорщика, потом его добавили и настало счастье?
[15:00:44] <ada_ru> (I_vlxy_I) Я пока только обратные примеры знаю
[15:00:59] <ada_ru> (I_vlxy_I) Когда счастье настало после удаления GC из языка
[15:03:30] <ada_ru> (Oleg) А для ады есть простые библиотеки чтоб делать REST API? ну там роутер HTTP зпросов, веб сокеты да JSON/XML
[15:12:00] <ada_ru> (Максим) В матрешке есть Servlet API, JSON, XML
[15:12:55] <ada_ru> (Oleg) Надо посмотреть наконец :--)
[15:13:28] <ada_ru> (Максим) Servlet API поверх AWS. Есть ещё зачатки сделать его поверх FastCGI вместо AWS...
[15:15:37] <ada_ru> (budden73)  отвечает (Максим) на <Управление идет на у…>
И что дальше? Дальше уничтожаем этот пул? Или для каждого пула может быть своя реализация управления памятью?
[15:16:18] <ada_ru> (budden73) Зачем нужно GC я не стану обосновывать, просто обратите внимание, что в самых популярных языках (Java, JS, Python, Perl, Go) он есть, или хотя бы есть подсчёт ссылок.
[15:16:51] <ada_ru> (budden73) GC делает программы надёжнее и создание их проще. Единственное, с чем у него плохо - это с реальным временем.
[15:17:06] <ada_ru> (budden73) Именно для этих случаев и нужно сочетание явного и автоматического управления памятью.
[15:17:15] <ada_ru> (Максим)  отвечает (budden73) на <И что дальше? Дальше…>
Пул дальше следит за объектами и уничтожает их, когда к ним нет ссылок. Сам пул остается вечно
[15:17:19] <ada_ru> (I_vlxy_I)  отвечает (budden73) на <Зачем нужно GC я не …>
Для подсчета ссылок не нужна поддержка со стороны языка
[15:17:40] <ada_ru> (budden73) Я спрашиваю не про язык, а про реализации.
[15:17:52] <ada_ru> (budden73) На самом деле языки с ГЦ отличаются. Например, в Обероне нет деструкторов.
[15:17:57] <ada_ru> (I_vlxy_I) Точнее - она не обязательна
[15:18:07] <ada_ru> (budden73) В языке с подсчётом ссылок деструкторы могут быть.
[15:18:24] <ada_ru> (Максим)  отвечает (Максим) на <Пул дальше следит за…>
Хотя в Ада 2012 можно делать subpool-ы и уничтожать всё их содержимое
[15:18:28] <ada_ru> (I_vlxy_I)  отвечает (budden73) на <На самом деле языки …>
Деструкторов почти нигде нет. Вне зависимости от того ест. Гц или его нет.
[15:18:42] <ada_ru> (budden73) C++ - это "ничто"?
[15:19:06] <ada_ru> (I_vlxy_I)  отвечает (budden73) на <C++ - это "ничто"?>
Да. Это исключение. Фишка именно этого языка.
[15:19:37] <ada_ru> (I_vlxy_I) Это меня конечно печалит, что в других ЯП этого нет. Но я держусь.
[15:20:05] <ada_ru> (budden73)  отвечает (Максим) на <Хотя в Ада 2012 можн…>
А следит он за счёт сборки мусора, подсчёта ссылок или это можно задать самому?
[15:20:09] <ada_ru> (Максим) google выдает https://github.com/ytomino/boehmgc-ada Хотя я его не пробовал, но смотрел другие реализации
[15:20:15] <ada_ru> (budden73)  отвечает (I_vlxy_I) на <Это меня конечно печ…>
В Расте тоже есть деструкторы
[15:20:35] <ada_ru> (budden73) boehm gc это консервативный сборщик мусора, игрушка.
[15:21:10] <ada_ru> (budden73) Я уж не говорю про Дельфи - там тоже деструкторы
[15:21:17] <ada_ru> (I_vlxy_I)  отвечает (budden73) на <В Расте тоже есть де…>
Там не совсем деструкторы, но да, языки которые вдохновлены  были C++, часто стараются реализовывать подобный механизм. Модно ещё D вспомнить (там, кстати, есть GC)
[15:23:08] <ada_ru> (Максим)  отвечает (budden73) на <А следит он за счёт …>
Storage Pool предоставляет такие операции, как Allocate/Deallocate, которые использует компилятор. GC версия storage pool их переопределяет и сама следит за объектами и удаляет их. Подсчет ссылок делается через другой механизм - контролирруемые типы, где для каждого объекта нужно написать свою функцию Initialize/FInalize/Adjust
[15:24:06] <ada_ru> (budden73) Ага, т.е. мы пишем Deallocate, но GC версия его просто игнорирует и вместо этого удаляет сама, когда нет ссылок. Так?
[15:24:18] <ada_ru> (budden73) (и если мы не пишем Deallocate, то происходит то же самое)
[15:25:51] <ada_ru> (Максим) да
[15:26:26] <ada_ru> (budden73) понял, спасибо. Хотел бы задать ещё один вопрос полиглотам.
[15:26:27] <ada_ru> (Максим) Deallocate используется компилятором, когда мы вызываем Ada.Unchecked_Deallocation
[15:26:48] <ada_ru> (Максим) Есть интересная библиотека https://sourceforge.net/projects/deepend/ на тему пулов памяти
[15:27:13] <ada_ru> (budden73) Аду критикуют за чрезмерную сложность. Насколько эта критика выглядит обоснованной в наше время?
[15:28:30] <ada_ru> (Максим) я пробовал сравнивать по размеру руководств по языку. В Аде оно не больше чем в C++, гораздо меньше SQL, например
[15:29:22] <ada_ru> (Максим) Компилятор Ады сложно реализовать, а вот пользоваться языком, мне кажется не сложно
[15:29:29] <ada_ru> (budden73) Читаю вот это:
[15:29:30] <ada_ru> (budden73) https://www.ada-ru.org/Lovelace/s12s6.htm
[15:29:33] <ada_ru> (budden73) И вижу:
[15:29:47] <ada_ru> (budden73) Стандарт Ada требует обязательного наличия процедуры Unchecked_Deallocation, которая просто ничего не делает, если присутствует автоматическая сборка. Если Вы используете Ada-компилятор без автоматической сборки мусора (а таких большинство) и Вас волнует вопрос некорректного освобождения памяти, изучите возможные варианты использования Unchecked_Deallocation.
[15:29:50] <ada_ru> (Максим) Но я не полиглот 😕 Я только в Аду
[15:30:55] <ada_ru> (budden73) Т.е. это как будет на практике выглядеть: мы знаем, что ГЦ никогда не бывает, нагружаем unchecked_deallocation каким-то смыслом (и он становится самым настоящим деструктором), потом вдруг захотим воспользовать ГЦ и оказывается, что нужно менять логику из-за того, что Unchecked_Deallocation нужно сделать пустой. Правильно я понимаю сценарий?
[15:31:54] <ada_ru> (budden73) Я на самом деле это спрашиваю по той причине, что по GC проходит резкая граница по надёжности: проблемы утечки памяти и double free резко менее вероятны в языках с GC.
[15:32:08] <ada_ru> (Максим) ГЦ просто будет игнорировать вызовы Unchecked_Deallocation или использовать их как подсказку
[15:32:39] <ada_ru> (budden73) А если в них уже есть какая-то нужная логика, то ведь эта логика пропадёт в случае использования ГЦ?
[15:32:44] <ada_ru> (Максим) В реальных проектах на Аде я нигде не видел ГЦ
[15:33:02] <ada_ru> (budden73) А проблемы с double free и утечками попадались?
[15:33:16] <ada_ru> (FROL256) »> Я на самом деле это спрашиваю по той причине, что по GC проходит резкая граница по надёжности: проблемы утечки памяти и double free резко менее вероятны в языках с GC.
[15:33:24] <ada_ru> (FROL256) да ладно
[15:33:26] <ada_ru> (Максим) Да, но какая "нужная" логика может быть в освобождении памяти
[15:33:33] <ada_ru> (FROL256) особенно если ресурс какой-нибудь системный зитрый
[15:33:40] <ada_ru> (FROL256) с которым работает библиотека на C++
[15:33:42] <ada_ru> (Максим)  отвечает (budden73) на <А проблемы с double …>
О да 😄
[15:33:59] <ada_ru> (budden73) Не знаю, например, в обероне я видел, что там закрывают файлы в финализации, хотя это не Unchecked_Deallocate.
[15:34:06] <ada_ru> (Максим) В GPS этого добра со всех сторон
[15:34:15] <ada_ru> (budden73) В С++ это будет деструктор, там часто бывает логика
[15:34:29] <ada_ru> (budden73) А ещё есть use after free
[15:34:33] <ada_ru> (budden73) Самое плохое, наверное
[15:34:40] <ada_ru> (FROL256) всё это "лучше" про языки со сборкой мусора неправда когда дело доходит до промышленных проектов, в которых хочешь не хочешь нужно взаимодействовать с кучей существующих модулей
[15:35:21] <ada_ru> (budden73) Да, если нужно прилинковать программу на Си, то надёжность падает до надёжности программы на Си, а диагностика становится хуже, чем в случае программы на Си
[15:35:37] <ada_ru> (FROL256) скорее становится хуже, потому что вы не знаете когда ресурс в действительности освободится а программисты перестают думать что аппаратный девайс вообще-то нужно освобождать явно
[15:35:53] <ada_ru> (budden73) Но если рантайм с GC - это "вещь в себе", то его надёжность высока
[15:36:00] <ada_ru> (Максим) В Аде деструктору юольше соответствует процедура Finalization у Controlled объектов. Она, по идее, вызывается независимо от GC
[15:37:24] <ada_ru> (budden73) Ладно, понял, что надо мне подучить немного матчасть.
[15:37:45] <ada_ru> (budden73) Спасибо за ответы! Я с адой не имел дело, но некоторые вещи в ней издалека выглядят очень правильными.
[15:37:49] <ada_ru> (budden73) Судя просто по обзорным книжкам
[15:38:29] <ada_ru> (budden73) Хотя в книжке, к-рую читал (она довольно старая) мне не понравилось, что на тот момент не было в языке средств, дающих надёжную работу с памятью без use after free.
[15:38:49] <ada_ru> (Максим) Т.е. если ты сделаешь Unchecked_Deallocation, то вызовется Finalization, если он объявлен, а GC потом когда-нибудь соберет мусор
[15:39:44] <ada_ru> (budden73) Ну вот это как раз выглядит правильным
[15:40:16] <ada_ru> (FROL256) а ещё про безопасность с памятю с GC расскажу любимою историю, как я отлаживал приложение заказчика, в который они интегрировали наш API .... вот такая история значит, апи лоу-левел, традиционно для графики:
[15:40:20] <ada_ru> (FROL256) SetPointer, SetPointer, SetPointer ... а потом ReadFromPointers.
[15:40:27] <ada_ru> (FROL256) И вот значит компания-заказчика интегрирует это в C# ...
[15:40:34] <ada_ru> (FROL256) Ставят они поинтеры
[15:40:43] <ada_ru> (FROL256) потом запускают функцию ReadFromPointers.
[15:41:02] <ada_ru> (FROL256) и вот во время работы ReadFromPointers.
[15:41:11] <ada_ru> (FROL256) сборщик мусора начинает внезапно перемещать массивы
[15:41:18] <ada_ru> (FROL256) на которые были установлены поинтеры
[15:41:22] <ada_ru> (budden73) Нууууу
[15:41:30] <ada_ru> (FROL256) причём воспроизводилось это супер редко
[15:41:34] <ada_ru> (budden73) Это просто они как-то неграмотно написали
[15:41:40] <ada_ru> (FROL256) это не нуу, это реальная жизнь со сборщиком мусора
[15:41:45] <ada_ru> (FROL256) конечно неграмотно
[15:41:51] <ada_ru> (budden73) Не прочитали мануал
[15:41:52] <ada_ru> (FROL256) мы проблему нашли, но какой ценой
[15:42:05] <ada_ru> (FROL256) дело не в мануале
[15:42:11] <ada_ru> (budden73) Именно в нём
[15:42:13] <ada_ru> (FROL256) дело в том что они привыкли не думать про память
[15:42:19] <ada_ru> (FROL256) потому сто чборщик мусора
[15:42:27] <ada_ru> (FROL256) стали взаимодействовать с компонентой на C++
[15:42:34] <ada_ru> (budden73) Так надо было при интеграции с другим ЯП читать мануал о том, как это делать.
[15:42:39] <ada_ru> (FROL256) и получили такую проблему что мама не горюй найти её потом
[15:42:48] <ada_ru> (FROL256) это всё понятно что надо было
[15:43:01] <ada_ru> (FROL256) разумеется потом они всё поправили
[15:43:28] <ada_ru> (budden73) Иногда в рантаймах с ЯП предусмотрены средства для борьбы с такими вещами: задержка GC, или запрет на движение определённых объектов. Но всё это нужно знать и не упустить.
[15:43:30] <ada_ru> (budden73) А то потом да.
[15:43:34] <ada_ru> (budden73) Плохо будет
[15:44:03] <ada_ru> (FROL256) да, в шарпе есть, они егопотом в итоге и включили
[15:44:21] <ada_ru> (FROL256) но сам факт — GC не спасает от проблем с памятью автоматически
[15:44:30] <ada_ru> (FROL256) читать документацию — это уже никакая не автоматика
[15:44:34] <ada_ru> (budden73) Ну вот я и говорю - не прочитали мануал. Против не чтения мануала очень трудно что-то сделать. Можно ведь и в автомобиль сесть, не зная ПДД, и ехать по встречной полосе.
[15:44:38] <ada_ru> (FROL256) это грамотно понимать что происходит
[15:44:51] <ada_ru> (budden73) Такая гетерогенная среда - это да, очень плохая ситуация, сам знаю по лиспу
[15:44:59] <ada_ru> (budden73) Практически оказываешься сразу безпомощным
[15:45:32] <ada_ru> (budden73) Поэтому в моём гетерогенном приложении обмен между модулями на разных ЯП шёл через сокеты - я мог себе это позволить :)
[15:45:57] <ada_ru> (budden73) Или уж совсем простые вещи, в которых нет передачи указателей со стороны ГЦ на сторону языка без ГЦ.
[15:46:54] <ada_ru> (FROL256) ну да ... к сожалению (или к счастью) гетерогенность присутствует в очень большом кол-ве проектов
[15:46:59] <ada_ru> (FROL256) втсроенные скрипты
[15:47:02] <ada_ru> (FROL256) шейдеры и гпу
[15:47:15] <ada_ru> (FROL256) гуй непонятно на чём
[15:47:48] <ada_ru> (FROL256) У меня есть надежда потихоньку переползти на Аду благодаря тому что у неё прекрасный интерфейс с цпп
[15:48:32] <ada_ru> (budden73) Ну я наоборот ищу гомогенную среду. Пока в качестве такой вижу Оберон. Аду можно было бы рассматривать, но я - сторонник ГЦ.
[15:48:47] <ada_ru> (budden73) (не просто оберон, а А2)
[15:48:49] <ada_ru> (FROL256) ну дело вкуса ))
[15:49:43] <ada_ru> (budden73) Поэтому и интересуюсь, как в рамках как бы однородной среды (один компилятор, один процесс сборки) могли бы совмещаться ГЦ и детерминированное поведение, свойственное С++
[15:49:47] <ada_ru> (budden73) Пока ответа не нашёл
[15:50:25] <ada_ru> (budden73) Во всяком случае, если система, включающая ГЦ и не-ГЦ, собирается одним и тем же компилятором, есть шансы автоматизировать "чтение руководства" и некоторые вещи отлавливать просто на этапе компиляции
[15:51:01] <ada_ru> (budden73) В принципе, когда-то мне рассказывали о существовании такой системы в рамках лиспа, но я уже вряд ли найду...
[15:51:06] <ada_ru> (budden73) Где-то на comp.lang.lisp
[15:51:25] <ada_ru> (Максим) http://www.enyo.de/fw/software/gnat-gc/
[15:51:52] <ada_ru> (budden73) Ну не, не. Сборщик мусора для Си невозможен.
[15:51:56] <ada_ru> (budden73) Это всё костыли
[15:52:09] <ada_ru> (budden73) Хотя я посмотрю на интерфейс
[15:52:36] <ada_ru> (budden73) Т.е. интерфейс вполне может быть тем, что мне надо, спасибо!
[15:54:52] <ada_ru> (Максим) Еще была статья "Incorporating Precise Garbage Collection in an Ada Compiler", наверное тут ее можно скачать: https://epdf.pub/reliable-software-technologies-ada-europe-2007-12th-ada-europe-international-con.html
[16:21:31] <ada_ru> (I_vlxy_I)  отвечает (budden73) на <В С++ это будет дест…>
Не путай деструктор с delete plz. Unchecked_Deallocation это аналог delete а не деструктора.
[16:23:12] <ada_ru> (budden73) А, я просто не понимаю очень много слов в контексте. Конкретизировать я прочитал как "воплотить", видимо, это было неправильно .
[16:23:32] <ada_ru> (budden73) Т.е. верно, что Unchecked_Deallocation - это процедура, которую представляет реализация языка, а не деструктор, который определяет прикладной программист?
[16:23:50] <ada_ru> (budden73) И т.е. прикладной программист не может изменить её реализацию?
[16:49:03] <ada_ru> (Максим) Да, это стандартная процедура.
[16:49:43] <ada_ru> (Максим) Ты "настраиваешь" ее на нужный ссылочный тип и потом можешь удалять объекты этого типа
[16:49:51] <ada_ru> (iserged)  отвечает (I_vlxy_I) на <Да. Это исключение. …>
В локфри версии активоберон есть подобие деструктора - финализатор объекта, который вызывается автоматически перед утилизацией
[16:50:03] <ada_ru> (budden73) Финализатор - это не деструктор
[16:50:58] <ada_ru> (budden73) Он выполняется в определённом контексте, в неизвестно какое время. Поэтому закрывать файлы или уничтожать ссылки на COM объекты (последнее было сделано в ББЦБ) - это неправильно, ошибка.
[16:51:34] <ada_ru> (budden73) Максимум, что можно сделать - это проверить, что файл не закрыт и уронить программу с диагностическим сообщением.
[17:11:27] <ada_ru> (I_vlxy_I)  отвечает (iserged) на <В локфри версии акти…>
Такое и в жабе есть и в шарпе. Обычное дело. Но лучше таким не пользоваться для RAII если у тебя GC.
[18:05:09] <ada_ru> (Oleg) Во
[18:05:11] <ada_ru> (Oleg) https://m.youtube.com/watch?v=_fTz2D6x20U
[18:05:21] <ada_ru> (Oleg) Давайте таких роботов делать
[18:13:48] <ada_ru> (Oleg) На аде
[18:28:31] <ada_ru> (I_vlxy_I) Аду надо вытаскивать из её текущей ниши я считаю :-)
[18:28:42] <ada_ru> (I_vlxy_I) Нужна массированная экспансия!
[18:29:12] <ada_ru> (Oleg) Завтра начинаю новый проект
[18:29:21] <ada_ru> (Oleg) Опять попробую аду
[18:29:34] <ada_ru> (I_vlxy_I)  отвечает (Oleg) на <Завтра начинаю новый…>
Какой тематики проект?
[18:30:02] <ada_ru> (Oleg) Железо + софт общение по MQTT
[18:30:16] <ada_ru> (Oleg) Мониторинг окружающей среды
[18:30:37] <ada_ru> (Oleg) Погода, осадки, качество воздуха
[18:31:17] <ada_ru> (I_vlxy_I) Норм
[18:40:08] <ada_ru> (Максим)  отвечает (Oleg) на <Завтра начинаю новый…>
Open source?
[18:44:48] <ada_ru> (Oleg) Нет, суровый проприетари за бешеные бабки !!!
[18:44:52] <ada_ru> (Oleg) Шучу
[18:45:07] <ada_ru> (Oleg) Софт то может и опен сурс
[18:45:14] <ada_ru> (Oleg) Железо своё
[18:46:21] <ada_ru> (Oleg) Железо на Renesas RX
[18:46:25] <ada_ru> (I_vlxy_I)  отвечает (Oleg) на <Железо + софт общени…>
Советую вместо mqtt рассмотреть вот это
http://www.mqtt.org/new/wp-content/uploads/2009/06/MQTT-SN_spec_v1.2.pdf
[18:46:54] <ada_ru> (Oleg) Да я там SNMP v3 ещё делаю
[18:47:11] <ada_ru> (Oleg) А это что? Погляжу сейчас
[18:48:26] <ada_ru> (zloidemon)  отвечает (I_vlxy_I) на <Советую вместо mqtt …>
А это разве не MQTT?
[18:48:43] <ada_ru> (zloidemon) И в чём плюсы MQTT-SN Над MQTT
[18:48:56] <ada_ru> (I_vlxy_I)  отвечает (zloidemon) на <А это разве не MQTT?>
Это  mqtt-sn
[18:49:09] <ada_ru> (I_vlxy_I) Полностью бинарное
[18:49:14] <ada_ru> (zloidemon)  отвечает (I_vlxy_I) на <Это  mqtt-sn>
А есть какие-то готовые реализации, которые можно посмотреть?
[18:49:19] <ada_ru> (I_vlxy_I) И легковесное
[18:49:26] <ada_ru> (zloidemon) Я вот думаю что взять в будущем для этого, у меня тысячи железяк
[18:49:37] <ada_ru> (zloidemon) Хочу http убрать в одном месте, что бы была очередь из команд.
[18:49:44] <ada_ru> (I_vlxy_I) И без легаси
[18:50:00] <ada_ru> (I_vlxy_I) Сразу нормально
[18:50:04] <ada_ru> (zloidemon) Хочется что-то вроде kafka с позицией, но без kafka и компактное
[18:50:16] <ada_ru> (Oleg) А он ещё и UDP ?
[18:50:53] <ada_ru> (Oleg) CoAPP
[18:50:58] <ada_ru> (Oleg) Посмотрите
[18:51:11] <ada_ru> (Oleg) Ой
[18:51:23] <ada_ru> (Oleg) Только CoAP
[18:51:37] <ada_ru> (zloidemon)  отвечает (Oleg) на <Только CoAP>
Спасибо
[18:51:55] <ada_ru> (I_vlxy_I) UDP вроде тоже
[18:52:02] <ada_ru> (I_vlxy_I) Если sn
[18:52:08] <ada_ru> (zloidemon) Да надо что-то простенькое и удобное
[18:52:13] <ada_ru> (Oleg) Да
[18:52:22] <ada_ru> (Oleg) CoAP хорош
[18:52:33] <ada_ru> (zloidemon) Я уже думал может свой протокол описать на msgpack который будет по разным транспортам ходить
[18:52:36] <ada_ru> (Oleg) Он простой как бревно но есть и шифрование
[18:53:13] <ada_ru> (Oleg) Давайте запилим с боекджеком и падшими женщинами
[18:53:52] <ada_ru> (Oleg) Я могу низкий уровень и шифрование осилить
[18:54:21] <ada_ru> (zloidemon) CoAP integrates with XML, JSON, CBOR, or any data format of your choice.
[18:54:33] <ada_ru> (zloidemon) Мне кажется это как-то перебор, особенно xml
[18:55:11] <ada_ru> (Oleg) :-) xml кстати местами все ещё во всю используется так как там есть схемы
[18:55:22] <ada_ru> (zloidemon) Oleg а там есть какие-то готовые ноды, типа rabbitmq/kafka Для этого протокола?
[18:55:29] <ada_ru> (Oleg) Есть
[18:55:36] <ada_ru> (zloidemon)  отвечает (Oleg) на <:-) xml кстати места…>
ДА это понятно, в телекоме вообще везде один xml
[18:55:43] <ada_ru> (Oleg) Даже что-то на Go было
[18:56:05] <ada_ru> (Oleg) На телефоне 7 процентов - поищу попозже скину ссылки
[18:56:20] <ada_ru> (zloidemon)  отвечает (Oleg) на <Даже что-то на Go бы…>
Я скорей питон возьму чем go 😊 У нас в основном всё на нём, и делать фрагментацию и потом ещё людей нанимать что бы это чинили нахер надо
[18:56:30] <ada_ru> (zloidemon)  отвечает (Oleg) на <На телефоне 7 процен…>
До связи
[18:56:58] <ada_ru> (Oleg) Ну на питоне его можно за пару вечеров по индийский слабать
[19:04:56] <ada_ru> (I_vlxy_I) mqtt-sn хорош тем, что его легко реализовать на чем угодно (что хорошо умеет работать с бинарями) и минимум энергии жрет
[19:05:03] <ada_ru> (I_vlxy_I) ибо не нужно парсить всякое сложное типа xml
[19:05:10] <ada_ru> (I_vlxy_I) ну и компактней оно
[19:05:29] <ada_ru> (I_vlxy_I) ну и с инфраструктурой большого mqtt оно стакается вполне
[19:27:34] <ada_ru> (I_vlxy_I) можно сделать реализацию mqtt-sn на SPARK'e 🙂
[20:14:41] <ada_ru> (Oleg) Роботы для российского рынка
[20:14:45] <ada_ru> (Oleg) https://www.importitall.co.za/HUIBOT-80S-Robotic-Vacuum-Cleaner-for-Pets-Hair-and-Mop-with-Strong-Suction-for-Hardwood-Tile-and-Low-Pile-Car-ap-B075V7LLGC.html
[20:14:53] <ada_ru> (Oleg) Самое то мне кажется
[20:16:38] <ada_ru> (Максим) У меня румба. уже второй по счёту
[20:17:12] <ada_ru> (Oleg) https://github.com/Tanganelli/CoAPthon3/blob/master/coapserver.py
[20:17:21] <ada_ru> (Oleg) Вот посмотреть надо