@dlangru

Страница 153 из 719
Maxim
14.04.2017
11:24:38
а вот кстати вопрос, зачем это вообще под винду собирать?)

Dmitry
14.04.2017
11:24:51
в плане?

Maxim
14.04.2017
11:25:02
это же будет на каком-то сервере крутиться?)

Dmitry
14.04.2017
11:25:13
ну в перспективе да

Google
Maxim
14.04.2017
11:25:24
ну так взять виртуалку и собирать там)

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

Dmitry
14.04.2017
11:26:25
мне Linux не сильно лучше винды кажется...

там своих приколов хватает

Maxim
14.04.2017
11:26:43
единственное, под убунту старше 17.04 нет собранных пакетов для нового ldc2

не знаю, 9 лет основной системой на домашнем компьютере использую Kubuntu, все замечательно)

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

но вот конкретно с D проблем там гораздо меньше, а раз все равно программа будет крутиться на сервере, собрать один раз тестовую виртуалку и не париться)

Dmitry
14.04.2017
12:01:45
Олег, а нет идей почему релизная сборка заработала?

Кстати, в конструкторе делаю коннект. может не лучшая идея, но отдельно делать методы pgconnect() и mysqlconnect() как-то не особо хочется. Норм будет если я в конструкторе try-catch заюзаю или есть варианты получше?

Денис
14.04.2017
12:05:30
разработка под виндой — это же боль и страдания, если сравнивать с линуксом)
Везде свои подводные камни. На линуксе проще самому настроить скажем так целиком среду и понимать что у тебя откуда следует и почему что-то не линкуется/бажит и т.д. На винде есть вижак, который за тебя всё делает. Если он чего-то не делает, то ты в жеппе в принципе, но он делает так много и круто, что можно с этим жить.

Google
Dmitry
14.04.2017
12:06:56
this(Config config) { this.config = config; pgconnection = new PGConnection( .... ]); mysqlpool = new MySQLPool( .... ); try { this.mysqlconnection = mysqlpool.lockConnection(); } catch(Exception e) { writeln(e.msg); // бросить исключение уровнем выше? или как-то иначе прервать выполнение? } }

Dmitry
14.04.2017
12:22:12
а как находясь в блоке catch выполнение приложения прервать кроме как исключение кинуть? т.е. именно выход сделать. Или только кидать исключение выше, там ловить и там уже return делать?

Oleg
14.04.2017
12:22:30
Олег, а нет идей почему релизная сборка заработала?
возможно это какой-то косяк компилятора и он собирает немного разный код для debug и release версий

разный с точки зрения линковщика (имена может где-то разные)

try-catch нужно делать там, где ты можешь принять решение

Dmitry
14.04.2017
12:24:06
просто не хочу подключения в отдельный метод выносить, хочу чтобы при создании экземлляра класса оно подключалось

Oleg
14.04.2017
12:24:55
если это программа с gui то, вероятно это должно дойти до пользователя, например вывести сообщение "порт нельзя открыть, возможно Вы наебались при вводе"

пользователь уже на уровне его ответственности может ввести другой порт/адрес/итд и попробовать снова

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

Dmitry
14.04.2017
12:27:51
А если консольная и путь только один. Выйти и попросить конфиг поправить?

Oleg
14.04.2017
12:28:29
думаю да, следует вывести нормальное сообщение об ошибке и завершить программу

при этом лучше завершить её с кодом отличным от 0

тоесть функция main должна возвращать int

Evil
14.04.2017
12:29:09
https://github.com/sel-project/sel-server что за ёбаныйнахуй?? Мир всё больше сходит с ума!

Oleg
14.04.2017
12:30:39
https://github.com/sel-project/sel-server что за ёбаныйнахуй?? Мир всё больше сходит с ума!
может это его стартап с продуманной монетизацией?))))

Evil
14.04.2017
12:30:42
Хотя этот проект, определенно, утверждает неральную крутость D :)

Как я говорил выше, я тут затусил с ребятами из www.magikcraft.io и эту ночь, основатель проекта, сидел вкуривал D. Его пропёрло, решил делать на нем микро-сервисы.

Pavel
14.04.2017
12:32:06
yeah ?

Google
Pavel
14.04.2017
12:32:27
Так будет прирастать секта фанатов D

Dmitry
14.04.2017
12:32:43
Олег, вот поймал я исключение в кетче и как из него приложение завешить? Исключение выше кинуть и в main сделать return -1 ?

Петь, ты в этом плане крут) похвально)

Олег, как-то так: Database database; try { database = new Database(config); } catch(Exception e) { return -1; } ?

и исключения кидаем из конструктора database

Evil
14.04.2017
12:36:46
Dmitry
14.04.2017
12:40:11
м... тогда наверно лучше в main сделать: scope(failure) return -1; return 1;

