@kotlin_lang

Страница 722 из 982
Sergey
25.06.2018
13:55:19
около 200 вроде

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

Mikhail
25.06.2018
13:56:03
и есть разница с неблокирующей реализацией?

Google
Sergey
25.06.2018
13:56:25
в плане реализации или использования памяти?

Mikhail
25.06.2018
13:57:06
в плане производительности

памяти не много должно жрать

Sergey
25.06.2018
13:57:41
в плане производительности разницы ощутимой не должно быть, а вот использование памяти раз в 6 уменьшится

Mikhail
25.06.2018
13:57:56
если брать стек по 256кб, то это всего 50 мегабайт

Quantum Harmonizer
25.06.2018
14:01:42
Это как?
Class::method

Dmitry
25.06.2018
14:06:10
Т.е. весь код лямбд только в статик методы пихать?

OlegKrikun
25.06.2018
14:06:46
Class::method
Reference::method скорее, не?

Quantum Harmonizer
25.06.2018
14:07:09
Reference::method скорее, не?
это bound, оно захватит reference, чего требовалось избежать

Konstantine
25.06.2018
14:07:32
Не лямбду, а обычную функцию можно написать так, чтобы передать ее как аргумент? Например, в observable<String>.map, чтобы не городить внутри там, а передать как аргумент - обязательно создавать переменную лямбду?

Quantum Harmonizer
25.06.2018
14:08:03
Т.е. весь код лямбд только в статик методы пихать?
Не только. Например, class T { fun smth() = ... } -> T::smth типа T.() -> ...

Dmitry
25.06.2018
14:17:25
Не только. Например, class T { fun smth() = ... } -> T::smth типа T.() -> ...
Синтаксис зарезервирован на будующее. Да и странно было бы на каждый вызов функции создавать класс в котором она определена..

Google
Dmitry
25.06.2018
14:27:22
Кто зарезервирован? я пишу так. Зачем новый класс-то?
T::smth() для функции в классе, а не компаньене, не работает, инстанса то нет.

Quantum Harmonizer
25.06.2018
14:27:40
T::smth() для функции в классе, а не компаньене, не работает, инстанса то нет.
работает, только в неё надо будет передать инстанс

ThisClass::method(this) эквивалентно this.method()

Lev
25.06.2018
14:28:02
я не понимаю корутины в упор

Dmitry
25.06.2018
14:28:50
Тогда какой смысл в этом синтаксисе? Можно и просто метод вызвать и зиса, зацепив в лямбду ссылку на родителя

Kirill
25.06.2018
14:29:06
я не понимаю корутины в упор
Посмотрите доклады Романа Елизарова. Он всё отлично объясняет.

Quantum Harmonizer
25.06.2018
14:29:20
Dmitry
25.06.2018
14:29:20
Мне статические методы нужны, но чтобы не создавать компаньена, потому что он страшный.

Quantum Harmonizer
25.06.2018
14:29:37
Dmitry
25.06.2018
14:29:41
Так если в лямбде передается зис, она его захватывает

Dmitry
25.06.2018
14:30:20
Вон только если так, но тогда эти методы будут везде доступны

Quantum Harmonizer
25.06.2018
14:30:34
можно приватные

Dmitry
25.06.2018
14:32:36
О и правда можно приватные топ левел. Но всеравно страшно.

Хочу ключевое слово при обьявлении лямбды, которое запретило бы внутри лямбды обращаться к методам класса. Заодно это сделало бы корутины юзабельными не только для написания библиотек

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

Dmitry
25.06.2018
14:35:14
кем ними?

Quantum Harmonizer
25.06.2018
14:35:41
кем ними?
с функциональными объектами

Google
Quantum Harmonizer
25.06.2018
14:35:52
которые ты хочешь заставить ничего не захватывать

Dmitry
25.06.2018
14:36:38
Колбек например, который говорит евенту что сделать при закрытии диалога. А евент на его открытие. Потом колбек просто вызывается

