
Oleg
26.05.2017
13:50:18
почему бы ему не заработать то?
ты создал переменную shared, но записал туда не shared объект и у тебя получилось без cast(shared)?

Dmitry
26.05.2017
13:51:02
ну я думал он будет ругаться, что слово слово shared нужно

Oleg
26.05.2017
13:51:09
с чего вдруг?

Google

Dmitry
26.05.2017
13:52:28
в main.d
до main объявлено:
shared PGConnection pgconnection;
В конструкторе класса database я написал:
pgconnection = new PGConnection(...);
ожидалось что надо написать:
pgconnection = new shared PGConnection(...);

Oleg
26.05.2017
13:54:00
а это странная хрень

Dmitry
26.05.2017
13:55:21
а не стоп, это походу даб что-то закэшировал
да теперь тоже потребовала shared

Oleg
26.05.2017
13:56:19
у тебя в коде перехватывается исключение и создаётся новое, зачем?
строки 52 - 56
ты выводишь мессадж, но зачем новое исключение?

Dmitry
26.05.2017
13:57:47
я исключение просто выше пробрасываю, а там пишу для наглядности

Oleg
26.05.2017
13:58:03
так зачем тебе новое исключение то?
"пробрасывать исключение дальше" это значит именно то что написанно

Dmitry
26.05.2017
13:58:45
а разве я не то что поймал выше кидаю?

Oleg
26.05.2017
13:58:46
а здесь ты "перехватываешь исключение и выбрасываешь новое с тем же сообщением"
ты ловишь конкретное исключение MySQLException а выбрасываешь дальше просто Exception

Google

Oleg
26.05.2017
14:00:00
новый Exception, который создан в другой точке
есть в этом сакральный замысел или нет?

Dmitry
26.05.2017
14:00:33
а....
надо MySQLException прям выше и кидать?

Oleg
26.05.2017
14:02:05
такими действиями ты скидываешь информацию о точке в которой исходное исключение было создано и о стектрейсе

Dmitry
26.05.2017
14:06:53
Короче тогда у меня остается вариант со статическим классом только если данные либы не потокобезопасные?

Andrey
26.05.2017
14:09:31

Dmitry
26.05.2017
14:09:44
чтобы прога дальше не продолжала работать

Andrey
26.05.2017
14:11:33
я так понял, ты перехватываешь исключение, что то пишешь, и снова кидаешь?

Dmitry
26.05.2017
14:12:06
ну получается что да. поймал, вывел на экран и выше кинул

Andrey
26.05.2017
14:12:23
ну так выше и пиши

Dmitry
26.05.2017
14:13:59
тогда получается внутри main сделать глобальный try-catch?

Andrey
26.05.2017
14:14:20
ну зависит от. судя по твоим словам, так и надо
смысл перехватывать исключение. если ничего не делать и ретранслировать его)

Dmitry
26.05.2017
14:17:25
тааак, а если переменные на скрине выше просто объявить глобально без всяких shared? Это проблему решит?

Oleg
26.05.2017
14:29:59

Dmitry
26.05.2017
14:31:03
просто если я так сделаю, как предлагаю тогда приложение будет однопоточным? верно?

Oleg
26.05.2017
14:31:36
нет, приложение не станет от этого однопоточным, просто ты не сможешь напрямую использовать эти объекты в других потоках

Dmitry
26.05.2017
14:31:51
а... ну тогда наверно пока норм...
главное чтобы в других классах смог

Google

Oleg
26.05.2017
14:32:20
если эти другие классы будут запущены в других потоках, то не сможешь
блин, чё ты паришься, сделай однопоточное приложение, которое будет железно работать, оптимизуй, если не устраивает производительность и только потом думай о многопоточности
ребят, как приложение на vibe поднять без shared static this и всей этой хни?
вернее не так
как vibe-mqtt без этой хни запустить?
мне нужен мой eventloop, а там vibe

Andrey
26.05.2017
18:06:54
если свой main нужен, так просто и написать его. в вайбовском main только runApplication

Denis
26.05.2017
18:25:15

Dmitry
26.05.2017
18:27:14
У меня выхода нет. Он на работе есть и все
Хорошо, тогда просто в классе БД эти переменные инициализировать?

Denis
26.05.2017
18:29:17

Denis
26.05.2017
18:30:12
В личку ссылку, завтра гляну

Dmitry
26.05.2017
18:32:19
С компа перечитаю... просто. МНе показалось что в примере на драйвер для ПГ там все иницализировалось в статик зис. Щас очень не удобно с мобилы