Evil
14.04.2017
12:40:12
обля https://github.com/huntlabs/hunt а это что за зверь? Убийца вайба?

Dmitry
14.04.2017
12:40:25
Петь, да только глючный ппц

у них свой ивент-луп

но качество кода пол года назад было просто никакое. часто опечатки были в релизе вроде: "maen()" вместо "main()"

Evil
14.04.2017
12:41:53
Да похуй, ебошад же

последний коммит семь часов назад

Dmitry
14.04.2017
12:42:26
ну может и выйдет какой-то толк...

Evil
14.04.2017
12:44:09
года проекту еще нет

норм норма

Oleg
14.04.2017
12:46:37
стой, ты чего-то не знаешь об этой жизни)

программа завершается успешно, если код возвращает равный 0

Google
Oleg
14.04.2017
12:48:01
при этом scope (failure) return N; где N != 0 нужно в начале main писать

Dmitry
14.04.2017
12:48:20
а если в конце?

Oleg
14.04.2017
12:48:33
тогда просто исключение вылетит со стэктрейсом

потому что scope (failure) ... будет работать только после того, как объявлен

да и я бы так не делал

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

лучше так: int main(string[] args) { try return app_main(args); catch (Throwable e) { stderr.writeln(e.msg); return 1; } }

во

ну можно и просто Exception ловить

вот тут сейчас вспомнил, что рыжий — урод (S.Ludvig, автор vibe.d и dub) и он юзает в своём vibe.data исключения какие-то странные и при ошибке парсинга json ты получаешь какую-то совсем астрактную ошибку из разряда "что-то пошло не так" и тип у неё не vibe'овский

Admin
ERROR: S client not available

Maxim
14.04.2017
12:55:25
что-то этот хант, судя по беглому осмотру, какая-то жесть

Maxim
14.04.2017
12:55:43
я там даже намека на неблокирующую обработку запросов не нашел

Oleg
14.04.2017
12:56:07
они сначала всегда жесть делают, а потом быстро учатся и норм начинают)

Maxim
14.04.2017
12:56:08
видимо, каждый запрос к серверу блокирует обработку, пока не закончится)

ну или я чего-то не понимаю)

Oleg
14.04.2017
12:56:50
ну или я чего-то не понимаю)
может модель как у apatch?

типа поток на запрос?

Maxim
14.04.2017
12:57:52
ну это жесть в текущих реалиях)

Google
Evil
14.04.2017
12:58:18
Где это посмотреть?)

Dmitry
14.04.2017
12:59:01
кстати, про поток на запрос. По идее щас куча устройств с 8 ядрами на базе того же ARM т.е. если идти от потоков то можно дофига коннектов держать. Пусть на ядро 30 потоков. 30x8=240 потоков одновременно без тормозов. Понятно что это 240 не 10k но все же

Evil
14.04.2017
12:59:30
на этом же крутится, нет collie ?

Pavel
14.04.2017
12:59:35
Фигня в том что эти потоки каждый раз создаются и умирают

Если были бы потоковые префорки, то уже гораздо лучше.

Dmitry
14.04.2017
12:59:52
вроде планировщик ОС умеет их в сон кидать

Evil
14.04.2017
12:59:54
An asynchronous event-driven network framework written in D. Contains mqtt, http, flatbuffers, protobuf codec.

Oleg
14.04.2017
13:03:05
файберы внутри потоков, когда поток на ядро это вообще самый сок

чтобы ещё файберы перебрасывались при блокировке потока

Dmitry
14.04.2017
13:03:46
понятно дело что расходы будут, но я не думаю что там при 30 потоках они будут значимые

т.е. ты процентов 10 времени будешь на переключение терять не больше ИМХО

Oleg
14.04.2017
13:04:34
т.е. ты процентов 10 времени будешь на переключение терять не больше ИМХО
а это много, хотя я и не уверен, что цифра близка к реальности

да и 30 соединений это как-то кисло

Dmitry
14.04.2017
13:06:01
с форума: "My 50 lines of C++ show for Linux (QuadCore Q6600) the context switch time ~ 0.9us (0.75us for 2 threads, 0.95 for 50 threads). "

http://bobah.net/d4d/source-code/misc/context-switch-benchmark-posix-cpp

http://stackoverflow.com/questions/21887797/what-is-the-overhead-of-a-context-switch

for core2 and modern Linux context switch may cost 5-7 microseconds

процесс со средним приоритетом (очень примерно) порядка 100 микросекунд занимает

т.е. оверхэд на переключение порядка 7%

очень не хватает возможности как в Swift (кажется) форматировать сложные строки путем простановкой переменных на местах т.е.: writeln("my x is {myxvalue} some other text");

Pavel
14.04.2017
13:52:06
как в php )

Dmitry
14.04.2017
13:52:13
вот тут в примере для диапазона вызывается метод close: зачем это делается?

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