Но наглядный и всем понятный пример - корутины. Код типа val mySize = async { featureList.size() } Не должен по умолчанию компилироваться.

Quantum Harmonizer
25.06.2018
14:41:28
есть задача на сериализуемые корутины, там предлагается сделать аннотацию и заставить компилятор гарантировать глубокую сериализуемость Continuation'ов

не то, но близко. И поможет образатывать onActivityResult в анд**иде.

Dmitry
25.06.2018
14:44:05
Но ведь для этого не обязательно гарантировать, что код, который в корутине выполняется, сериализуем.

Неужели я первый, кто об этом подумал -) Что-то не так.

dimiii
25.06.2018
15:01:10
Но ведь для этого не обязательно гарантировать, что код, который в корутине выполняется, сериализуем.
Всегда можно вынести проверку в style checker. Вот, кстати, вопрос к тем, кто их использует - где удобнее писать расширения в detekt или в ktlint?

По звездам и прочим формальным количественным параметрам очень похожи - прямо вот фотофиниш нужен. После беглого осмотра мне больше ktlint симпатичен

Alexander
25.06.2018
15:30:56
О и правда можно приватные топ левел. Но всеравно страшно.
Насколько я понимаю, тогда это уже не лямбды. Они по определению захватывают окружение.

Anton
25.06.2018
15:32:37
Есть ли в Котлине typesafe синтаксическая надстройка над jpa наподобие querydsl или jinq? И вообще как обстоит дело с orm фреймворками?

Mi
25.06.2018
15:46:08
Оно https://github.com/JetBrains/Exposed ?
Это просто над jdbc, не jpa

Anton
25.06.2018
15:55:21
Exposed -- хороший фреймворк, но приходится каждый раз вручную прописывать джоины, что не особо удобно для больших моделей.

Dmitry
25.06.2018
16:29:35
dimiii
25.06.2018
16:32:01
Лямбды не захватывают, если поля родителя не трогать.
Александр про то, что лямбды замыканием богатеют ) Кстати, не так уж сложно свои правила описывать, можно зацепиться за https://github.com/shyiko/ktlint/blob/41e7118a33ccefce055547afd053f53ba05a988b/ktlint-ruleset-standard/src/main/kotlin/com/github/shyiko/ktlint/ruleset/standard/NoItParamInMultilineLambdaRule.kt в качестве примера

Dmitry
25.06.2018
16:38:17
Неужели я первый, кто об этом подумал -) Что-то не так.
Не первый :) у нас время от времени всплывает этот случай, и в него уже вложено некоторое количество мыслительных усилий :) Там основная проблема, что очень не хочется прибивать гвоздями в компиляторе прям специально этот случай, хочется чтобы это работало в рамках некоторой общей системы

Bogdan
25.06.2018
16:41:54
Может помогут контракты ну их пока нет для обычных смертных

Anna
25.06.2018
17:18:10
Друзья! Поставьте звездочку проекту на GitHub - (правый верхний угол) https://github.com/sourcerer-io/sourcerer-app Ребята делают классный сервис для визуализации профайлов разработчиков на основе кода в GitHub. Фидбек по сервису очень приветствуется!

Google
1337
25.06.2018
17:22:05
помоги лайком бабушке...

Anna
25.06.2018
17:23:20
помоги лайком бабушке...
Бабушка страдает без звёздочек! Отзывом о сервисе тоже можно помочь ;)

Anatoly
25.06.2018
17:24:51
Большая часть проекта написана на Котлине. Sourcerer App это конкретно тот компонент, который собирает статистики. Работает локально и в клауде. Да, фидбек очень приветствуется.

Kirill
25.06.2018
17:30:03
Прикольно.



Руслан
25.06.2018
17:33:58
Котлин Комьюнити Эффект

Kirill
25.06.2018
17:35:42
У меня воспроизвелось так. Я нажал на ссылку "Give us a star on GitHub!", поставил звёздочку, а затем кнопку "Назад" в браузере.

