
Dmitry
15.06.2016
20:11:53
В этой да. По документации. И уже скоро я буду пытаться их заюзать в реальном проекте

Oleg
15.06.2016
20:12:13
всё равно мне кажется это слишком специфическая задача, чтобы реализовывать её на уровне бд
ну не суть

Dmitry
15.06.2016
20:12:31
Просто PG и geojson будет ужасом

Google

Dmitry
15.06.2016
20:12:45
А на каком уровне надо тогда?

Oleg
15.06.2016
20:12:54
на уровне кода

Dmitry
15.06.2016
20:13:05
Я сам логину просчета координат не смогу написать
Там же координаты, проекции

Oleg
15.06.2016
20:13:32
там сложнее чем с плоскостью, но не на столько

Dmitry
15.06.2016
20:13:53
Ну я к сожалению не потяну. Ты мой уровень думаю уже знаешь

Oleg
15.06.2016
20:14:18
с известной математиков вообще всё просто
гуглишь и вставляешь код

Dmitry
15.06.2016
20:14:39
Там же 1001 фишка. Пересечение. Близость. Буфер. Наложение и тд
Ну я как дойду до этого попробую конечно
Но пока не уверен что осилю

Oleg
15.06.2016
20:15:25
ладно, не суть
почему не pg я тоже понял (с самого начала)

Google

Oleg
15.06.2016
20:15:46
но почему не mongo?
пока только отсутствие sql я заметил
установки не требует, есть в vibe
в чём загвоздка?
а графовые структуры там как объекты первого класса? со всяческими алгоритмами типа флойдов и дейкстры?
да и чем json лучше bson?
как-то нутром чую, что по бинарные данные компактней и обрабатывать их быстрее

Eto
15.06.2016
20:24:55

Oleg
15.06.2016
20:25:58
и судя по документации графы просто графы
для удобной выборки
https://www.arangodb.com/2014/11/data-modeling-mongodb-arangodb/
наличие транзакций радует

Eto
17.06.2016
09:11:24
Dlang in Telegram
https://telegram.me/dlangTelegram
Только на английском.

Oleg
17.06.2016
09:11:59
инс вери гуд
итс
ай тэйк мистейк

Pavel
17.06.2016
09:13:26
чот там народу маловато )

Oleg
17.06.2016
09:15:03
ну так день всего
группа существует

Google

Eto
17.06.2016
09:16:33

Oleg
17.06.2016
09:21:36
сорян)
пообщался я с зарубежными товарищами...
возник вопрос
что из себя представляет указатель в делегате, который не является методом класса, а например создаётся как замыкание?
чёт в runtime я этого не нашёл, значит это в самом компиляторе должно быть, но там я нашёл много "не того"... или просто не понял
нашёл на форуме
The context pointer points to a stack frame, a struct/class instance or a GC-heap-allocated copy of a stack frame (heap-allocated closure)
чёрт, впервые наткнулся) http://tour.dlang.org/
забавно

Dmitry
17.06.2016
19:03:18
указатель на контекст и делегат это не смежные понятия?

Oleg
17.06.2016
19:03:40
делегат хранит указатель на контекст
просто контекст может быть разный

Dmitry
17.06.2016
19:04:26
контекст = данные?

Oleg
17.06.2016
19:05:29
нууу....
не только
это как пространство имён
там же есть и функции

Dmitry
18.06.2016
09:51:43
Подскажите, а что он у меня ругается на:
Config config;
this(Config config)
{
this.config = config;
}
string dburl_version = config.dburl ~ `_api/version`;
—-
Error: need 'this' for 'dburl' of type 'string'
Зачем ему тут this то?
м... кажется понял — я конструктор только описал, но не создал его — ничего в него откуда надо не передал
хотя... что то не помогло...
Не, не могу понять почему так. в main если вызывать все норм

Google

Oleg
18.06.2016
10:04:24
когда ты инициализируешь переменную при объявлении в классе или структуре ты должен использовать то, что известно на момент компиляции
переменная config становится известна только в момент создания объекта (это не статическое поле)
выход: инициализировать переменную dburl_version в конструкторе

Dmitry
18.06.2016
10:05:15
ай блин, да точно
А есть разница между созданием пустого объекта и потом присваиванием:
Json jsonAnswer = Json.emptyObject;
jsonAnswer = parseJson(rs.responseBody);
и тем же в одну строку?
Json jsonAnswer = parseJson(rs.responseBody);

Max
18.06.2016
11:06:43
Нету, разве что заранее аллоцировать память вне критического по скорости кода так удобно

Oleg
18.06.2016
11:15:06
но это не тот случай)

Dmitry
19.06.2016
11:28:28
@deviator Правильно ли я понимаю что pure функции нужны для многопроцессорных систем т.к. их проще распараллеливать т.к. нет проблем с тем что функция может не свои данные изменить?

Oleg
19.06.2016
11:33:13
ну так не правильно рассуждать
pure это больше оптимизация
но он полезен и в многопоточных приложениях

Dmitry
19.06.2016
11:35:42
а за счет чего идет оптимизация?

Oleg
19.06.2016
11:36:46
за счёт того, что у функции нет доступа к лишнему контексту и компилятор может это использовать (например встроить, если нужно)

Dmitry
19.06.2016
11:38:47
А в каких ситуациях про это нужно морочиться? Когда реально идет лютая оптимизация?

Oleg
19.06.2016
11:39:08
в dmd нет "лютой" оптимизации
в ldc2 есть
во всех случаях, где можно, лучше ставить pure
все методы класса/структуры, которые оперируют только полями могут быть pure
и это не только оптимизация
это ещё и правильный код, который проще читать, легче сопровождать
все функциональные языки чистые

Google

Pavel
19.06.2016
11:41:33
Но логика про распараллеливание имеет место быть. pure функции в теории легко распараллелить - раскидал подфункции по разным процессорам и они вместе отработали.

Oleg
19.06.2016
11:42:00
@chebotarevp согласен, но это скорее следствие

Dmitry
19.06.2016
11:42:26
А есть ли тренд на то что все функции стремятся чистыми делать или все сделать невозможно?

Pavel
19.06.2016
11:42:27
Не уверен что так делает компилятор сейчас, но задел на будущее есть по крайней мере

Oleg
19.06.2016
11:43:13
все инстанцируемые из шаблонов функции компилятор старается сделать pure, если это возможно
элементарный ввод/вывод это уже не pure, а без этого никуда

Pavel
19.06.2016
11:43:50
Если везде делать только pure функции то уходят преимущества ООП, которые сильно опираются на состояния объектов

Oleg
19.06.2016
11:44:27
@chebotarevp в D pure немного своё трактование имеет
чистый метод это тот, что обращаться только к полям класса/структуры
так что всё в порядке

Pavel
19.06.2016
11:45:40
А методы другого класса он может вызывать? Который сидит в свойстве нашего например

Dmitry
19.06.2016
11:45:47
bool foo(name)
{
string x = "bar";
writeln(name);
return true;
}
это pure же?

Pavel
19.06.2016
11:46:17
нет
writeln меняет внешнее состояние

Dmitry
19.06.2016
11:47:12
в плане? Он же переменную не меняет, а просто выводит ее

Мерлин
19.06.2016
11:47:44
Любая функция с io не является чистой функцией

Oleg
19.06.2016
11:48:05
@DmitryBubnenkov не меняет, но обращается
результат выполенения чистой функции зависит только от аргументов
writeln пишет в глобально открытый файл 1
эквивалентно stdout.writeln