@dlangru

Страница 374 из 719
Ievgenii
07.01.2018
17:07:24
Но вариантов не много...

Я бы докер использовал для таких целей

Dmitry
07.01.2018
17:09:00
лично я просто субпекеджи делаю в текущем проекте и лью в репу самого проекта.
Ну вот так всякие dlib и получается, где в одном пакете разные совсем либы.

Google
Dmitry
07.01.2018
17:10:16
Иметь разные источники было бы ок, но как-то ведь мы хотим находить библиотеки, какой-то единый реестр удобно иметь? Все равно он тогда будет засираться по мере роста числа либ.

Evgeny
07.01.2018
17:11:13
Ну вот так всякие dlib и получается, где в одном пакете разные совсем либы.
Ну я же свои проекты не пихаю в общий реестр. Я вообще-то рассказал, как лично я выкручиваюсь в коммерческих проектах.

Когда каждый день по три очередных бложика пихаются в реестр - это печально.

Dmitry
07.01.2018
17:12:18
Просто нужны механизмы ранжирования и сужения поиска. Этим уже озаботились, со временем сделают.

Evgeny
07.01.2018
17:12:54
Наверное npm рекордсмен по количеству заброшенных говнолиб в реестре

Говорят в гошечке такой же треш творится

Dmitry
07.01.2018
17:14:06
В гошечке нет своего даба вроде как

Там вообще прямые ссылки на гитхаб мастер были

У них там свой трэш творился

Evgeny
07.01.2018
17:15:37
а это гоферы не котируют? https://github.com/golang/dep

Dmitry
07.01.2018
17:16:02
это вроде сравнительно недавняя штука, раньше не было

Google
Ievgenii
07.01.2018
17:19:21
Для примера apt

Я придумал решение))))

Менять хосты и делать свой сервер пакетов)))

Тех пакетов что нет - пробрасывать запрос на оригинальный сервер

Гы)))

Тот ещё костыль)))

Кто пишет микросервисы, как вы осуществляете IPC между ними? Если несколько серверов?

Неа?

Жалко :(

Igor
07.01.2018
21:46:56
заставила жизнь попробовать std.experimental.allocator… пока счастлив

то что “текло” - не течет

Ievgenii
07.01.2018
21:49:15
В смысле сам аыделяешь и удаляешь память под свои объекты?

Stepanos
07.01.2018
21:49:16
просто надо норм категории допилить, поиск, рейтинговую систему и будет ок

Ievgenii
07.01.2018
21:50:09
Igor
07.01.2018
21:51:03
В смысле сам аыделяешь и удаляешь память под свои объекты?
сам, но через IAllocator, без возни с malloc,emplace,addRange

Ievgenii
07.01.2018
21:51:44
сам, но через IAllocator, без возни с malloc,emplace,addRange
А в чем там разница? Я не в курсе

Igor
07.01.2018
21:53:09
разница в том что через IAllocator это делается в две строки и без собственного кода

вместо auto a = new B(); пишешь allocator = allocatorObject(Mallocator()); auto a = allocator.make!B(); и вуаля, ты работаешь через malloc

а не с GC

Google
Ievgenii
07.01.2018
22:01:15
вместо auto a = new B(); пишешь allocator = allocatorObject(Mallocator()); auto a = allocator.make!B(); и вуаля, ты работаешь через malloc
Тоесть не вычитываешь сколько тебе нужно выделять памяти и реально ее сам не выделяешь?

А чего не использовать стандартный алокатор? Как он там theAlocstor

Кажется так

Igor
07.01.2018
22:02:18
а стандартный где выделяет?

Ievgenii
07.01.2018
22:05:00
Не знаю

Просто увидел, что ты свой декларируешь, решил уточнить

Igor
07.01.2018
22:06:28
ну я думаю что стандартный выделяет в области GC, а я там не хочу

Ievgenii
07.01.2018
22:08:53
Правда начинается пляски, а когда этот объект удалять то)

И массивы тоже через свой алокатор гонишь?

Igor
07.01.2018
22:27:51
у меня ссылка на этот обьект из refcount структуры, я в её деструкторе вызываю dispose для объекта

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

Igor
07.01.2018
22:36:52
ну представь структура с RC это дескриптор сокеты, а обьект который нужен это некие данные которые нужны в виде класса для этой сокеты.

