
Oleg
12.11.2016
17:31:44
В итоге это не пиарят и народ думает что в D нихрена нет
На этой неделе уже начну плотненько кодить, нашел и вроде как фикс сегфолтов при экспорте DLL: нужно помечать функции как nothrow и лучше в них ничего не делать, а просто вызывать внутри уже "обычные" Dшные функции. Вдруг кому инфа пригодится. Надеюсь это мне поможет :)

0x9d8e
14.11.2016
15:29:50

Dmitry
14.11.2016
16:41:16
Так, а где лучше обхявить?
auto fLogger = new FileLogger("error.log");
Может его вообще в static this() { } ?

Google

Pavel
14.11.2016
16:41:56
можно впринципе

Dmitry
14.11.2016
16:45:49
Я немного про sharedLog тут не понял https://dlang.org/phobos/std_experimental_logger.html
почему оно в примере создается без указания типа?

Pavel
14.11.2016
16:49:50
auto fLogger = new FileLogger("NameOfTheLogFile");
Почему ж без указания

Dmitry
14.11.2016
16:55:08
sharedLog = new FileLogger("New_Default_Log_File.log");
Кстати, а по логике, если мне нужно экспшены ловить я так и должен писать:
fLogger.log(e.msg); ?
Так. Если я логгер объявлю в app.d и мне потребуется залоггировать что-то в db.d то мне получается чnобы увидеть из DB.d FileLogger fLogger; нужно будет import app.d делать, что как-то не очень красиво.
Есть варианты лучше? Просто создавать в каждом классе свой объект логгера как-то странно

0x9d8e
14.11.2016
17:28:01
Синглтон?

Dmitry
14.11.2016
17:28:36
да мы как-то это обсуждали уже, но кажется никакого красивого варианта так и не придумали.
Вообще на сколько упоротый вариант делать globals.d куда класть объявление всех вещей которые нужны глобально, и ту часть из них которую нужно инициировать при запуске инициировать в shared static this() ?

Oleg
14.11.2016
17:31:13
Можно же из модуля экспортировать импорты других модулей. А в чем совбсвтенно проблема то?
import logger почему не вариант?

Google

Dmitry
14.11.2016
17:33:30
так, погоди, ты имеешь ввиду импорт самого определения логгера? Просто речь про реализацию.
Т.е. если я его внутри app.d объявлю, то внутри db.d нужно же будет делать imporе app.d чnобы увидеть его объявление

Oleg
14.11.2016
17:35:33
Ну сделай logger.d,
module logger;
public import app : logger;
Вродь долно заработать
При импорте logger.d будет доступ к app.d : logger
Потом при реакторинге вынесешь логер из app в другой файл (че он в апп делает то?), и придется только logger.d исправлять, а не все импорты во всех файлах
Но всеравно не пойму, к чему эта балалайка, если можно import app : logger

Dmitry
14.11.2016
18:15:15
А это глобальная переменная стандартной либы она в какой момент создается и инициализируется? Как ей допустим имя другое подсунуть?

Oleg
14.11.2016
18:21:20
import ololo = std.logger : Logger; ?
Да гдетож создается)
Походу static this

Dmitry
14.11.2016
18:22:35
Так ну понял, мне по большей части бест-практис интересовал. А дальше в блоке catch лог записывать?

Oleg
14.11.2016
18:23:24
Для бест праткис это к https://p0nce.github.io/d-idioms/
Может там написано

Dmitry
14.11.2016
18:23:58
это видел и даже сам туда коммит один сделал на базе чужого исходника правда)

Oleg
14.11.2016
18:25:53
Ну тогда фиг знает. Какие-то слишком странные проблемы для меня)
В джаве же в catch ошибку логируют обычно

Dmitry
14.11.2016
18:27:19
у меня просто опыта не так уж много...

Oleg
14.11.2016
18:31:33
Когда у тебя прога будет рушиться, а логов нет, тебе будет всеравно красиво оно там или нет)

Dmitry
14.11.2016
18:35:01
ну хоть место найти где падает....

Google

Dmitry
14.11.2016
18:37:41
так, а как сделать чтобы в файл писать:
http://vibed.org/api/vibe.core.log/
fLogger = new FileLogger("error.log");
log же просто тут юзать нельзя — он на экран пишет, а как в файл писать?

Oleg
14.11.2016
18:41:33
http://vibed.org/api/vibe.core.log/setLogFile
?

Dmitry
14.11.2016
18:42:54
Я просто не догоняю, есть отдельный функции логирования Functions а есть которые в меодах?

