
Dark
21.04.2018
13:34:40
Да, а что ты хотел?
Это же не ролки, которые блокируются до ответа оппонента

Pavel
21.04.2018
13:37:06
Это все сложная тема и она не имеет особо отношения к однопоточному getUpdates. Благодаря вайбу там ничего не блокируется, можно синхронизировать мьютексом а можно нет. Можно хоть 1000 тасков создать и сидеть обслуживать 1000 ботов в одном потоке. Все как захотите.
А вопрос на какое сообщение отвечать юзеру если он их 20 послал это уже на совести приложения

Google

Denis
21.04.2018
13:38:11
https://habrahabr.ru/post/317666/ вот как тут чтоб вжух

Pavel
21.04.2018
13:38:36
Как минимум у update есть всегда возрастающий id, можешь по нему сортировать.

Denis
21.04.2018
13:50:28
млять, оказывается code.dlang.org возвращает не время когда оно само узнало о пакете, а время когда пакет был зарелизен
т.е. можно старый пакет там зарегать и о нём никто не узнает - он всегда будет в конце списка

Dark
21.04.2018
13:52:12
Не баг, а фича

Denis
21.04.2018
13:52:34
странная фича. выходит, придётся в боте хранить весь реестр и сравнивать новое со старым

Dark
21.04.2018
13:52:59
Ну да

Denis
21.04.2018
13:54:10
ладно завтра запилю
core.exception.AssertError@../../.dub/packages/eventcore-0.8.34/eventcore/source/eventcore/drivers/posix/driver.d(333): Clearing referenced file descriptor slot.
мля а это ещё что за

Dark
21.04.2018
14:02:39
А где инструкция про eventcore?
Я ее не нашел

Ned Ogl
21.04.2018
14:06:51
Народ, как в Ди делается синглтон? Пробовал по аналогии с С++, но всё равно допускаются объявления переменных этого типа.

Google

Pavel
21.04.2018
14:07:25
Которое само ядро для vibe.d

Denis
21.04.2018
14:08:00

Pavel
21.04.2018
14:08:12
Который ядро для telega, которая ядро для телегоботов

Ned Ogl
21.04.2018
14:08:57

Denis
21.04.2018
14:09:12
??
Антипаттерн это по современным понятиям.
Нинужен.

Pavel
21.04.2018
14:09:22
Разве?
Я щас получил письмо, отрицательный chatId это группа

Denis
21.04.2018
14:09:38

Pavel
21.04.2018
14:10:06
У них такое разделение, все группы <0 а юзеры >0

Pavel
21.04.2018
14:10:19

Denis
21.04.2018
14:10:20
ясненько

Pavel
21.04.2018
14:11:04
Подсунуть единственный объект туда, где ожидаются разные.
Что-то такое было у меня когда-то. Подробности засыпало песком времени.

Denis
21.04.2018
14:11:57
Примерно понятно.

Dark
21.04.2018
14:14:13

Denis
21.04.2018
14:14:43
почему в вк и в телеграме одинаковые картинки официальных человечков?
как так вышло?

Dark
21.04.2018
14:14:52

Google

Dark
21.04.2018
14:15:14
Спотти что ли?

Ned Ogl
21.04.2018
14:16:19

Denis
21.04.2018
14:16:48
https://telegram.org/ которые тут внизу нарисованы в кругах серых

Dark
21.04.2018
14:17:19
Можешь скрин?) Все сейчас заблочено, а у меня на браузере нет прокси

Denis
21.04.2018
14:17:26
https://wiki.dlang.org/Low-Lock_Singleton_Pattern не оно?

Dark
21.04.2018
14:19:04
Дизайнер, наверн, один и тот же

Stanislav
21.04.2018
14:19:34
и собакирен тоже одинаковый
идея дурова наверн

Denis
21.04.2018
14:19:38
вот вот

Dark
21.04.2018
14:20:24
Или все таки Дуров спиздел

Глеб
21.04.2018
14:20:52
про синглетон у меня есть заметка в блокноте, откуда взял, не помню. надо?

Dark
21.04.2018
14:22:11
Кстати, а как классы в betterC юзать? Слышал что-то про кастомные аллокаторы, но точно не видел

Stanislav
21.04.2018
14:25:09
а разве в беттерси есть классы?

Dark
21.04.2018
14:25:33
А разве нет?
Там только GC нет, а классы нужно аллоцировать

Stanislav
21.04.2018
14:25:58
https://dlang.org/spec/betterc.html

Google

Stanislav
21.04.2018
14:26:09
D features not available with BetterC:
Classes

Dark
21.04.2018
14:27:20
._.

Oleg
21.04.2018
14:27:22
@ned_ogl сделай конструктор приватным

Dark
21.04.2018
14:27:24
Жаль

Stanislav
21.04.2018
14:27:38
в книжке александреску вроде был пример синглтона

Oleg
21.04.2018
14:28:11
я не вижу сейчас реальных задач где нужен singleton

Dark
21.04.2018
14:28:58
Классический - да, а вот недосинглтон на статических классах - очень даже нужен местами

Oleg
21.04.2018
14:29:42

Dark
21.04.2018
14:30:09

Admin
ERROR: S client not available

Oleg
21.04.2018
14:30:19
например?

Dark
21.04.2018
14:31:41

Oleg
21.04.2018
14:31:56
не понял
какая консоль?

Dark
21.04.2018
14:32:29
Типа как в JS, Console.Log

Oleg
21.04.2018
14:32:37
ммм, нет
stderr, stdout разные объекты, никто не мешает писать в 10 разных файлов
консоль как частный случай файла
глобальный логгер тоже не может полностью быть singleton, это целая система
и там можно легко защититься от создания экземпляров пользователем за счёт приватности классов и нормального собственного кода

Google

Oleg
21.04.2018
14:37:12
но всё же если на то пошло, то для однопоточной программы можно так делать
auto logger() @property
{
if (_logger is null)
_logger = new Logger();
return _logger;
}
private class Logger
{
...
}
Ну и глобально где-то private Logger _logger;

qwerty
21.04.2018
14:46:15
То есть приватные поля доступны в том модуле, где объявлены

Dark
21.04.2018
14:47:08
Что не очень хорошо, ИМХО

Pavel
21.04.2018
14:47:27
А по моему отличный хак)

qwerty
21.04.2018
14:47:29
Держите нас в курсе)

Pavel
21.04.2018
14:47:53
Еще помимо private есть модификатор package

Ned Ogl
21.04.2018
14:48:22

qwerty
21.04.2018
14:49:27

Ned Ogl
21.04.2018
14:49:29

qwerty
21.04.2018
14:51:06
Код класса покажите пожалуйста через сервис обмена кодом
что-то я не могу понять как вернуть reference на ассоциативный массив, который является полем структуры
test.d(178): Error: cannot implicitly convert expression this.combinations of type const(KeyCombination[int]) to KeyCombination[int]
ref KeyCombination[int] getCombinations() const {
return combinations;
}

Oleg
21.04.2018
16:41:16
из const метода

qwerty
21.04.2018
16:41:38
а как вернуть const ref
?

Oleg
21.04.2018
16:41:51
ref const(KeyCombinations[int]) getCombinations() const { .. }
чтобы 2 метода не делать (обычно так на простых типах делаю) можно так написать
ref inout(KeyCombinations[int]) getCombinations() inout { .. }
на сложных не проверял