@dlangru

Страница 154 из 719
Dmitry
14.04.2017
14:01:18
У меня есть диапазон Range вида: aaa_6 bbb_7 bbb_6 aaa_7 вопрос как лучше из него набор пар составить aaa_6 bbb_6 aaa_7 bbb_7 думаю создать в начале массив структур, но как лучше подобные пары организовать?

https://dlang.org/phobos/std_algorithm_iteration.html#.group подойдет? или есть что-то получше?

есть идеи почему код: auto x = MySQLTablesRange.map!(a=>a); writeln(x); возвращает [ ] данные в MySQLTablesRange есть

просто вот такой код работает: MySQLTablesRange.each!(a=>a.writeln);

Google
Dmitry
14.04.2017
15:11:52
и выводит данные

разобрался: range надо в array привести чтобы выводило

Evil
14.04.2017
18:40:48
Переписал старое прогнившее дерьмо couched под vibe-d

смотрю на доки этого сервиса и тестирую с ним же https://docs.cloudant.com/cloudant_query.html

На cloudant.com бесплатный траял делается в два клика. Там создать базу, тыкнуть по ней, дальше по разрешениям и создать юзера для базы. Ну или своего гонять. В первых строках тестов, подключение к базе и имя задается.

Месяц бесплатный. Лафа.

qwerty
15.04.2017
13:38:06
Для D есть либа для imap и smtp, в которой полностью реализован стандарт RFC822? Если нет, помогите раззуть глаза и найти C либу. Нашел только для C++, но С будет проще портировать.

Pavel
15.04.2017
14:19:54
А проще ли будет именно портировать а не реализовать просто по rfc ?

Все таки в си приходится мыслить процедурно а в D объектно удобнее и быстрее, и кода получится в 2 раза меньше

Evil
15.04.2017
15:03:32
Та да, сел за вечер, да написал бы

Pavel
15.04.2017
16:39:30
Э, а ты видел текст rfc? Там работы на месяц фултайма

За вечер можно разве что выпустить альфа-версию куска говна :) Который будет еле-еле отправлять письма в самых простейших дубовых случаях.

Меня там заинтересовала вот такая штука: delimiters = specials / linear-white-space / comment atom = 1*<any CHAR except specials, SPACE and CTLs>Интересно может ли какая-то библиотека генерить FSM для таких описательных правил в compile-time чтобы создавать автоматически валидаторы-регулярки?

Google
Pavel
15.04.2017
16:54:06
Супер ?

Max
15.04.2017
16:54:29
Э, а ты видел текст rfc? Там работы на месяц фултайма
Ну это т конечно загнул, за месяц фултайма можно компилятор собрать.

Pavel
15.04.2017
16:55:56
Я сотни раз видел чтобы программисты занижали сроки разработки, но еще не разу не было чтобы завышали )) И в их коде потом не находилось больших изъянов

Max
15.04.2017
16:58:28
А я сотни раз видел как пытались писать все и сразу красиво, быстро и кошерно, а в итоге ничего так и не выпускали. Хуяк-хуяк — основа продуктивности, лол.

Pavel
15.04.2017
17:01:27
> либа для imap и smtp, в которой полностью реализован стандарт RFC822? тут постановка фразы предполагает качественную реализацию

Max
15.04.2017
17:05:59
Качественная и полная — далеко не синонимы

Pavel
16.04.2017
14:25:04
auto a = new MyStruct работает медленнее чем auto a = new MyClass на 20%

Dmitry
16.04.2017
14:48:58
как тестил?

Pavel
16.04.2017
15:15:52
Создавал 100 миллионов классов и структур в цикле

Создалось за 9 и 11 секунд

Dmitry
16.04.2017
17:22:42
отпиши про это на форуме

интересно что скажут

Pavel
16.04.2017
17:28:23
А нужно? Тест же очевидный :)

Я другой важный вывод сделал - если создавать структуры не через new а на стеке - просто объявлять переменную как MyStruct my то это работает на пару порядков!! быстрее

Dmitry
16.04.2017
17:30:15
да просто людям твои мысли будут думаю интересны

Pavel
16.04.2017
17:30:18
Те же 100 млн структур у меня создались буквально за 0.2 с.

Dmitry
16.04.2017
17:31:11
кроме геймдева это где еще нужно столько структур/классов создавать?

Pavel
16.04.2017
17:31:37
Потому что не задействован gc и просто указатель на стеке меняется. Вот где огромный прирост в скорости. А вот класс нельзя создать кроме как через new, получается они медленные

кроме геймдева это где еще нужно столько структур/классов создавать?
Ну вот в моем прокси же, там на каждое соединение создается около 10 структур, если подключений будет много то это уже начнет тормозить

Google
Dmitry
16.04.2017
19:09:06
Я никак не могу понять нотацию a,b auto range = ["a", "b", "a", "c", "b", "c", "c", "d", "e"]; result = range.sort!((a, b) => a < b) Что `a,b`значат? Первый и второй за ним элементы?

Pavel
16.04.2017
19:11:00
Это аргументы у создаваемой функции

Dmitry
16.04.2017
19:11:13
ну я их смысл понять не могу

Pavel
16.04.2017
19:11:28
Один аргумент a, другой аргумент b. Под такими именами они приходят в тело функции

Dmitry
16.04.2017
19:11:48
т.е. типа "брать по два элемента"?

Pavel
16.04.2017
19:11:52
Смысл в том что для функции сортировки достаточно знать порядок между любяыми двумя элементами

Берется всегда по два элемента, иначе сортировка не работает вообще

Dmitry
16.04.2017
19:12:39
а map! может по два элемента есть?