Oleg
14.11.2016
18:44:03
Похоже на то

Dmitry
14.11.2016
18:44:21
fLogger = new FileLogger("error.log"); это разве не то?
или сюда будут все логи дублироваться которые я буду выводить?

Oleg
14.11.2016
18:57:18
У вайбеда свой

Dmitry
14.11.2016
18:57:26
нет вайбовский
http://vibed.org/api/vibe.core.log/FileLogger

Oleg
14.11.2016
18:58:05
Ты бы быстрее юнит тест написал уже и проверил

Dmitry
14.11.2016
18:58:50
Мне их в начале писать научиться надо)

Oleg
14.11.2016
18:59:20
Да просто программу напиши которая в лог выводит разными способами

Dmitry
14.11.2016
19:00:18
Хорошо, попробую. Но доки без примеров конечено очень тяжело в голову ложатся

Oleg
14.11.2016
19:01:40
Заходишь на гихаб, там вверху поиск, вводишь название функции из жокументации, жмешь энтер, слева потом выбери язык Д
Примеров будет завались

Dmitry
14.11.2016
19:01:55
во точно) так и сделаю

Oleg
14.11.2016
19:03:09
http://vibed.org/api/vibe.core.log/registerLogger

Google

Oleg
14.11.2016
19:03:21
И кстати примеры есть, правда мелкие
Сам не люблю фиговые примеры

Dmitry
14.11.2016
19:04:00
а чем отличается регистрация логера в отдельной функции от создания экземпляра класса логера?
registerLogger Registers a new logger instance.
и
FileLogger Plain-text based logger for logging to regular files or stdout/stderr

Oleg
14.11.2016
19:04:42

Dmitry
14.11.2016
19:06:09
ну я же могу создать экземпляр класса и тоже его заюзать, разве нет?
там же тоже будет путь указываться

Oleg
14.11.2016
19:07:27
Возможно регистрация нужна чтобы сам вайбед свои внутренние причуды логировал

Dmitry
14.11.2016
19:07:50
Олег, тебе тоже кажется это все запутанным и похожим на тыкание вслепую?

Oleg
14.11.2016
19:08:07
Это же системное программирование

Admin
ERROR: S client not available

Oleg
14.11.2016
19:08:10
Ты должен страдать

Dmitry
14.11.2016
19:08:14
Просто меня не покидает чувство, что я или что-то дико не понимаю или оно реально мутное и неоднозначное
господи, а прикладное то когда же начинается?

Oleg
14.11.2016
19:08:42
На Го небось пишется в четыре строки, а в ноде в три

Dmitry
14.11.2016
19:09:40
Го реально в этом отношении проще получается??

Oleg
14.11.2016
19:10:37
Я более чем уверен
Сам я кодил ноду
Вобще без вопросов

Pavel
14.11.2016
19:10:57
Проще да)

Google

Dmitry
14.11.2016
19:10:59
а почему в ди то все так сложно?

Pavel
14.11.2016
19:11:01
Ди для гурманов

Oleg
14.11.2016
19:11:07
Чаще ты просто в npm пакеты ставишь чем думаешь)

Pavel
14.11.2016
19:11:46

Oleg
14.11.2016
19:12:50
За что им пламенный привет
Лучше новичку сначала попробовать го или ноду
Стать опытным и уже потом, если вдруг, уткнуться в их ограничения, возненавидеть их всей душой, и прийти в ютный ди
Почитывать книжечки Александреску и строить милые сердцу абстракции и метакод
В ноде у меня код работал даже если я лицом бился о клавиатуру. К такому быстро привыкаешь.
О, а в РНР...

0x9d8e
14.11.2016
19:29:48
... а в PHP порой годами остаётся незамеченным код, который вообще работать не должен бы.
Со всеми вытекающими

Oleg
14.11.2016
19:30:38
Зачем писать сервер на D если ты не фанат бекенда?
Или там ниже итоговая стоимость сопровождения?
При более дорогой разработке
И спецы ж небось дороже чем гошники стоят
Боттлнек всеравно в БД

Dmitry
14.11.2016
19:34:32
Да блин... фронтенд у меня еще хуже идет)
Задача в идеале и в том и в том разбираться хоть как-то, чтобы можно было решения делать более или менее рабочие

Pavel
14.11.2016
19:35:14
Боттлнек всеравно в БД
Зависит от приложения, если в бизнес логике выполняется дофига вычислений то может и бэкенд залагать сперва
Но в 90% случаев ты впринципе прав.

Oleg
14.11.2016
19:36:33