
Ievgenii
27.09.2017
06:02:51
Или просто при наполнении объекта, на первом этапе, подпишишься на его событие изменения и в этом случаи сам перезапишишь его в хранилище
Но уж точно это должен делать не сам объект конфига

Evil
27.09.2017
06:23:07
О, умные мысли. Ща прочту :) А пока заценитие, как индусы пишут. Вот это я пытаюсь заменить полностью сейчас.

Google

Evil
27.09.2017
06:23:23
Т.е. это в прямом смысле индусы)

Dmitry
27.09.2017
06:39:09
А что не так то? Код вроде нормальный

Maxim
27.09.2017
06:43:04
ну если опустить общее «а чего тут происходит?», то как минимум два идентичных catch)

Evil
27.09.2017
06:44:36
Мне больше нравится передача в метод и возврат текущего значения, если за каким-то хуем его в базе не оказалось.
Еще ужасно веселит на каждый чих проверка наличия файла с базой. Как будто он внезапно может пропасть после запуска программы.
Ну а за sql вставки по всему проекту пора отламывать по одному пальцу.
Для того и пишу сейчас слой абстракции.
Осталось доделать добавление новых элементов в пофиг при синхронизации с сервером. Но уже придумал как. Красота выходит


Ievgenii
27.09.2017
06:59:29

Evil
27.09.2017
07:01:51
Не, таки нужно к конфиг передать указатель на абстракцию базы. Т.к. в случае с добавлением элемента хочется это сделать по типу config.add(item)

Google

Dmitry
27.09.2017
07:01:51

Evil
27.09.2017
07:02:18

Dmitry
27.09.2017
07:02:21

Maxim
27.09.2017
07:02:24

Dmitry
27.09.2017
07:03:13
А ну да
А разная обработка правильно реализованная как бы выглядела?
Делать разные вещи в зависимости от ошибки?

Maxim
27.09.2017
07:04:27
тут причину и следствие нужно понимать)
если цель просто что-то сделать при любом исключении, то хватит и одного catch, если при разных исключение нужно делать что-то разное, то catch будет несколько)

Evil
27.09.2017
07:05:32

Maxim
27.09.2017
07:06:00
но вообще, что-то сделать при любом исключении — это плохая цель)

Dmitry
27.09.2017
07:06:07
А как без них то? Без сырых запросов
Орм не панацея

Maxim
27.09.2017
07:06:34

Dmitry
27.09.2017
07:06:43

Maxim
27.09.2017
07:07:08
все зависит от приложения
гуд практис — это ловить исключение там, где ты знаешь, что с ним делать
на то они и пробрасываются вверх по стеку

Evil
27.09.2017
07:10:27

Google

Dmitry
27.09.2017
07:10:53
Пока запросы простые

Evil
27.09.2017
07:11:18

Maxim
27.09.2017
07:11:28
в любом случае, лучше делать некую абстракцию над raw SQL

Evil
27.09.2017
07:11:46
Пока запросы простые
Бля, ну вот почему нельзя СРАЗУ работать нормально, а нужно ждать пока усложинится все?)

Dmitry
27.09.2017
07:12:12

Evil
27.09.2017
07:12:31
Тут проект 15 лет писали не пойми кто, а всё для того, чтобы я сейчас сидел и выкидывал всё нахрен.
И не важно, какой язык

Dmitry
27.09.2017
07:13:08
Ок

Maxim
27.09.2017
07:13:09
А есть примеры на Ди как это правильно делать?
да тут дело не в D или каком-то языке, дело в походе: делаешь ограниченное количество сущностей, которые непосредственно разговаривают с базой данных, в остальной программе используешь их
по сути, база — это конкретный способ хранения абстрактных данных

Maxim
27.09.2017
07:14:07
а в программе нужны именно эти абстрактные данные)

Dmitry
27.09.2017
07:14:08
Сущностью будет что?

