
Eto
28.07.2016
10:04:51

Dmitry
28.07.2016
10:05:06
Тоесть если строку передавать, то то он может съесть первое, но не съесть второе?

Eto
28.07.2016
10:07:55
Ага.

Dmitry
28.07.2016
10:09:23
а неужто так сложно проверить, что там еще что-то нет? Сейчас же оно вроде бы нормально данные ест

Google

Oleg
28.07.2016
10:10:01
сложно
это можно 2 раза парсить надо

Dmitry
28.07.2016
10:11:05
а не мог бы пояснить в чем проблема то?
У строки же есть длинна

Eto
28.07.2016
10:12:24
А что тебе длина даёт в данном случае? Предлагаешь парсить, хранить кол-во прочитанных символов, а потом обрезать и возвращать остаток?

Dmitry
28.07.2016
10:14:57
а зачем обрезать? Почему нельзя все за раз спарсить? Всю строку

Eto
28.07.2016
10:15:56
Так, а как ты спарсишь всю строку, если она может быть невалидной?
Посмотри на мой пример.

Dmitry
28.07.2016
10:16:30
ну если трока не валидная, то выругаться

Eto
28.07.2016
10:17:08
Это не гибко.

Dmitry
28.07.2016
10:19:31
А чем же не гибко то? Если данные битые про это надо сказать
Кстати, вопрос. Вот я формирую в браузере JSON. Cмотрю результат. Все логично. Все поля в том порядке в котором я объявил переменные. Отправляю на сервер. А на сервере те же данные, но в другом порядке. Как такое может быть?

Eto
28.07.2016
10:21:02
Смотри на мой пример. Если делать, как ты предлагаешь, то ты их никак не сможешь прочитать. Но логично было бы уметь читать такие данные.

Макс
28.07.2016
10:21:42

Google

Eto
28.07.2016
10:21:43
Ассоциативные массивы же. Конкретно в D такая имплементация, которая не хранит порядок ключей.

Макс
28.07.2016
10:22:03
да, на это же хотел намекнуть

Dmitry
28.07.2016
10:22:48
в консоли смотрю проекта vibed

Eto
28.07.2016
10:23:02
В vibe-d есть свои ассоциативные массивы, которые умеют сохранять порядок. Но я без понятия, как их использовать при парсинге.

Dmitry
28.07.2016
10:23:06
а можно как-то заставить порядок ключей хранить?
а.
понял
пасибо

Eto
28.07.2016
10:23:17
Да и вообще, опираться на порядок ключей в JSON — плохая идея.

Dmitry
28.07.2016
10:23:25
да мне просто для наглядности нужно
я в код примеры вставляю того что формирую и что прилетает
а как быть если нужно сформировать сложную строку - sql запрос с кучей кавычек разных в том числе апострофов?
http://www.everfall.com/paste/id.php?8p6i2njlsw8i
просто если пытаюсь склеить строку, то куча ошибок с тем что оlинарные кавычки, те кавычки на букве ё и двойные кавычки

Oleg
28.07.2016
11:32:34
есть синтаксис
q{
строка
}

Dmitry
28.07.2016
11:32:40
о, пасибо

Oleg
28.07.2016
11:33:34
вот только видимо там с одинарными какая-то засада)

Макс
28.07.2016
11:34:27
да ладно? внутри строки у тебя попались ``? для меня они универсальной пулей сработали, никогда не хотелось внутрь пихать их же
Аааа
увидел

Dmitry
28.07.2016
11:35:23
тоесть внутри q одинарные не проканают?

Oleg
28.07.2016
11:35:33
кажись нет

Google

Oleg
28.07.2016
11:35:44
но ты можешь их склеивать

