
Quantum Harmonizer
13.07.2018
19:07:34
...и доволен. :)

Peter
13.07.2018
19:11:38
Извините, пропустил.
А можно минимальный пример кода, когда
foo( a < b, c > d)
компилируется?
Я понял, что а - generic-type с двумя параметрами
b, c - типы
Но в упор не узнаю синтаксическую конструкцию внути обычных скобок

Quantum Harmonizer
13.07.2018
19:15:44
если после > поставить (), будет вызов generic-метода или конструктора generic-типа.

Peter
13.07.2018
19:18:24
То есть в таком виде как оно есть с точки зрения компилятора котлина - это синтаксически неверное выражение?
Я имею в виду не компилится для для любого кода выше и ниже.

Google

Quantum Harmonizer
13.07.2018
19:19:44
видимо, да

Peter
13.07.2018
19:22:33
Любопытно выходит. Спасибо

Konstantin
13.07.2018
20:11:29
Сложный вопрос, я вроде и пишу приложения с реактивным-UI, но обхожусь без сложных RX/каналов вообще.
(на react с elm архитектурой)
Имхо если все же нужны реактивные-сримы, то в 99% случаем хватает и map/zip/flatMap из тех же каналов.
P.S.
Хотелось бы увидить реальный кейс где нужны сложные "операторы".
Нууу, у меня довольно часто нужен zip/combineLatest. Довольно часто оказывается нужен share/replay. Достаточно редко, но бывает надо skipWhile, takeWhile, takeUntil.
То есть простые преобразования ок, это не так сложно заменить. Но вот именно комбинирование разных потоков, имхо, кейс весьма частый

Максим
13.07.2018
21:35:41
Привет! В анко коррутинах есть методы doAsync / doAsyncResult. Как остановить выполнение задачи, которая была запущена одним из этих методов?

Nikita
13.07.2018
22:00:39
Есть те, кто пользуется Exposed для работы с бд?

whalemare
14.07.2018
05:08:57

Alexander
14.07.2018
05:33:35

Максим
14.07.2018
05:41:28
А просто сделать cancel не работает?
К сожалению нет, метод Future.cancel(true) не останавливает выполнение, а лишь говорит потоку, что в нём больше не нуждаются. На данный момент я написал костыль, который проверяет текущий поток методом Thread.isInterrupted(). И если поток прерван, то бросаю эксепшн и выполнение кода останавливается. Но хочется что-нибудь некостыльное

Alexander
14.07.2018
05:43:10
А по другому нельзя. Внутри метода должна быть проверка того, что он прерван. В корутинах на каждый суспенд вызов она делается, но если там блокирующее тело, то там надо делать проверки. ВМ не может просто так прервать выполненеие на произвольном месте.

Максим
14.07.2018
05:46:04

Alexander
14.07.2018
05:47:31
Просто иначе был бы полный бардак, к примеру не высвобождались бы ресурсы. Если есть большой цикл, то удобно ставить проверку на прерывание на каждом шаге.

Igor
14.07.2018
06:03:21

Alexander
14.07.2018
06:04:30
Корутниы под капотом то же самое делают

Google

Alexander
14.07.2018
06:04:48
Только проверяют на прерывание не thread а свой контекст

Igor
14.07.2018
06:08:08
Только это можно руками не делать и вообще юзать future/треды это какой-то средневековье

Alexander
14.07.2018
06:11:46
Я не согласен. Корутины эффективны, когда есть много маленьких асинхронных действий. Бывают задачи, когда есть маленькое количество очень тяжелых вычислений (не в вебе конечно, но в математических задачах точно). В этих случаях часто удобно, чтобы задача была гвоздями прибита к треду.

Igor
14.07.2018
06:16:07
Может быть, но чувака с anko точно не тот случай, да и вообще в 99% это не тот случай

Alexander
14.07.2018
06:31:15
Насчет андроида согласен.

Javokhir
14.07.2018
08:06:36
Hi every one I started to learn server side programming in kotlin
Which framework is better for me?

Quantum Harmonizer
14.07.2018
08:07:07
ktor.io

Javokhir
14.07.2018
08:07:32
Thanks

Ivan
14.07.2018
08:19:47
Кадырофф занялся серверной разработкой =)
Сорян за петросянство )

Quantum Harmonizer
14.07.2018
08:21:18
Кадирофф)

Ivan
14.07.2018
08:24:25
А в 8ке/9ке/10ке не сделали какой-нибудь метод в который лямбду можно передать и он сделает из него бизилуп с проверкой на остановку?
Я только через scheduled трэд эксекьютер знаю
Кстати классный паттерн с таской которая перрвыставляет сама себя
Но это,наверное, не сюда, а в джава чатик,сорян


Alexander
14.07.2018
09:09:33
Зачем делать флаг, если он уже на треде есть по умолчанию? Что касается автоматического цикла, так он ресурсы будет жрать, зачем надо?
Ставишь проверси только там, где реально прерываться можно и хорошо

Google

Иван
14.07.2018
09:23:19
А как корутина прерывает исполнение, если внутри цикл?
Её же тоже можно прервать?
Какой-то флаг тоже есть?

Alexander
14.07.2018
09:45:40
Прерывание проверяется только когда идет вызов суспенд функции, то есть переключение контекста. Если цикл, то там все то же самое. Можно вызывать нулевой delay, но наверное есть что-то специальное для проверки прерывания
Вообще, тяжелые циклы в корутинах лучше не использовать.

