
Ievgenii
07.01.2018
17:07:24
Но вариантов не много...
Я бы докер использовал для таких целей

Dmitry
07.01.2018
17:09:00

Google

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

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

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
это вроде сравнительно недавняя штука, раньше не было

Ievgenii
07.01.2018
17:18:59

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

Ievgenii
07.01.2018
21:51:44

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
А чего не использовать стандартный алокатор? Как он там 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 для объекта
то есть в конструкторе структуры создаю обьект и в деструкторе освобождаю. полный детерминизм

Ievgenii
07.01.2018
22:32:30

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
Может он бы и начал ограничивать потом память

Evgeny
08.01.2018
07:19:04

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

Igor
08.01.2018
08:30:57
да

Evgeny
08.01.2018
09:48:42
Даже если есть пустые пулы. Или нет?

Igor
08.01.2018
09:51:36
есть вызов minimize
https://dlang.org/phobos/core_memory.html#.GC.minimize
и он конечно как-то работает

Evgeny
08.01.2018
09:54:21

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