@dlangru

Страница 41 из 719
Денис
25.07.2016
10:14:22
Кроссплатформенный C#

Dmitry
25.07.2016
10:23:06
Олег, макс, ну так что в итоге то мы про ref выяснили? структуру надо по ref передавать?

Max
25.07.2016
10:37:27
Структуру – да, почти всегда. Мы спорили про массивы как аргумент функции

Dmitry
25.07.2016
10:40:06
foreach(ref a; arr) про это?

Google
Dmitry
25.07.2016
10:43:32
так. Ситуация следующая. Мне нужно забрать из БД трb столбца: id, path, metadata после чего сделать так, чтобы при запросе с сайта можно было отобразить один из файлов расположенных в path (к примеру C:\img\123.jpg) отобразился на сайте. Вопрос. Как это сделать? Проочитать все даныне в массив структур? А дальше как? Задача сделать чтобы все пути были доступны для обращения.

Просто никак не могу сообразить. Данные даже не в папке vibed лежат.

Макс
25.07.2016
11:06:09
если такой смелый :-) и если путь действительно может быть любым-любым, то на уровне сервера настрой, чтобы отдавал по каким-то путям файлы из корня

но зачем ты хранишь в БД абсолютный путь, а не путь относительно, скажем, папки ./static?

Dmitry
25.07.2016
11:40:13
пока у меня данные просто хз где будут лежать

но идея с массивом структур как годная?

Макс
25.07.2016
11:42:11
я недопонял, проблема тупо с перебором данных из базы? ну это смотря какую либу для работы с БД используешь, что она тебе возвращает

Dmitry
25.07.2016
11:44:20
sqlite

я хочу создать массив структур и его заполнить полным набором данных из БД (их будет не много — не больше 100)

Макс
25.07.2016
11:45:23
а смысл? почему не получать из БД только то, что надо?

Dmitry
25.07.2016
11:45:29
и отдать на сайт. Нормальный ли это вариант будет с заполнением массива структур?

к сожалению для Ди нет либы которая бы позволила проверить пересекаются ли полигоны, но она есть для JS и я хотел в браузере уже проверку делать

благо данных не много

Google
Макс
25.07.2016
11:49:29
я не понял до конца, но подозреваю, что именно _хранить_ что-то тебе не надо, а достаточно, получая от БД одну строчку за другой, писать соответствующий вывод в формате JSON или в чём там тебе для клиента нужно

т.е. никаких новых структур не нужно, кроме тех, которые тебе возвращает сама обёртка над SQLite

Dmitry
25.07.2016
11:51:42
при образении к урлу данные в JSON надо же разово выплюнуть так? Значит получается в начале нужно выполнить заполнение ими так?

а заполнить я хочу набор структур

Макс
25.07.2016
11:52:52
ну, ты можешь же вроде в поток писать по кускам то, что надо.

а даже если и отправлять JSON разом, то можешь и накапливать JSON-массив сразу, без промежуточного другого массива

потом преобразуешь в строку и сразу отдашь

Dmitry
25.07.2016
11:54:14
а как json наrапливать? Не лучше ли будет в начале их как структуры представить?

Макс
25.07.2016
11:54:57
я ща с телефона, я тебе не подскажу наверняка)

Dmitry
25.07.2016
11:56:28
а ну если в моем варианте явных логических косяков нет, то наверно норм

[Anonymous]
25.07.2016
16:04:03
Для чего создан язык d?

Денис
25.07.2016
16:29:21
Для чего создан язык d?
>Введение книги александреску

Короч для всего: от системного программирования до веба

[Anonymous]
25.07.2016
16:31:01
Ооо чем он отличается от других

Денис
25.07.2016
16:31:44
Ооо чем он отличается от других
Это плюсы с меньшим кол-вом говна и палок. И мощнейшим метапрограммированием.

Oleg
25.07.2016
16:39:47
Я про go, интернета не было)

Макс
25.07.2016
16:41:15
всё ок, сообщение туда и встало

Dmitry
26.07.2016
06:12:50
Ребят, а про интеграцию с питоном кто что скажет? К примеру есть либа на Питоне, которая зависима от другой либы на питоне. На сколько это все можно интегрировать в Ди? Что в итоге получится?

Oleg
26.07.2016
07:11:40
Я как-то делал, но только ради эксперимента. По сути ты запускаешь интерпретатор в программе на D и всё, так же можешь подключать либы.

Google
Dmitry
26.07.2016
07:52:38
Либы можно вшить как то? Чтобы не нужно было везде питон ставить и либы для него отдельно

Макс
26.07.2016
07:56:23
В смысле? Скомпилировать Питон?

Dmitry
26.07.2016
08:06:17
Ну любым способом избавиться от необходимости его таскать как зависимость и доставлять его пакеты

Макс
26.07.2016
08:07:37
Смотри в сторону компилируемых диалектов Питона. Cython, кажется, называется один такой. Другого способа обойтись без интерпретатора языка, на котором написана библиотека, я не вижу.

Dmitry
26.07.2016
08:13:17
А как процесс будет выглядеть? Он на 100% со всеми либами совместим?

Макс
26.07.2016
08:15:24
Точно не совсеми, ибо библиотека может юзать eval(), а это по сути требует иметь в рантайме весь интерпретатор.

А тебе точно не проще всё же «таскать питон»? Может даже не бинарником, а библиотекой-парсером, libpython или как её там. А даже и бинарники необходимые притащить – там очень тяжело? Может, можно часть стандартной библиотеки выкинуть и не таскать?..