Ievgenii
07.01.2018
22:39:34
А разве структура не сдохнет при выходе из скопа?

Или ты не в куче создаёшь?

Igor
07.01.2018
22:41:02
сдохнет когда счетчик ссылок на нею обнулится

Ievgenii
07.01.2018
22:43:04
сдохнет когда счетчик ссылок на нею обнулится
Это какая-то стандартная структура?

theAllocator.make!T;

Google
Ievgenii
07.01.2018
22:43:18
Деструктор не вызывается

Значит не в СМ создает

Igor
07.01.2018
22:44:25
https://dlang.org/phobos/std_experimental_allocator.html

https://gist.github.com/anonymous/271e21408e4567becd527f55983eb4f9

Ievgenii
07.01.2018
22:48:05
Не, я о этой RC структуре имел ввиду

Где о ней можно почитать?

Или это самописное что-то?

Igor
07.01.2018
22:49:28
не это RefCounted изstd.typecons

Ievgenii
07.01.2018
22:50:14
Спасибо, сейчас почитаю

Stepanos
07.01.2018
23:46:07
блин я тут на канале в 10 раз больше знаний получил чем в книгах по D))

Admin
ERROR: S client not available

Pavel
07.01.2018
23:50:39
Именно так оно и работает. Телеграм это ценнейший источник актуальных знаний

Ievgenii
08.01.2018
00:02:52
Все равно не понял, как тот RC структура работает.

Она же удаляется при выходе из скопа

В чем прикол....

Ned Ogl
08.01.2018
01:48:22
то что “текло” - не течет
Чем проверяешь на течь?

Igor
08.01.2018
05:37:13
Не течь, а "течь". Смотрел top-ом на размер rss

Evgeny
08.01.2018
05:37:29
В чем прикол....
внутри счетчик ссылок

при копировании увеличивается, при деструкции уменьшается. Как только счетчик становится нулем уничтожается сам объект.

точнее говоря внутри структуры указатель на кусок памяти, выделенный аллокатором (не ГЦ). В этом куске лежит объект и счетчик. Счетчик фактически считает сколько в приложении на данный момент есть копий этих структур с указателем.

Google
Evgeny
08.01.2018
05:44:32
если после очпредной деструкции (выход из скопа) счетчик обнулился, значит больше нет ссылок на выделенный объект, а значит он больше не нужен и уничтожается.

тут вот более общая инфа https://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%B4%D1%81%D1%87%D1%91%D1%82_%D1%81%D1%81%D1%8B%D0%BB%D0%BE%D0%BA

Igor
08.01.2018
06:00:10
Пухло в памяти. Я не говорил что текло по настоящему. Теперь не пухнет,

Evgeny
08.01.2018
06:14:54
Просто создание классов в ГЦ ты заменил на RC?

Igor
08.01.2018
07:17:40
Ну, по-моему, это как раз и есть по-настоящему.
Не соасем. Gc просто не видел пока повода запуститтся и почистить. Это было вид но профайлером.

Может он бы и начал ограничивать потом память

Igor
08.01.2018
07:21:28
Не пробовал, могу позже попробовать

в общем картина понятная: gc использует всю свою память пока не упирается в свой какой-то предел если не вызываешь GC.collect(). Всё это время растёт обьем dirty pages. Когда дошел до предела - начинает чистить и всё стабилизируется. Так-же стабилизируется если вызываешь GC.collect()

если использовать mallocator то память gc не используется совсем и diry pages нету.

при этом разница обьемов для этого синтетического теста - 40к и 800к

Dmitry
08.01.2018
08:30:35
Не соасем. Gc просто не видел пока повода запуститтся и почистить. Это было вид но профайлером.
GC запускается, когда в текущем пуле нет свободной памяти. А один пул это несколько мегов. Пока он не заполнится, сборки не будет.

Igor
08.01.2018
08:30:57
да

Igor
08.01.2018
09:51:36
есть вызов minimize

https://dlang.org/phobos/core_memory.html#.GC.minimize

и он конечно как-то работает

Evgeny
08.01.2018
09:54:21
https://dlang.org/phobos/core_memory.html#.GC.minimize
ну он ничего не гарантирует. Я пробовал и мне не удавалось уменьшить потребляемую память.

Igor
08.01.2018
09:54:42
естественно…

Страница 374 из 719