Dmitry
28.07.2016
11:35:55
Так, кажется сам запрос проходит без ` так что ситуация упрощается

Макс
28.07.2016
11:36:37
я просто на PostgreSQL писал, а там для этой цели двойные кавычки служат

Oleg
28.07.2016
11:36:43
writeln( q{`обратные` } ~ "'одинарные'" ~ q{"двойные"} );

Dmitry
28.07.2016
12:13:14
так, а нет идей почему может с данной ошибкой падать.
Сам выведенный на экран запрос если его вставлять в sqlmanager работате нормально.
Но вот при вставке его в сам драйвер, то все:
http://img.ctrlv.in/img/16/07/28/5799f698af936.png
мне хоть какие-то идеи нужны

Eto
28.07.2016
12:20:56
А Access Violation это разве не ошибка в драйвере?

Dmitry
28.07.2016
12:22:08
блин, мне вот щас только ошибок в драйвере не хватало %)

Oleg
28.07.2016
12:22:40
венда)))

Dmitry
28.07.2016
12:23:21
думаешь под Linux иначе будет? Щас попробую пространственные данные убрать и посмотреть что получится

Eto
28.07.2016
12:23:28
:D
Я думаю Олег не о том драйвере подумал.

Oleg
28.07.2016
12:25:30
кстати, каким дебагером под виндой пользуетесь?

Eto
28.07.2016
12:26:05
Неа.

Oleg
28.07.2016
12:26:32

qwe
28.07.2016
12:27:10
@deviator, каким Вы пользуетесь дебаггером? Я тут недавно вопрос задавал и он остался без ответа

Dmitry
28.07.2016
12:27:42
Я вообще без дебагера пишу. Пока хочу осилить юнит-тесты и тп
таааак. не пойму в чем фишка.
Сейчас даже запрос вида:
SELECT id, path FROM rasters_previews;
приводит к ошибке. Вот код http://www.everfall.com/paste/id.php?jpi2k6j16ouk
ошибка та самая на скриншоте

Oleg
28.07.2016
12:46:26

Google

Макс
28.07.2016
12:48:26

qwe
28.07.2016
12:48:53
@deviator ты командой call пользуешься в нем?

Dmitry
28.07.2016
12:49:07
Макс, м... странно щас еще раз посмотрю...

Макс
28.07.2016
12:49:19
а на какую конкретно строчку ошибка, там понятно?

Dmitry
28.07.2016
12:49:58
auto rs = stmt.executeQuery(sqlSelect);
вот на эту
хотя тут тоже что-то есть:
D:\code\GeoPortal\source\app.d(232):
res.writeJsonBody("");
но если auto rs = stmt.executeQuery(sqlSelect) закомментить то все работает

Макс
28.07.2016
12:52:06
вот тут ты же уничтожаешь stmt? или я туплю?
auto stmt = conn.createStatement();
scope(exit) stmt.close();

Dmitry
28.07.2016
12:52:24
при выходе из функции он должен уничтожиться

Макс
28.07.2016
12:52:37
но ты же его потом и используешь
хотя это, наверное, ни при чём

Admin
ERROR: S client not available

Dmitry
28.07.2016
12:53:59
м... по идее наверно его в конструктор я зря засунул?
да, ты оказался прав. Если из конструктора это вынести, то все работает

Макс
28.07.2016
12:56:46
сделай деструктор, туда и внеси)
если оно само не закрывается после использования
даже так: если оно само не имеет правильного деструктора

Dmitry
28.07.2016
12:58:38
погоди scope(exit) как раз вроде бы деструктор вызывает, разве нет?

Макс
28.07.2016
12:59:01
нет
ты вызываешь stm.close()
а после этого зачем-то всё равно используешь stmt

Google

Макс
28.07.2016
12:59:32
вероятно, поэтому у него внутри что-то и коротит

Dmitry
28.07.2016
12:59:35
На сколько вообще адекватно оставить код начинающийся на 79 строке внутри этого метода?
http://www.everfall.com/paste/id.php?x4r6k3lyas7r
как лучше сделать?
тоесть ты предлагаешь все же внутри конструктора этот код оставить или я тебя не так понял?

Макс
28.07.2016
13:00:43
я в твой код целиком не вникал, так что не стану умный вид делать. не готов сейчас разбираться
только предположил настолько, насколько в глаза бросилось

Dmitry
28.07.2016
13:07:00
удалено
в кнострукторе вообще экземпляр класса создавать нельзя?

Макс
28.07.2016
13:07:54
почему нельзя? в смысле?

Dmitry
28.07.2016
13:08:34
class GeoDataBase
{
Statement stmt;
Config config;
string[string] params;
MySQLDriver driver = new MySQLDriver(); // а тут можно?
this(Config config)
{
// в начале хотел создание драйвера сюда засунуть
}

Макс
28.07.2016
13:09:14
туда и засунь, в конструктор, а почему ты решил, что нельзя?

Dmitry
28.07.2016
13:09:41
потому что в нем он не видит:
Error: undefined identifier 'driver', did you mean interface 'Driver'?
а вот как поле класса то видит
вообще как правильнее?

Макс
28.07.2016
13:10:09
а как ты создание написал?
на которое он выдал ругань

Dmitry
28.07.2016
13:10:37
this(Config config)
{
this.config = config;
MySQLDriver driver = new MySQLDriver();

Макс
28.07.2016
13:11:28
и он на эту строчку ругнулся? не понимаю как так

Dmitry
28.07.2016
13:11:56
а во, ты прав, он его дальше не видит просто
т.е. как понимаю MySQLDriver driver надо полем класса сделать?

Макс
28.07.2016
13:12:20
через несколько минут всё объясню, если кто-то другой не успеет)
работа)

Dmitry
28.07.2016
13:12:34
ок
пока актуальный вопрос такой — можно ли создание класса делать в поле класса. Или надо тип объявить в поле, а создание вызвать в конструкторе.

Oleg
28.07.2016
13:14:33