@dlangru

Страница 177 из 719
Oleg
23.05.2017
21:14:50
Есть несколько разнородных вакансий: производство, программирование, электроника/схемотехника

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

Denis
24.05.2017
02:36:04
На dlang.org! Там раздел с мощным посещением на эту тему

Если касаться ди

Google
Dmitry
24.05.2017
05:58:32
Территориально Зеленоград?

Oleg
24.05.2017
09:29:49
на D?!
в ближайший проект нет, но на следующий за ним да

Территориально Зеленоград?
территориально мосрентген

Dmitry
24.05.2017
09:31:16
кузнецкий мост?

Oleg
24.05.2017
09:32:58
юг за мкадом 5км

Pavel
24.05.2017
09:53:14
Т.е это в 5 минутах езды от меня :)

Dmitry
24.05.2017
11:41:11
Я правильно понимаю, что LDC скоро отвяжется от 64-битного линкера MS https://github.com/ldc-developers/ldc/issues/2028

Denis
24.05.2017
13:08:06
Это хорошо или плохо?

Dmitry
24.05.2017
13:09:24
по идее хорошо — для 64 бит студия на Window нужна не будет

Oleg
24.05.2017
13:20:53
Я правильно понимаю, что LDC скоро отвяжется от 64-битного линкера MS https://github.com/ldc-developers/ldc/issues/2028
очень печально, что у них достаточно медленно разработка идёт

так что этот issue может долго висеть, пока кто-нибудь не решит, что можно потратить пару дней на него

Dmitry
25.05.2017
14:09:52
Кстати, в std_string есть две функции разбития строк: lineSplitter и splitLines как я понимаю разница только в том, что одна приводит к аллокации, другая нет. Вопрос. Зачем нужно две тогда вообще. И каким макаром работает та которая не приводит к аллокации?

Google
Denis
25.05.2017
14:11:33
слайсы возвращает?

Dmitry
25.05.2017
14:11:59
S[] splitLines auto lineSplitter

и в array есть [] split()

не говоря уже о сплиттерах в std.algorithm

Andrey
25.05.2017
14:23:38
вот как раз про splitter http://dlang.org/blog/2017/05/24/faster-command-line-tools-in-d/. splitter - ленивый, split аллоцирует сразу всё

Dmitry
25.05.2017
14:27:20
ну хорошо, допустим два это нормально, но их же как я понимаю 4 если не больше. Есть ли в этом смысл? Просто может проще их как deprecated сделать?

Andrey
25.05.2017
14:39:27
string.lineSplitter - видимо там свои тонкости, связанные с utf8 например. так что, больше сплиттеров, хороших и разных

Oleg
25.05.2017
20:04:50
есть у нас некий appender над статическими массивами в std?

видимо нету

кто-нибудь плотно использовал Appender?

тот что в std.array

Dmitry
26.05.2017
05:36:45
Олег, я на SO про него спрашивал в контексте аллокации недавно. Щас постараюсь ссылку найти

Oleg
26.05.2017
09:14:13
Хотя с Appender всё ок, есть вопросы к RefAppender

Dmitry
26.05.2017
12:16:20
Так, я с нова к БД вернулся. К теме как быть если коннекшен нужен в нескольких местах. А если мне класс просто статическим сделать?

Maxim
26.05.2017
12:19:29
Класс чего?

Dmitry
26.05.2017
12:19:46
класс в котором создается подключение к БД

Maxim
26.05.2017
12:20:12
сделай, почему бы и нет)

Dmitry
26.05.2017
12:20:47
просто до этого про синглтон очень долго говорили, но потом я про статический класс вспомнил. В чем минусы его будут?

Maxim
26.05.2017
12:21:39
да примерно те же

микрософт называет этот подход Ambient context, проблемы в большинстве случаев те же, что и у единого сервис-локатора, только нигде не надо таскать с собой ссылку на класс сервис-локатора

Google
Maxim
26.05.2017
12:23:53
для инфраструктурных вещей типа коннекшенов, локалей, логирования, вполне подходящий способ

Dmitry
26.05.2017
12:24:49
@ahdenchik там в итоге каждый свое советовал. Вариантов много было. А в чем профит тогда сингл-тона если есть статический класс?

Maxim
26.05.2017
12:26:25
синглтон — это шаблон проектирования, в принципе, абстрактный класс со статическими методами вполне себе можно назвать синглтоном)

особенно, когда в языке есть статические конструкторы)

синглтон в виде объекта имеет смысл делать, когда он инициализируется с какими-то параметрами (конструктор вызывается с параметрами), а потом должен быть один на все время выполнения программы

