@kotlin_lang

Страница 794 из 982
Руслан
06.08.2018
06:10:07
Я не понимаю что нужно побеждать

Alexander
06.08.2018
06:10:21
Я тоже. Оно будет работать и без модулей

Руслан
06.08.2018
06:10:30
Если ваши либы работают на 9, 10, 11 - то все будет работать

Alexander
06.08.2018
06:10:52
Проблема исключительно в новой системе безопасности, которая не дает "ломать" приватные методы

Google
Alexandr
06.08.2018
06:11:32
Если ваши либы работают на 9, 10, 11 - то все будет работать
на сколько я помню там были траблы с тем что надо было модули объявлять что бы все взлетело, если сейчас все ок - то гуд, надо переходить

Alexander
06.08.2018
06:12:21
Можно вообще модульной системой не пользоваться, если не хочется

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

Руслан
06.08.2018
06:13:10
По опыту есть основные проблемы такие: 1. ваш мавен и его плагины упорно не работают на новых джавах, поэтому нужно обновлять систему сборки или переходить на гредл 2. у вас ClassNotFound - все потому что часть JavaEE выпилили из JDK и теперь транзитивные зависимости ваших jaxb, activation и прочей мути придется указать явно 3. у вас asm, bytebuddy (mockito старый например) обновляйтеся И нигде тут котлин специфичных проблем нету, стандартные джава проблемы

Руслан
06.08.2018
06:15:55
У меня рабочий проект собирается и деплоится под jdk10, на гитхабе есть одна либа которая уже тоже под 10-ой собирается на тревисе. Никаких плясок с jigsaw для этого не делал

Артем
06.08.2018
06:19:23
Всем привет. Я чего то может не понимаю, но почему это мне дает true ? "qat".matches(Regex("[\b(ch|qu|th|thr|sch|squ|rh)].*"))

Alexandr
06.08.2018
06:19:32
Привет

Артем
06.08.2018
06:24:20
не попадает в регулярку, вот и не дает
Проблема то наоборот )) Что на выходе true )))

Google
Артем
06.08.2018
06:24:56


Alexandr
06.08.2018
06:26:01
у тебя квадратные скобки лишние

а вообще это оффтоп немного)

отлаживай на том ресурсе и читай доку

на том же ресурсе она есть

Артем
06.08.2018
06:27:03
а вообще это оффтоп немного)
Хех, ну так то да, просто пишу на kotlin вот сюда и написал ))

Проблема видно в каком то фундаментальном не понимании с моей стороны как все это работает , потому что без [] получается false для вот такого варианта "qut".matches(Regex("\b(ch|qu|th|thr|sch|squ|rh).*"))

Alexandr
06.08.2018
06:29:38
чяднт?



бери свои регулярки и давай отлаживать

кстати, внутри строки тебе слеш экранировать надо если чо

Артем
06.08.2018
06:30:14
Не я понял в чем беда

Alexandr
06.08.2018
06:30:37
"qut".matches(Regex("\\b(ch|qu|th|thr|sch|squ|rh).*"))

Артем
06.08.2018
06:31:31
Он кажись считает что (ch|tr) это все равно что "любая из "c" или "h" или любая из "t" или "r"

зачем экранировать ? И так же работает как надо ))

Ну я про \b а не про регулярку в целом

Alexandr
06.08.2018
06:33:16
rtfm

offtop

зачем экранировать ? И так же работает как надо ))
https://stackoverflow.com/questions/23363241/escaping-backslash-in-java-string-literal

Артем
06.08.2018
06:35:51
\b - это управляющй символ как \n тут не надо экранировать

Google
Alexandr
06.08.2018
06:38:13
\b - управляющий в regex, если ты пишешь "\b" - в регулярку уйдет строка "b" и регулярка будет искать совпадением с символом "b", если записать "\\b" - то в регулярку уйдет "\b"

\b - это управляющй символ как \n тут не надо экранировать
ты java не знаешь и kotlin твой первый язык?

Роман
06.08.2018
06:39:34
берёшь idea'ю и делаешь str.matches("<Вот здесь жмёшь Alt+Enter и выбираешь Check RegExp>");

Артем
06.08.2018
06:39:37


Alexandr
06.08.2018
06:39:45
\n - при компиляции заменится на перенос, \b - На символ b, \ - на ничего, а \\ на \, будет экранирование символа \

все правильно

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

