@dlangru

Страница 284 из 719
Andrey
10.10.2017
19:23:39
как минимум они идут в комплекте с тестами

qwerty
11.10.2017
18:05:40
добрый день!

у нас есть что-нибудь такое для constraint if(T in [char, string, immutable string, immutable char])?

или придется писать предикат с множеством "или"?

Google
Dmitry
11.10.2017
18:11:54
погоди, это что проверка на вхождение?

qwerty
11.10.2017
18:12:02
да

Andrey
11.10.2017
18:24:32
есть вррде, смотри std. traits. типа isSomeString

qwerty
11.10.2017
18:25:02
да, уже нашел этот shortcut

ладно

буду внимательнее std смотреть

Oleg
11.10.2017
21:44:21
Кто-нибудь пробовал? https://nightlies.dlang.org/dmd-newCTFE/

Dmitry
12.10.2017
05:59:38
Это в след релизе уже будет?

Можно пару кейсоф где ctfe новый полезен будет. Я правда и про старый не особо в теме

Anatoly
12.10.2017
08:10:16
Можно пару кейсоф где ctfe новый полезен будет. Я правда и про старый не особо в теме
эм... https://dlang.org/spec/function.html#interpretation https://tour.dlang.org/tour/en/gems/compile-time-function-evaluation-ctfe https://p0nce.github.io/d-idioms/#Compile-time-RNG ну и про новый тут https://dlang.org/blog/2017/04/10/the-new-ctfe-engine/

ну и новый будет полезен там где старый жрёть память, например)

Stepanos
12.10.2017
08:20:20
ну для всяких генераторов надо? :)

Eto
12.10.2017
08:21:44
Ещё как.

Google
Eto
12.10.2017
09:27:47
Помнится была проблема. Разрабатывал сервер на vibed. Сама разработка была под виндой, сервер на линуксе конечно же. Изначально у сервера было то ли 0.5 то ли 1 гиг оперативки. На сервере не получалось собрать. Компилятор выжирал всю память и падал.

Dmitry
12.10.2017
11:08:14
Да, я с этим тоже имел дело: vibe при сборке ест больше гига памяти. На вирт.сервере с 1 гб оперативки он не мог проектик собрать, пока я своп не включил. Со свопом собирается, но одна из фаз (сборка одной из частей вайба) занимает минут 10. После этого проекты собираются уже быстро, до тех пор пока сам вайб перекомпилять не понадобится.

Dmitry
12.10.2017
11:30:48
Там если что ключ есть что-то типа --single file

это когда памяти совсем мало

Eto
12.10.2017
11:36:46
Раньше такого видимо не было.

Dmitry
12.10.2017
11:37:10
этому флагу 100% больше 2 лет, я за его правильность не ручаюсь. щас погуглю

Вот --build-mode=singleFile

Ievgenii
12.10.2017
13:53:58
Вообще нужно правильно проектировать своё приложение. Ядро делать статическим, а остальное выносить в *.so

Тогда пересобирать нужно будет только то, что поменялось

+ можно будет делать горячий перезапуск

Eto
12.10.2017
14:01:33
??

Только никто сейчас так не делает.

Ievgenii
12.10.2017
14:22:03
Я делаю

Pavel
12.10.2017
14:30:20
А как оформляешь библиотеки? Как подпакеты в dub ?

Dmitry
12.10.2017
15:19:58
@deviator скажи, а вот какой плюс был в Гуи на файберах которые ты делал нежели на потоках? Была причина почему ты от потоков отказался. Казалось бы отрисовка интерфейса один поток, все остальное — другой

Oleg
12.10.2017
15:22:18
@deviator скажи, а вот какой плюс был в Гуи на файберах которые ты делал нежели на потоках? Была причина почему ты от потоков отказался. Казалось бы отрисовка интерфейса один поток, все остальное — другой
особой причины не было, но в итоге нет никаких синхронизаций/мьютексов и тд -> проще программа на тот момент целью было сделать быстро, а отладка многопоточной программы это чуть сложнее чем однопоточной

Dmitry
12.10.2017
15:23:14
ты какой-то гуи движок делал?

Или как это выглядело? Просто я не совсем понимаю в какой момент файберы использовались

Oleg
12.10.2017
15:24:00
а как раньше ты гуи использовал?

ты какой-то гуи движок делал?
не нравится слово "движок" потому что каждый под ним может понимать своё

Google
Dmitry
12.10.2017
15:26:43
ну вот в предположим у тебя есть какой-то тулкит с набором кнопок. Каждая кнопка делает какую-то операцию. Допустим одна файл сжимает. Но наверно ты не в файберах же запускал процес сжатия файла?

Dmitry
12.10.2017
15:32:14
а какие операции были вынесены в айберы? Ну просто как пример. Запросы принять\отправить?

Oleg
12.10.2017
15:32:28
всё в файберах

ну тоесть часть программы в одном, часть в другом

одна часть программы общается с устройством (серийный порт, modbus), другая рисует в гуи инфу с устройства и имеет кнопочки для запуска разных процессов (калибровка, изменение серийного номера и тд), сами процессы выполняются частью, которая общается с устройством

Dmitry
12.10.2017
16:41:16
угу, понал, спасибо. А про какие проблемы многопоточности ты говорил в С++? Я просто погуглил но ничего внятного не нашел