Иван
14.07.2018
09:46:37
isActive
Нашёл)
Ну как пример она может что-то продюсить в цикле бесконечно

Alexander
14.07.2018
09:48:15
Если она что-то продьюсит, то точно делает суспенд вызовы, а значит прерывание проверяется

Bogdan
14.07.2018
15:19:29
Всем привет, хочу спросить совет. пишу GUI (javaFX) програмку для себя, и для работы с БД решил попробывать Exposed (давненько хотел), и там есть 2-а подхода, DSL и DAO, главное отличие что во втором варианте есть модели, я уже к ним привык, но проблема в том что мне нужно делать модели и для FX, в итоге 2-е модельки. Вот думаю какой подход выбрать, ведь модельки из DAO обновляють бд ?

Quantum Harmonizer
15.07.2018
10:22:21
Какое отношение KN имеет к Java?
на KN нужно интеропиться с кодом на C и ObjC
Знание платформы нужно везде.
В KN — знание натива.
В KtJVM (как и в Scala, Groovy, Ceylon) — знание JVM: Java, JMM, HotSpot.
В KtJS — знание JS.
Я далёк от натива, но суть чисто практическая: если используются библиотеки на С++, то его и нужно понимать.

Антон
15.07.2018
10:33:11
это asm, С - высокоуровневый язык

Bogdan
15.07.2018
10:36:59
знать не, понимать поверхосно да, но это ближе к асм, а джаву знать не обязательно, jvm да. Ну и пример C++ - вам нужно знать си, ну ли это вам облегчит понимание с++
знать библиотеки платформы и самму платформу, в джаве это jvm, в си\с++ это ОС
с++ KN не подерживает, только С, но в с++ можно юзать котлин в обратную сторону нет, если не напишете врапери, или как назвать, для си

Admin
ERROR: S client not available

Bogdan
15.07.2018
10:43:10
ну возможно ktor вроде бы ишел в том направлении, но нужно доделать корунтины и kotlin серелизацию

Dumitru
15.07.2018
10:54:23

Bogdan
15.07.2018
10:56:50

Google

Dumitru
15.07.2018
10:57:35
Хм, ну раз так, значит tool для tool'a ?

Bogdan
15.07.2018
10:58:46

Dumitru
15.07.2018
10:59:42
Ждём ?

Kirill
15.07.2018
11:09:35
Привет, народ, читаю про 12 факторные приложения, в 12 пункте про администирование написано:
Методология двенадцати факторов отдаёт предпочтение языкам, которые предоставляют REPL оболочки из коробки, и которые позволяют легко выполнять разовые скрипты.
И у меня возник вопрос: котлин умеет в REPL, позволяет ли Spring boot выполнять разовые скрипты, описанные в статье?

Alexander
15.07.2018
11:11:38
К счастью только модель памяти и систему типов того языка, с которым хочется дружить. В этом, собственно основное преимущество KN
Вообще, есть мысль для скриптов использовать все-таки груви. Для полной радости не хватает только автоматической конверсии кложур в К-функции. Вроде не должно быть сложно. Было бы времени побольше, занялся бы


Kirill
15.07.2018
11:18:48
А как это работает? то есть я могу влезть в ход работы программы и вывести какую-то инфу, либо что-то поменять?
либо тупо залезть в бд или в еще какой внешний севис?

Alexander
15.07.2018
11:19:55
Это очень сильно зависит от программы. Если нет соответствующих интерфейсов, то просто так менять что-то внутри, разумеется нельзя. Язык, который это позволяет надо забанить
Вызывать функции платформы из репла можно

Kirill
15.07.2018
11:23:10
что это могут быть за интерфейсы?

Alexander
15.07.2018
11:25:53
Ну к примеру доступ к БД. Я не очень знаком со Spring, но вообще если сервер подзволяет прицепить к себе репл, то любые публичные методы можно запускать. В Grails есть грувевая консоль, но вооще консоль может быть на чем угодно.
Просто надо понимать, что репл - это само по себе, а консоль конкретной платформы - это само по себе, одно из другого совершенно не следует.

Kirill
15.07.2018
11:28:06
понял, зависит от фреймворка
кто-то использовал deis workflow?

Igor
15.07.2018
11:30:22

Kirill
15.07.2018
11:30:55
насколько я понял это удобный инстумент для деплоя 12 факторных приложений с использованием докера и кубернетуса
интересно насколько он хорош, стоит ли его юзать

Alexander
15.07.2018
11:31:59
Instant run насколько я понимаю, работает через дебагер и злобные хаки. Язык сам по себе этого не позволяет.
Изменение переменных, у котрых нет публичных интерфейсов - это очень быстрый путь к проклятию.

Google

Alexander
15.07.2018
11:32:53
вечному

Igor
15.07.2018
11:40:08
Вечное проклятье - это ооп с мутабельным графом объектов в памяти (и в частности по этому в android это гора костылей)
А если у тебя только функции, без стейта - то их перегрузка это элементарная фича той же кложуры.

Alexander
15.07.2018
11:41:56
Без стейта - это отдельная история. Я никогда не работал с кложурой, но что, таки можно любую функцию перегрузить в рантайме произвольным образом?