Звёздочку, я думаю, можно не ставить чтобы проверить.

Anatoly
25.06.2018
17:38:06
@kknize спасибо, сейчас буду смотреть, нас немного из-за активности сегодня шатает ?

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

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

sourcerer-app это полностью тот же код, который у нас крутится в клауде для обработки репозиториев с GitHub OAuth регистрации, несчитая небольшой обертки для подключения к очередям. поэтому можете посмотреть код чтобы понять что мы делаем с репозиториями, данными и почтами

short answer: строим красивые профили ?

Lev
25.06.2018
20:04:53
А в каком потоке будет выполняться корутина? Я могу запустить тыщу корутин на тредпуле(10) и типа они там как то сами распределятся чтобы побыстрее было?

Igor
25.06.2018
20:08:23
А в каком потоке будет выполняться корутина? Я могу запустить тыщу корутин на тредпуле(10) и типа они там как то сами распределятся чтобы побыстрее было?
Ну ты же можешь запустить тысячу Callable<T> на этом тредпуле(10), вот и с корутинами будет тоже самое. Корутины никак не связаны с потоками, это просто "сахар" над колбеками (на самом деле нет)

Igor
25.06.2018
20:11:25
Разные этапы корутины могут выполняться на разных потоках?
Если эти разные этапы, тоже suspend функции торг да

Lev
25.06.2018
20:14:15
Если эти разные этапы, тоже suspend функции торг да
Вот у меня только одна suspend функция с каким то запросом в бд внутри (то бишь два этапа). Когда я ее запущу - я получу корутину, как я понимаю. А-ля Thread.start/run в зависимости от корутин билдера. И обе части корутины будут в одном потоке. Но в каком? Это вообще важно?)

Dmitry
25.06.2018
20:23:27
Может помогут контракты ну их пока нет для обычных смертных
Воо я кстати забыл про них. Было бы здорово решить эту проблему в рамках контрактов. Я просто обьявлю свой базовый параметр с контрактом и буду счастлив.

Google
Dmitry
25.06.2018
20:24:09
Вообще тема контрактов очень интересная. Даешь больше обсуждений. Или их уже можно где-то в паблике найти?

Жабра
25.06.2018
20:41:49
Жабра
25.06.2018
20:43:34
Смотря что понимать под результатом. :)

Lev
25.06.2018
20:44:52
Ну те результаты что именю Thread-like api.... если я все правильно понимаю. Ну это не треды, но апи просто похож

Жабра
25.06.2018
20:45:45
Ну те результаты что именю Thread-like api.... если я все правильно понимаю. Ну это не треды, но апи просто похож
Я имел ввиду, что, к примеру, launch возвращает Job. Job - не сама корутина. Но launch внутри создаёт корутину.

Lev
25.06.2018
20:47:08
Я имел ввиду, что, к примеру, launch возвращает Job. Job - не сама корутина. Но launch внутри создаёт корутину.
Ок, буду считать что примерно понял. Я правильно понимаю, что использовать корутины без запросов к бд, по http, прочего io особого смысла нету? Собственно они именно для вот такого io и сделаны?

Lev
25.06.2018
20:48:31
А в чем смысл такого, если и так ничего не блочится?

Va
25.06.2018
20:48:38
ты молотком можешь сделать что угодно, главное — уметь им пользоваться

что не блочится?

Lev
25.06.2018
20:49:19
В чем смысл использовать корутины, если нет ожидания io и в коде, например, ничего не блочится. Ну не лезет он в бд например

Va
25.06.2018
20:49:48
никакого, не используй но редкая задача не требует асинхронности

Жабра
25.06.2018
20:50:53
Lev
25.06.2018
20:51:07
У меня вот... трабла с тяжелым расчетом. 38 мсек считается. Данные для фронта. На достаточно быстрой машине. Без io причем. В расчете фигней вроде не страдаю. На сервере CPU уходит в небеса.

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