
Mikhail
25.06.2018
13:55:04

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 мегабайт

Dmitry
25.06.2018
13:59:34

Quantum Harmonizer
25.06.2018
14:01:42

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

OlegKrikun
25.06.2018
14:06:46

Quantum Harmonizer
25.06.2018
14:07:09

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

Quantum Harmonizer
25.06.2018
14:08:03

Dmitry
25.06.2018
14:17:25

Google

Quantum Harmonizer
25.06.2018
14:17:56

Dmitry
25.06.2018
14:27:22

Quantum Harmonizer
25.06.2018
14:27:40
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
Так если в лямбде передается зис, она его захватывает

Quantum Harmonizer
25.06.2018
14:30:06

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

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

Dmitry
25.06.2018
14:32:36
О и правда можно приватные топ левел. Но всеравно страшно.
Хочу ключевое слово при обьявлении лямбды, которое запретило бы внутри лямбды обращаться к методам класса. Заодно это сделало бы корутины юзабельными не только для написания библиотек
Хочешь использовать параметр - передай в лямбду явно

Quantum Harmonizer
25.06.2018
14:34:42

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

Alexander
25.06.2018
15:30:56

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

Ivan
25.06.2018
15:40:20

Mi
25.06.2018
15:46:08

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

dimiii
25.06.2018
15:59:45

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
Котлин Комьюнити Эффект

Quantum Harmonizer
25.06.2018
17:35:32

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

Lev
25.06.2018
20:10:42

Igor
25.06.2018
20:11:25

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

Lev
25.06.2018
20:42:16

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

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

Жабра
25.06.2018
20:45:45

Lev
25.06.2018
20:47:08

Va
25.06.2018
20:47:55

Жабра
25.06.2018
20:48:09

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 уходит в небеса.