Pavel
16.04.2017
19:12:57
А вот как именно брать эти 2 элемента - уже куча способов - пузырек, слияние, quick, вставки и т.д.

а map! может по два элемента есть?
Думаю что нет. Там же итерируются элементы всегда по одному

Dmitry
16.04.2017
20:16:24
а в каких случаях кавычки используются? .map!("a + a") почему иногда пишут .map!(a=>a)

Oleg
16.04.2017
22:42:31
В кавычках строка (в некоторых случаях это просто короче), из неё создается функция, которая ничего не знает о контексте map. Когда ты используешь лямбду, то можешь захватывать контекст

Dmitry
17.04.2017
04:12:39
Дык, map!(a=>a) разве знает?

Она без кавычек же

Oleg
17.04.2017
06:46:51
Она без кавычек же
Ещё раз озвучь что ты понял, пожалуйста

Dmitry
17.04.2017
07:10:26
что внутри кавычек создается функция которая ничего не знает о внешем контексте, но я до этого думал, что там где есть нотация "а переходит в а т.е. a=>a" уже тоже создается свой изолированный контекст

Maxim
17.04.2017
07:12:59
я так понимаю, (int a)=>a это аналог int delegate(int a) { return a; }?

Oleg
17.04.2017
07:24:20
Можно быть и делегатом (если захвачен контекст) и функцией, вроде бы

qwerty
17.04.2017
07:25:46
https://dpaste.dzfl.pl/43c76545bcfb да, не работает

Google
qwerty
17.04.2017
07:33:28
только если так https://dpaste.dzfl.pl/36da605fcfbe

Dmitry
17.04.2017
07:43:43
Кстати, а у кого с математикой хорошо и кто хотел бы на работе на Ди писал? Задачи в контексте построения графов дорог и обработки статистики. Просто в теории у нас в конторе не против еще одного Ди-разработчика. Территориально метро Москва м. Таганская. Пока это не 100%, но кому интересно - пишите в личку.

Еще вопрос. Почему сортировка сделана через лямбды (стрелочные функции это же они?), а не простым методом sort?

qwerty
17.04.2017
07:48:01
в той лямбда указывается направление сортировки по возрастанию или по убыванию (в данном случаю по возрастанию)

Dmitry
17.04.2017
07:48:47
и все?

Maxim
17.04.2017
07:50:24
когда ты сортируешь какие-то абстрактные типы данных, у тебя могут быть комплексные критерии сортировки

например, сотрируешь ты структуры, соответствующие записям, не знаю, пациентов, и в зависимости от фамилии и возрастра их нужно выстроить в список, вот в этой функции ты и можешь такое провернуть

Admin
ERROR: S client not available

Maxim
17.04.2017
07:52:38
например, по фамилии по возрастанию, но чтобы еще и по убыванию возраста они стояли

Dmitry
17.04.2017
07:53:08
а...

Oleg
17.04.2017
08:00:29
Для этого же используются и строки

Dmitry
17.04.2017
08:07:28
Олег, если данные живут только внутри скобок, то как они поредаются через UFCS? auto x = mydata.map!(a=>a).sort(a < b) так ведь можно писать?

Dmitry
17.04.2017
08:09:36
ок)

Oleg
17.04.2017
08:13:53
auto x = mydata.sort!("a<b"); или auto x = mydata.sort!((a,b)=>a<b)

в любом случае сорировка работает с сущностью, которая подразумевает приём 2х архументов

Google
Dmitry
17.04.2017
08:14:33
где-то внутри алгоритма прошит механизм выбора двух чисел верно?

Oleg
17.04.2017
08:14:49
да

Dmitry
17.04.2017
08:17:03
скажи, а вот с помощью ламбд имеет смысл пытаться написать функцию которая данные типа: aa_1 aa_3 aa_2 bb_2 bb_1 bb_3 сгруппирует в пары: aa_1 bb_1 aa_2 bb_2 aa_3 bb_3 просто я прихожу к мысли что если у меня нет гарантий что у всех данных будет пара, то это приведет к ошибкам. В том плане наверно без них проще сделать?

Oleg
17.04.2017
08:18:14
мне кажется ты не до конца понимаешь структуру алгоритма, который хочешь реализовать

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

Dmitry
17.04.2017
08:18:47
ну я хотел в одну строку это как-то записать...

Oleg
17.04.2017
08:19:10
можно и с помощью лямбды, но выглядеть будет диковато

Dmitry
17.04.2017
08:19:59
auto x = mydata.sort!("a<b"); или auto x = mydata.sort!((a,b)=>a<b)
а в каком случае вторая нотация будет лучше?

Oleg
17.04.2017
08:20:12
да хз, если честно)

тебе могут потребоваться 3-ие данные

Dmitry
17.04.2017
08:20:53
к примеру сравнить еще с каким-то числом посередке?

Oleg
17.04.2017
08:21:03
auto x = 12; writeln([1,2,3].map!(a=>a*x));

Dmitry
17.04.2017
08:21:11
а...

Oleg
17.04.2017
08:21:31
а вот так нельзя [1,2,3].map!("a*x")

потому что x внутри метода построения функции из строки будет неизвесен

Dmitry
17.04.2017
08:25:40
блин, что ему тут не нравится:



все понял что ему не нравится. Ему тип не понятен, надо так писать: auto x = MySQLTablesRange.array.sort!((a,b) => a[0] < b[0]);

т.к. прилетает кортеж и он не понимает к какому элементу обращаться

qwerty
17.04.2017
08:43:32
можно в SQL сортировать

Dmitry
17.04.2017
08:44:33
я думаю там запрос по группировке согласно тому условию которое я выше написал будет большим

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