Pavel
И никто ничо не забудет. Если не будет как мудак передавать объект, обёрнутый в шаред, по ссылке.
Vsevolod
объект, а не сам поинтер
Anonymous
Ребята, нуженли изучать STL ?
Anonymous
Или QT x
Pavel
если ты передаешь зачем-то shared pointer по значению, то ты ССЗБ
а зачем тогда вообще делать shared_ptr, если везде его передавать по ссылке?
Vsevolod
если нужно делать shared ownership, конечно
Vsevolod
это обычно фаза инициализации
Pavel
если нужно делать shared ownership, конечно
а если не нужно? мы кажется как раз этот случай и обсуждаем, нет?
Vsevolod
тогда unique_ptr
Vsevolod
а почему нет?
Vsevolod
вот есть, скажем, синглтон логгера
Vsevolod
и есть возможность, скажем, переконфигурации этого логгера
Vsevolod
типичный пример, когда вполне себе shared ownership - нужно дать тем, кто пишет, дописать в старый логгер, а потом захватить новый
Vsevolod
у меня в сишечке есть "синглтон" конфига, который тоже управляется рефканутером
Vsevolod
так как этот конфиг может перезагружаться, и нужно как минимум иметь fallback на старый, если перезагрузка прошла неудачно
Vsevolod
ведь синглтон - это необязательно глобальная переменная, это объект, существующий в единственном экземпляре при нормальной работе
Vsevolod
ну, я это делал сигналами. по сигналу да, освобождается старый рефкаунтер и захватывается новый
Pavel
а не получится ли так, что он никогда не освободится?
Pavel
как за этим следить?
Pavel
ну вобщем ладно. в эти дебри я уже залазить не хочу )
Vsevolod
дебагом, валгриндом и Б-жьей помощью, как еще.
Vsevolod
в c++ есть RAII :)
MT Radio
дебагом, валгриндом и Б-жьей помощью, как еще.
хххх ) имхо чем меньше неявных зависимостей (например, влияния на выходные параметры функции чего-то кроме того, что перечислено во входных), тем лучше ) трудно представить, где синглтон реально нужен, и тем более, где его надо пересоздавать контроллируя, чтобы в один момент времени не было двух объектов
Pavel
жаль я так говорить не умею
Timothy
"дописать в старый, захватить новый" - это похоже на ротацию лога, только с синглтонами тут имхо всё плохо - в идеальном мире синглтон один - это ваш app
MT Radio
вообще, очень у вас уютный чатик, крутотень
🐙 Antony
ведь синглтон - это необязательно глобальная переменная, это объект, существующий в единственном экземпляре при нормальной работе
Посмотрите вот на эту библиотеку: https://github.com/boost-experimental/di возможно что это то что вам нужно
Vsevolod
@antoshkka у меня все равно не c++, а переводить 200k+ LoC проект на c++ у меня все-таки в обозримых планах нет, потому что не очень понятно, какой от этого толк
🐙 Antony
Можно 200к+ првератить в 100к :)
🐙 Antony
если повезёт
🐙 Antony
*если очень сильно повезёт
Vsevolod
ну, если на это уйдет полгода моей работы, то профита с этого все равно немного. лучше уж переводить больше на lua
Timothy
ну, я про то, что ротация лога - это точно не должно волновать клиента - у клиента как был так и должен остаться старый "интерфейс" на уровне макроса + вызов "функции", а то что оно внутри там ротирует / создает - это его не касается, соотв. нет проблем для клиента с shared_ptr / синглтонами и т.п.
Timothy
т.е. такой проблемы быть не должно, по-идее
Vsevolod
дело в том, что любой перевод - это очень большая задача с нулевым видимым выхлопом
Vsevolod
если писать новые фичи на lua, то это не перевод, конечно
Berkus
мне очень нравится, как оно в Poco реализовано
поко довольно бажная говнолиба, а что тебе там в ней нравится?
Vsevolod
а писать новые фичи на c++ - это вообще декаданс какой-то, потому что придется костылями и матюками этот c++ прибивать к сишке
Vsevolod
ниши разные
Vsevolod
а в случае c++/c ниша одна - low level core
Vsevolod
так мне придется из сишки этот раст звать, что не работает же вообще никак
Alexander "SonnySlave"
Alexander "SonnySlave"
надо скоро будет беркуса от растишки лечить
MT Radio
поко довольно бажная говнолиба, а что тебе там в ней нравится?
мне в ней нравится то, что с нею у меня реализация рестов и прочего занимает 15 минут. Мне нравится, как оформлен и документирован ее код. Мне нравится ее архитектура, это сишный код, написанный очень понятно.
MT Radio
не считаю ее бажной говнолибой, хотя и бОльшая часть того, что там есть, пересекается с бустом,а уже и стандартом, и морально не имеет смысла
MT Radio
под имплементацией рестов я имею ввиду: удобный сервер, удобные запросы, весь геморрой низкого уровня взять на себя: если вдруг мне к сишному процессу понадобилось прикрутить веб интерфейс, оно делается быстро и работает хорошо. + и не надо нырять в веб-кухню, в которую я нырять не хочу
MT Radio
и к теме логгера: у них он сделан удобно и красиво. И даже если нельзя просто так взять и использовать их, можно посмотреть, как оно там сделано.
MT Radio
вот кстати этого не хватает Boost. Beast предоставляет низкоуровневый интерфейс, а вот высокоуровнего изкоробочного нет
да, к примеру, в их логгер уде входят все мыслимые и немыслимые возможности. Там и ротация лог-файлов по размеру, по дате, по наличию Марса в Козероге, параллельный вывод куда угодно, можно отдельным процессом, можно инпроц и проч.. Прям берешь готовый солюшн и руки радуются. Особенно учитывая, что в него приятно смотреть.
MT Radio
но в целом, если не надо веб к проекту прикручивать, то поко слишком тяжеловесно для всех своих других радостей
MT Radio
это всё есть и в spdlog искаропки
да, ради логгера оно тяжелое
Stanislav
это всё есть и в spdlog искаропки
вот его бы распилили из хедеров на норм библиотеку чтоли, а то утомляет ждать когда соберется :/
Alexander "SonnySlave"
Alexander "SonnySlave"
просто хотят хедеров закинуть и работать
MT Radio
это всё есть и в spdlog искаропки
там базовая MIT лицензия. У поко — бустовая лицензия. Это может быть реал маттер
Alexander "SonnySlave"
а всё потому, что пакетного менджера нет
Alexander "SonnySlave"
вот как это всё дело будет в пакетном менеджере валяться - совсем другое дело будет
Alexander "SonnySlave"
не помню, есть ли spdlog в Conan
Alexander "SonnySlave"
Poco точно есть
Berkus
бустовая чуть лучше, и всё
Berkus
но на практике - пофигу
MT Radio
никакой разницы же
разница как минимум в том, что это разные лицензии. Вне пределов СНГ разница существенна.
Berkus
Poco точно есть
поко компилит либы без lto, а значит хуй тебе а не оптимизация. от spdlog почти ничего не остается после сборки
Berkus
давай расскажи мне про лицензии ещё
MT Radio
к примеру, у нас есть легал отдел, и бустовые лицензии к использованию разрешены, за другими — запрос в головной отдел
Alexander "SonnySlave"
Berkus
херню рассказал так то
MT Radio
херню рассказал так то
рассказал, как есть. Запрос — аппрув и прочая — целая история. И не факт, что зааппрувят
Alexander "SonnySlave"
ну если ты идёшь и просишь GPL, то это одно дело