Maxim
27.09.2017
07:15:05
например что-то, что является объектом манипуляции в программе: список музыкальных файлов, автомобиль в сборе, координаты магазинов на карте
или, например: сущность 1 — координаты магазина, сущность 2 — ассортимент в магазине, сущность 3 — обновлятель ассортимента в магазине)
ну это так, абстрактные рассуждения)

Evil
27.09.2017
07:21:28
В двух словах, Дима, делаешь ORM своими руками.

Maxim
27.09.2017
07:22:15
ну примерно так, имея контроль над сложными запросами и возможность оптимизировать)
дольше труднее, но гибче, везде приходится торговаться)

Google

Dmitry
27.09.2017
11:25:49
Кстати, а можно ли говорить что в Го к примеру полиморфизм есть, если там нет дженериков?

Maxim
27.09.2017
11:33:28
наверное, про это хорошо могут рассказать в чате о Го)

Dmitry
27.09.2017
13:16:15
Юникод в именах функций зло
https://stackoverflow.com/questions/46407831/vibe-d-basic-form-validation

Grigirii
27.09.2017
13:25:43

Dmitry
27.09.2017
13:26:36
ну вот допустим что сount который может считать и количество букв и количество цифр

Grigirii
27.09.2017
13:26:56
превосходно делается через интерфейсы
есть же sort, который может сортировать любые массивы. самый обыкновенный полиморфизм

Evil
28.09.2017
01:27:40

Admin
ERROR: S client not available

Dmitry
28.09.2017
03:46:27
gönderiyiOluştur
А это что

Pavel
28.09.2017
12:09:06
Опять печалька встретилась - https://github.com/dlang/dmd/pull/3611
оказывается нельзя в абстрактном классе абстрактному методу приписать out{} контракт.
Уже тржди года не могут пофиксить!

Anatoly
28.09.2017
12:21:55

Pavel
28.09.2017
12:22:58
Вот когда это будет в чейнджлоге и в deb пакетах, тогда можно считать что пофикшено ;) А пока только возможноый вариант.

Anatoly
28.09.2017
12:23:11
кому нужны deb-пакеты?

Andrey
28.09.2017
12:23:22
меня радуют такие пакеты (:

Anatoly
28.09.2017
12:23:26
я не понимаю такой хомячковости

Pavel
28.09.2017
12:23:33
С 2014 уже висит ПР (

Google

Anatoly
28.09.2017
12:24:01
Уолтеру просто некогда поребейзить это всё счастье
я так понимаю, что в ldc этой проблемы нет?
Хм, везде всё одинаково
gdc/ldc тоже с этим

qwerty
28.09.2017
13:11:38
@chebotarevp когда статья будет? Я не хочу давить, просто ты говорил, что напишешь. Занят сильно?

Pavel
28.09.2017
13:12:03
Я на прошлых выходных выдавил из себя еще одну главу =)

qwerty
28.09.2017
13:12:10
?

Pavel
28.09.2017
13:12:17
Писать нелегко, честно говоря)

qwerty
28.09.2017
13:12:38
я понимаю, прошу прощения, если "достал"

Pavel
28.09.2017
13:12:44
Структурируя в голове все те кучи экспериментов которые я проводил во время контеста.
Ничего страшного, спасибо что пушнул ) Наоборот мотивирует что кто-то эту статью ждет.

qwerty
28.09.2017
13:13:44

Oleg
28.09.2017
13:36:39
какая разница абстрактный он или нет

qwerty
28.09.2017
13:37:56
аа ну да

Pavel
28.09.2017
13:41:13
Мой кейс - я делаю парсинг конфига в формате sdlang. Сделал класс abstract class SDLNode который объявляет 4 абстрактных метода - начало тега, значение, атрибут со значением, конец тега.
После метода 'конец парсинга тега'
abstract void onTagEnd(TagEndEvent event);всегда должен быть выставлен флаг isFinished = true

qwerty
30.09.2017
15:25:09
в D есть сущность для пула сокетов?
vibe.d не предлагать
socketset
нашел

Oleg
30.09.2017
16:26:52