Oleg
12.10.2017
16:44:01
угу, понал, спасибо. А про какие проблемы многопоточности ты говорил в С++? Я просто погуглил но ничего внятного не нашел
Часть из них убирается системой типов в D, но ты ловишь геморрой борьбы с системой типов как раз, чего собственно в C++ нет

Dmitry
12.10.2017
16:44:57
а можно какой-то очень простой пример? Ну так чтобы на пальцах. Просто я не могу понять откуда там проблемы вылезают

Ievgenii
12.10.2017
16:49:12
Наверное синхронизации данных или блокировки

Dmitry
12.10.2017
16:50:08
Наверно все же про С++

Oleg
12.10.2017
16:50:44
Возможность выстрела себе в ногу в каждой момент времени

Компилятор за тебя не проверяет разделяемые или нет данные

Ты должен следить за всем сам

Ievgenii
12.10.2017
17:10:05
Если писать серверное приложение, куда интереснее сделать асинхронную обработку через брокер сообщения, чтобы можно было масштабировать.

Oleg
12.10.2017
21:56:05
https://dlang.org/changelog/2.077.0_pre.html#mangleBackref

Правильно ли я понимаю что gdb будет тупить некоторое время, пока не поправят?

u13147
12.10.2017
22:01:02
Ага, что-то вроде того.

Dmitry
13.10.2017
05:28:45
https://github.com/ErisBlastar/cplusequality

Google
Dmitry
13.10.2017
05:28:54
Код мякотка вообще

Dmitry
13.10.2017
08:56:23
Компилятор за тебя не проверяет разделяемые или нет данные
А Ди разве умеет проверять? Я же могу из двух потоков к одним и тем же данным обращаться объявленным глобально

Maxim
13.10.2017
08:58:38
По умолчанию в ди все thread local

Oleg
13.10.2017
09:05:44
А если и shared, то он будет требовать отсутствия публичных полей, только методы, причем только shared методы доступны для вызова у shared объекта

Сделано это для того чтобы ты не использовал обычные для доступа к полям, ибо подразумевается что в shared методах ты обеспечишь синхронизацию

Eto
13.10.2017
09:09:41
__gshared (если правильно помню) же это позволяет обойти?

https://github.com/ErisBlastar/cplusequality
Описание супер. :)

Oleg
13.10.2017
09:16:47
Это ж злой хак

Который даже с двух нижних подчеркиваний начинается чтобы его не красиво было использовать)

Admin
ERROR: S client not available

Oleg
13.10.2017
09:17:53
Но типа 'если очень надо, то можно'

Dmitry
13.10.2017
10:23:06
А если я просто к примеру переменную объявлю, я разве не смогу из двух потоков к ней обращаться без модификатора shared ?

Andrey
13.10.2017
10:33:19
каждый поток будет обращаться к своему экземпляру переменной

Dmitry
13.10.2017
10:40:35
даже если она объявлена в скоупе выше?

Andrey
13.10.2017
10:52:19
да

в Ди по умолчанию переменные хранятся в TLS, уже говорили много раз)

на books.ru кстати сегодня увидел, книжка "Язык программирования D" в электронном виде, 390 рублей. может кому интересно. 2012 года издание правда

Dmitry
13.10.2017
12:12:10
Кстати, чтобы там пhо Раст не говорили, что мол самый безопасный язык, но нефига. Прога вот на нем только что вылетела "thread 'main' has overflowed its stack"

Google
Pavel
13.10.2017
12:12:41
А ты еще и на расте пишешь?

Pavel
13.10.2017
12:21:25
конечно же

qwerty
13.10.2017
12:21:52
мне ее надо как-то отсортировать и превратить в одномерный массив?

Dmitry
13.10.2017
12:23:22
А ты еще и на расте пишешь?
нет, просто pijul на нем написанный смотрел

Pavel
13.10.2017
12:24:09
мне ее надо как-то отсортировать и превратить в одномерный массив?
а хотя постой... Если ты ищешь в бинарном дереве по ключу, то может и нельзя

qwerty
13.10.2017
12:24:32
по AST бегаю

Pavel
13.10.2017
12:24:38
Но вроде я где-то видел пример

qwerty
13.10.2017
12:24:55
это никак не связано с FCGI, просто решил отвлечься от сетей)

Pavel
13.10.2017
12:25:02
А ну тогда рекурсивно запускаешь поиск в правом поддереве, а в другом треде - поиск в левом поддереве

qwerty
13.10.2017
12:27:51
это понятно, что если поток в левом ничего не нашел и освободился? Надо как-то его занять другими найдеными ответвлениями. Нужен какой-то стек

а я ведь хотел просто parallel заюзать)

Pavel
13.10.2017
12:31:31
Ну, если заморочиться, можно как-то придумать на каждом узле создавать задачу по обходу и класть ее в стек. Потом когда все дерево таким образом пройдено, начинаем обратно доставать задачи из стека и распределять их по тредам.

Pavel
13.10.2017
12:33:00
Или наоборот, задачи кладем в очередь в процессе обхода, а освободившиеся треды забирают эти задачи из очереди и работают над ними.

Можно в гугле как всегда почитать мыслей ) https://stackoverflow.com/questions/2225865/strategy-to-implement-tree-traversing-algorithm-in-parallel

qwerty
13.10.2017
12:34:20
сейчас подумаю...

спасибо @chebotarevp

кстати у меня есть вопрос...) Не было времени на статью?

Pavel
13.10.2017
12:35:16
Пока нет

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