Oleg
26.07.2016
08:17:31
вот тот же вопрос

Макс
26.07.2016
08:17:32
нужные пакеты притащи тоже в папочке, укажи её в PYTHONPATH

Oleg
26.07.2016
08:18:22
любая современная программа тащит за собой что-либо

собственно в чём проблема таскать python

?

Dmitry
26.07.2016
08:20:13
Олег, щас погоди, в начале тебе вопрос задам. По твоей тематике. Ты знаешь ли на сколько сложно написать метод который определяет пересекаются ли два полигона с географическими координатами или нет. Просто мне зараза он очень нужен. Может ты уже писал что-то?

Питон проблема таскать т.к. это гемор. Дистрибутив сам у него может весить дофига относительно проги которой он нужен. Версия в системе может уже быть какая-то установлена и тд

Макс
26.07.2016
09:36:37
я думаю, на установленную в системе версию можно не обращать внимания. ты же не ставить питон собрался, а просто тихонько запустить из своей папки

ну а по-другому никак, пробуй Cython тогда

Dmitry
26.07.2016
11:39:28
Олег, а вот примеры отсюда http://stackoverflow.com/questions/924171/geo-fencing-point-inside-outside-polygon/6786279#6786279 они вообще то что мне надо? Просто я математику не шарю..((

Макс
26.07.2016
12:08:38
Возможно, сейчас ляпну иррелевантную ересь, но в PostgreSQL точно есть встроенные типы и функции для анализа пересечений и вхождений всяких геометрических фигур. Тебе принципиально использовать SQLite, или ты можешь потаскать с собой постгрес? :)

Dmitry
26.07.2016
12:12:54
У меня не больше 100 файлов будет ...

Google
Dmitry
26.07.2016
12:13:39
ну во всяком случае пока.

Я думал про PG, но пока он неоправдано утяжелит решение

кстати, а как бы ты решил проблему. Вот юзер в браузере выделил полигон. Нужно найти полигоны, который в БД пересекаются с границами выделенного. SELECT получается должен быть с параметрами верно? В качестве параметров та самая зона интереса.

Макс
26.07.2016
13:18:43
кстати, а как бы ты решил проблему. Вот юзер в браузере выделил полигон. Нужно найти полигоны, который в БД пересекаются с границами выделенного. SELECT получается должен быть с параметрами верно? В качестве параметров та самая зона интереса.
да, на сервер передаёшь в GET-параметрах вершины пользовательского многоугольника, а серверный код, в свою очередь, подставляет их в SQL-запрос постгресу, который и возвращает подошедшие результаты

Dmitry
26.07.2016
13:19:22
параметры вершины = одну точку?

Макс
26.07.2016
13:20:21
Ну, полигон это набор пар (x,y), верно? для постгреса их, если не ошибаюсь, через пробел нужно писать

как ты их в GET закодируешь – дело вкуса, можно по-своему. Всё равно без проверок в SQL вставлять не стоит, а то инъекция возможна

Admin
ERROR: S client not available

Макс
26.07.2016
13:22:45
ну, точнее, без конвертации

Dmitry
26.07.2016
13:33:04
Так, я на всякий случай на форуме тему забил. Может кто писал уже что-то подобное.

У меня есть две блока: version( USE_SQLITE ) ... else version(USE_MYSQL) как мне между ними переключаться, чтобы к примеру только второй работал

Еще вопрос. Новый stdx.json принимает ссылочный тип только. Я спросил у автора почему строку нельзя. Он ответил: String is a valid range, but parseJSONValue takes a *reference* to a range, because it directly consumes the range and leaves anything that appears after the JSON value in the range. toJSON() on the other hand assumes that the JSON value occupies the whole input range. Что имеется ввиду под: оставляет что то что идет в конце значений диапазона. Что имеется ввиду и зачем нужно?

Dmitry
27.07.2016
19:15:44
А кроме как в него? Механизм проверки какой?

Oleg
27.07.2016
19:15:54
всмысле проверки?

есть флаг у компилятора, в который можно записывать версии

dub может его выставить

что проверяться должно?

возможно это позволяет ему избавиться от выделения памяти для строк

Google
Oleg
27.07.2016
19:18:19
хз

Dmitry
27.07.2016
19:19:07
а когда из потока читается то паять для строк выделять не надо?

Oleg
27.07.2016
19:19:39
из потока, который stream?

Dmitry
27.07.2016
19:20:21
не, я не то сказал

Я не вижу разницы между: JSONValue x = parseJSONValue({"a": true, "b": "test"}); и string str = {"a": true, "b": "test"}; JSONValue x = parseJSONValue(str); второе компилируется успешно

первое ругается

Oleg
27.07.2016
19:22:16
разница есть

у тебя есть тобой выделенный str

за валидным json может остаться какая-то часть, которую потом ты можешь взять

хз

не знаю случаев, когда это может быть нужно

Dmitry
27.07.2016
19:24:34
ок пасибо

а dub в код передает булевое значение версии указанное в нем?

просто как код понимает что нужно именно эту ветку собирать. Я понимаю что в конфиге указано, но не ясно как это туда передается

Oleg
27.07.2016
19:26:01
не булево...

код ничего не понимает)

компилятор смотрит на ветки version и выбирает ту, для которой выставлен флаг (флаг сам булевый, но имя флага нет, а именно имя передаётся в компилятор)

Dmitry
28.07.2016
07:58:34
А получается compile time function?

Кстати, я правильно данные из запроса получаю? writeln(req.bodyReader.readAllUTF8);

Страница 41 из 719