Denis
26.05.2017
12:28:27
когда то был 1 монитор и всё было ок, а потом оказалось что их может быть 10

тебе нужен 1 класс, который реализует все запросы к базе по очереди

и его смогут дёргать все желающие

https://github.com/DSoftOut/pgator у нас оно сделано так, можешь подсмореть

Maxim
26.05.2017
12:30:24
ну вообще да, @ahdenchik прав, если в будущем подразумевается многопоточность, то либо очередь запросов, либо параллельно коннешены, если база позволяет)

Dmitry
26.05.2017
12:30:34
@ahdenchik там в каком месте смотреть?

Denis
26.05.2017
12:30:42
щаа

Dmitry
26.05.2017
12:31:13
Denis
26.05.2017
12:31:43
ошибся с софтиной, вот https://github.com/denizzzka/vibe.d.db.postgresql

прямо в примере смотри

зачем статический?

Dmitry
26.05.2017
12:34:38
смотрю...

типа shared PostgresClient client; создает переменную доступную для всех и дальше ею и пользуемся?

Google
Denis
26.05.2017
12:36:28
ага

Dmitry
26.05.2017
12:38:07
а при многопоточном доступе глюков не будет?

Denis
26.05.2017
12:38:08
можешь это и юзать, кстати - оно к vibe.d относится улсовно

не должно быть

Dmitry
26.05.2017
12:53:12
тогда по логике и конфиг нужно shared делать он же один для всех

и еще кучу других вещей, которые глобально должны быть видны

Denis
26.05.2017
12:54:08
Поэтому и сделан один класс. Писать рамшаренное сложно

Расшаренное

Dmitry
26.05.2017
12:54:38
в плане сложно?

Denis
26.05.2017
12:55:46
Shared очень вирусная штука

Admin
ERROR: S client not available

Denis
26.05.2017
12:55:57
Тянет за собой много всего

Dmitry
26.05.2017
12:56:03
к примеру?

Oleg
26.05.2017
12:57:09
к примеру?
если что-то shared, то всё что внутри должно быть либо защищено синхронизацией, либо тоже shared

Dmitry
26.05.2017
12:57:36
коннект к БД нужно как-то защищать?

Oleg
26.05.2017
12:57:55
вообще иногда можно получить многопоточное приложение, которое работает с той же скоростью, что и обычное из-за большого количества взаимодействий и, следовательно, синхронизирующих блокировок выполнения

Dmitry
26.05.2017
13:19:11
@ahdenchik получается что shared static this() { } можно только один раз объявлять\инициализировать?

Как данную ошибку исправить?



Oleg
26.05.2017
13:40:52
вместо new писать new shared

Google
Oleg
26.05.2017
13:41:09
чтобы создать именно shared объект

блин

Dmitry
26.05.2017
13:42:40
исправил, появилась ошибка: `database.d(46,20): Error: none of the overloads of '__ctor' are callable using a shared object, candidates are: mysql-native-1.0.0\mysql-native\source\mysql\pool.d(80,3): mysql.pool.MySQLPool.this(string host, string user, string password, string database, ushort port = cast(ushort)3306u, uint maxConcurrent = 4294967295u, SvrCapFlags capFlags = cast(SvrCapFlags)33293u)`

Oleg
26.05.2017
13:42:52
ну в ошибке то всё написанно

нет конструктора, который бы создавал shared объект

Dmitry
26.05.2017
13:43:24
т.е. либа работать не будет?

Oleg
26.05.2017
13:43:37
ты, конечно, можешь просто кастануть

но не факт, что другие методы есть synchronized или shared

но касты это обход системы типов и чревато, если ты не до конца понимаешь что делаешь

Dmitry
26.05.2017
13:44:34
короче сама либа должна была иметь подобный конструктор, так?

Oleg
26.05.2017
13:44:41
да

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

Dmitry
26.05.2017
13:45:08
либы в которых этого нет они как называются? однопоточные?

Oleg
26.05.2017
13:45:11
хотя можно и так сделать

да хз как они называются))))

потоконебезопасными называются либы, в которых не учтена синхронизация

но в D есть система типов

и следовательно ты просто так не сможешь такой код использовать в многопоточном стиле

в целом можно намутить обёртку с синхронизацией

но это тоже работа

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

может быть и удастся собрать, но многопоточное приложение без синхронизации это полный ад

Dmitry
26.05.2017
13:49:32
Кстати, драйвер Postgres почему-то заработал просто с new без new shared

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