Oleg
26.05.2017
18:32:24
Читал, что sleep только vibe'овский можно юзать из-за этого

Denis
26.05.2017
18:33:10
Смысл static в том что при возврате на эту строку сохранится значение от предыдущего раза.

Andrey
26.05.2017
18:33:18

Denis
26.05.2017
18:33:35
Погляди код pgator, я уже забыл как там точно сделано

Google

Oleg
26.05.2017
18:33:51
Толи форкануть...

Denis
26.05.2017
18:34:14
но оно делает имено то, что тебе надо: очередь запросов к некоторому количеству соединений + принимает запросы от расшаренных держателей указателя на "соединение"

Oleg
26.05.2017
18:35:01
Хз только сколько времени уйдет на переход с вайба на std
И вообще получится ли, учитывая что mqtt шифрование поддерживает...

Denis
26.05.2017
18:37:42
Главное понимать, что соединение с SQL-базой имеет сессионную природу
а не REST
Также можно в pgator добавить поддержку MySQL

Admin
ERROR: S client not available

Denis
26.05.2017
18:38:30
логика будет та же самая там

Dmitry
28.05.2017
13:38:00
что-то не пойму что ему не нравится:
string [] content = readText("test.md").splitLines;
Error: template std.string.splitLines cannot deduce function from argument types !()(string[])
Вроде бы splitLines возвращает массив строк
ой пардон, кажется тут все норм, а он на другую строку ругался

Oleg
28.05.2017
17:25:57
подскажите как включить печать стектрейса в vibe
падает на исключении, а пишет только имя его
и gdb не берёт
никто с такой проблемой не сталкивался?

Andrey
28.05.2017
18:43:15
сталкивался сегодня, но ответа не знаю)

Oleg
28.05.2017
19:07:35
Мне показалось что это прям такая частая проблема у всех к с vibe сталкивается, что ответ прям искать нигде не надо...
Типа из серии 'как собрать в release?'

Andrey
28.05.2017
19:08:56
кстати, у меня без вайба такое было. походу, аксесс виолейшен чтоль...

Google

Andrey
28.05.2017
19:09:28
или какая то подобная мрачная хрень. компилится, но падает в рантайме

Oleg
28.05.2017
19:09:49
Да не, он именно msg из exception печатает

Dmitry
28.05.2017
19:37:57
http://www.phoronix.com/scan.php?page=news_item&px=D-Frontend-For-GCC

Oleg
28.05.2017
20:44:44

Dmitry
29.05.2017
06:50:50
Иногда одна емкая фраза лучше сотен строк документации. В презентации Али нашел очень простое описание всей этой мутабельности:
"
*const* - means "I cannot mutate data through this reference but others may."
•
*immutable* - means "immutable"
immutable id = 42;
string s = "hi";
// alias of immutable(char)[]
*immutable* is implicitly shared
"

Pavel
29.05.2017
07:29:47
?
Да бывает и 1 строчка комментария дает нехилое понимание системы

Dmitry
29.05.2017
09:06:26
У кого есть время сделать небольшой код-ревью моего проекта? Нужно посмотреть где я накосячил. На гитхабе проекта нет.

Denis
29.05.2017
09:06:59
Нет на гитхабе == вообще нет)

Dmitry
29.05.2017
09:07:40
ну я не могу на паблик выкладывать то что на работе делаю...
понятно дело что оно нафиг никому на стороне не нужно, но все же

Denis
29.05.2017
09:11:30
а как ты собираешься получить ревью не показывая код?

Dmitry
29.05.2017
09:11:52
ну как-то так.. ^ ;)

Denis
29.05.2017
09:12:20
ОТСТУПЫ ТАБАМИ!!!
string insertsql = INSERT IGNORE INTO regions_statistic(recordDate_trackid, recordDate, regionName,trackid, velocity, okato_code) VALUES(' ~ to!string(item.recordDate) ~ "_" ~ to!string(item.trackid) ~ ', ' ~ to!string(item.recordDate) ~ ', ' ~ to!string(item.regionName) ~ ', ~ to!string(item.trackid) ~ , ~ to!string(item.velocity) ~ , ~ to!string(item.okato_code) ~ );

Dmitry
29.05.2017
09:13:11
э.... а чем это плохо то? Это не питон...

Denis
29.05.2017
09:13:26
а то что у тебя кое-где они пробелами и код съезжает
не надо значения в SQL-запросы так подставлять. 30% взломов на этом строится.

Maxim
29.05.2017
09:14:31
use smart tabs, luke

Denis
29.05.2017
09:14:41
Вообще, как-то слишком много запросов в коде