Sergey
06.08.2018
09:27:14
подскажите, насколько ktor(https://ktor.io/) может быть произодительным. Его можно взять на замену скажет той же node.js?

Quantum Harmonizer
06.08.2018
09:29:32
подскажите, насколько ktor(https://ktor.io/) может быть произодительным. Его можно взять на замену скажет той же node.js?
На замену node.js можно взять что угодно. А если нужна скорость, то https://github.com/wizzardo/http

dimiii
06.08.2018
09:44:52
А вот вопрос по архитектуре веб приложений на котлин/ктор. Куда принято делегировать обработку фоновых задач? Допустим, запрос к серверу требует от него обратиться к нескольким сторонним ресурсам, но выполнение самого запроса при этом не блокируется и не требует ожидания результатов. Что принято делать в таком случае?

Alexandr
06.08.2018
09:45:50
я думаю можно в корутину завернуть

или сделать таск сервис и в нем корутинами помазать

dimiii
06.08.2018
09:55:34
А еще варианты? если захочется горизонтального масштабирования?

Alexandr
06.08.2018
09:57:03
делаешь а-ля rpc на командах, которые пишутся в очередь и разребаются другим микросервисом

либо кластером сразу

читателей в балансировку ставишь и готово

+ настраиваешь concurrency, во сколько потоков с шины читать будут

в качестве шины можно хоть activemq, хоть rabbitmq/kafka

Google
Dmitry
06.08.2018
10:00:21
А вот вопрос по архитектуре веб приложений на котлин/ктор. Куда принято делегировать обработку фоновых задач? Допустим, запрос к серверу требует от него обратиться к нескольким сторонним ресурсам, но выполнение самого запроса при этом не блокируется и не требует ожидания результатов. Что принято делать в таком случае?
По хорошему эту серию запросов должен делать либо мидлваре сервер, либо непосредственно бекенд сервис. То есть к вебу это имеет такое же отношение, как и к мобильному приложению, которое те же апи может дергать. А на самом сервисе в любую монаду завернуть, смотря что используете. CompletableFuture, Rx Observable, coroutines, whatever.

Quantum Harmonizer
06.08.2018
10:04:36
Чет лайков маловато ?
Ну, высоконагружка — это не так хайпово, как Spring или RxJava, например.

Igor
06.08.2018
10:06:12
А там реально есть существенный выигрышь, по сравнению с тем же undertow

Mikhail
06.08.2018
10:11:34
На замену node.js можно взять что угодно. А если нужна скорость, то https://github.com/wizzardo/http
спасибо за доверие, я тут кстати на свой фреймворк новый проект собираюсь переводить со спринг-бута, так что можно ожидать буст в разработке

Чет лайков маловато ?
лайков маловато, потому что я не умею в маркетинг

undertow хорош, производительность примерно та же

Admin
ERROR: S client not available

Friedrich
06.08.2018
10:19:29
Почому в Котлине "\0" невалидно? Приходится писать "\u0000".

Friedrich
06.08.2018
10:21:56
А почему должно?
Потому что у всех остальных работает.

Дмитрий
06.08.2018
10:22:03
Потому \u0000 это код юникодского символа

А \0 просто 0

Friedrich
06.08.2018
10:22:20
Впрочем, я как-то особо не задумывался, почему такой эскейпинг завели

А \0 просто 0
В Java это не так.

dimiii
06.08.2018
10:29:52
А еще варианты? если захочется горизонтального масштабирования?
Короче, ничего из коробки не нашел. Ничего не хочу засовывать в монады.

Alexander
06.08.2018
10:33:21
Короче, ничего из коробки не нашел. Ничего не хочу засовывать в монады.
Почему не сделать актор на корутинах? Или просто цепочку каналов?

Alexandr
06.08.2018
10:34:50
давайте акку втащим с ремоутом

Alexander
06.08.2018
10:35:20
Не надо никого никуда втаскивать, акторы есть в стандартной корутиновской библиотеке

dimiii
06.08.2018
10:36:22
Почему не сделать актор на корутинах? Или просто цепочку каналов?
Два момента. 1) Я последнее время варюсь немного в другой культуре, которая поощряет выносить подобную обработку в отдельные сервисы (процессы). 2) Все таки пул потоков, в которых работают корутины ограничен.

Google
Alexander
06.08.2018
10:36:24
Я не делаю веб сервисы, но у меня есть диспатч сообщений, есть некоторый объект, у которого есть один входной и несколько выходных каналов. Есть мастер джоб в объекте, от которого наследуются все каналы. Всего кода строк на 50

Два момента. 1) Я последнее время варюсь немного в другой культуре, которая поощряет выносить подобную обработку в отдельные сервисы (процессы). 2) Все таки пул потоков, в которых работают корутины ограничен.
1) это вопрос того, как модули устроены. Этот самый актор может быть в другом модуле. 2) А вот это не понятно, почему проблема. Собственно, корутины для этого и нужны чтобы делать все в фиксированном количестве потоков. Если нет сильно блокирующих операций, то все кул.

dimiii
06.08.2018
10:38:34
> Если нет сильно блокирующих операций, то все кул. Блокирующих в пол-шишечки

Alexander
06.08.2018
10:38:53
Насколько я понял акторы (https://github.com/Kotlin/kotlinx.coroutines/blob/master/coroutines-guide.md#actors) для таких вещей и сделаны. Пока сам не пробовал, только документацию читал.

Ну значит надо сделать совсем не блокирующими. По крайней мере на стороне диспатчера.

Типа послал сообщение и забыл пока ответ не прилетел.

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

dimiii
06.08.2018
10:40:38
Ну в любом случае, можно завести свой пул

Ну да

Alexander
06.08.2018
10:40:54
indeed

Я правда наверное не стал бы рекомендовать так делать, лучше все сделать совсем неблокирующимся, но если время и силы ограничены...

Руслан
06.08.2018
11:03:10
Долго не мог заинжектать гусем private val routes: Set<Route<*>> помог JvmSuppressWildcards private val routes: @JvmSuppressWildcards Set<Route<*>>

Руслан
06.08.2018
11:04:17
Проблема в том что котлин тут делал Set<? extends Route<?>> а Guice хотел Set<Route<?>>

Alexandr
06.08.2018
11:05:03
а in/out не влияли?

Руслан
06.08.2018
11:05:41
к star projection не применим

Alexandr
06.08.2018
11:06:43
а, точно

Quantum Harmonizer
06.08.2018
11:13:11

Страница 794 из 982