@kotlin_lang

Страница 735 из 982
Vladimir
03.07.2018
10:43:35
<trollmode> Собирать не через гредл </trollmode>
Шутки про скорость gradle ещё актуальны?

dimiii
03.07.2018
10:45:19
Шутки про скорость gradle ещё актуальны?
Всегда. Я молчал, когда Кирилл писал про медленность сборки, но теперь меня никто не сдержит. Там процентов 30 (времени) можно убрать, уйдя с грыдлы

*богомерзкой грыдлы

Sergey
03.07.2018
10:45:41
В гредле есть пробемы с инкрементальной сборкой многомодульных проектов. Во первых - долгие up-to-date чеки (он всегда считает хэш всех джарников), во вторых - инкрементальная компиляция не всегда работает между модулями (из за того что api гредла не позволяет по хорошему определить что кокнретно изменилось в джарнике). В JPS таких проблем нет (JPS - это внутреняя собиралка в идее)

Google
dimiii
03.07.2018
10:45:56
гредл и есть проблема

Sergey
03.07.2018
10:46:15
например есть проект где сборка в гредле при любом изменении занимает несколько минут. В JPS аналогичная сборка - несколько секунд

Alexander
03.07.2018
10:46:30
Я бы посмотрел как вы получите повторяемые сборки без gradle

Sergey
03.07.2018
10:46:55
кстате про котлин: начиная с 1.2.60 (который пока eap), jps поддерживает мультиплатформенный котлин (common, jvm, js)

в том числе инкрементально (с некоторыми нюансами)

Sergey
03.07.2018
11:04:58
Как у него с документацией?
Немного документация есть в help-е идеи, но врядли она нужна. А работает это как обычно: импортируем проект из гредла и запускаем make project. (Галка Delegate build / run actions to gradle при этом должна быть снята, но она снята по умолчанию).

до 1.2.60, make project для MPP проектов всегда собирал через гредл, независимо от галки описанной выше. Теперь галка (снова) учитвается.

dimiii
03.07.2018
11:07:12
Немного документация есть в help-е идеи, но врядли она нужна. А работает это как обычно: импортируем проект из гредла и запускаем make project. (Галка Delegate build / run actions to gradle при этом должна быть снята, но она снята по умолчанию).
А есть шансы, что jps будет выделен из идеи в standalone приложение? Судя по миграции git репозиториев, вряд ли. Но с такими характеристиками по произоводительности, почему бы и нет?

Sergey
03.07.2018
11:07:33
есть ?

dimiii
03.07.2018
11:07:44
?

Sergey
03.07.2018
11:08:42
недавно был хакатон, как раз был проект который для временного решения: kts скрипт который описывает идеевский проект, чтобы можно было его настроить и собрать без гредла. но это чисто временное и очень ограниченно решение. не знаю правда будет ли он публично доступен

Google
Alexander
03.07.2018
11:34:37
Я время от времени пользуюсь внутренней сборкой идеи, но честно говоря, я совершенно не готов рассматривать всерьез систему сборки без декларативного dsl.

Sergey
03.07.2018
11:36:49
а не было попыток разговора с командой gradle, может есть возможность добавить необходимую функциональность в gradle?
разговор идет постоянно, и, я уверен, в конце концов проблемы решаться. лично мне кажется что гредлу нужно сделать некий api по partial build, чтобы можно было явно указывать какие файлы изменены. но конкретно это еще не обсуждалось. а вот фиксы для инкрементальной межмдульной компиляции как раз в процессе

вот как пример

Alexander
03.07.2018
11:40:34
Ну там в скрипте есть всякие lazy - это уже немного напрягает.

Кроме того, в градле главное - задачи и их зависимости. Опять же, без этого никуда.

Виталий
03.07.2018
11:41:32
Что делает * когда я передаю vararg принятый классом в функцию? оно работает )) но что именно он делает ?

Alexander
03.07.2018
11:42:04
Он превращает массив в то, что можно скормить vararg

Виталий
03.07.2018
11:42:08
class UserMenu(private val data: GeneralData, vararg text: AppText) { val actor = create(*text)

Alexander
03.07.2018
11:42:32
Масив делает вид, что он просто параметры, переданные через запятую.

Виталий
03.07.2018
11:42:36
Он превращает массив в то, что можно скормить vararg
то есть опять создает одиночные значения ?

Alexander
03.07.2018
11:43:05
Типа того. Я не знаю, что там внутри творится, но с точки зрения кода - да

Konstantin
03.07.2018
13:47:13
привет. вопрос - почему лямбда в качестве последнего аргумента функции может выноситься за скобки? меня смущает синтаксис

чем обосновано

когда 1 аргумент выглядит симпатично, вместо func( { a } ) = func{ a }, но func( a, {b} ) = func (a){b} ?

Alexander
03.07.2018
13:49:32
когда 1 аргумент выглядит симпатично, вместо func( { a } ) = func{ a }, но func( a, {b} ) = func (a){b} ?
Ответ мне кажется простой. Так сделали в груви и это сработало. Да, оба примера скорее правильнее выносить за скобки.

Maxim
03.07.2018
13:49:45
Вероятно сделано так, чтобы в случае многострочной лямбды не тащить куда-то вниз закрывающую круглую скобку.

Bogdan
03.07.2018
13:50:03
когда 1 аргумент выглядит симпатично, вместо func( { a } ) = func{ a }, но func( a, {b} ) = func (a){b} ?
Ты можешь не выносить. По код стайлу не помню как правильней делать

Google
Konstantin
03.07.2018
13:50:11
глядя на код я вижу метод с 1 аргументом. печаль

Alexander
03.07.2018
13:51:01
Ответ мне кажется простой. Так сделали в груви и это сработало. Да, оба примера скорее правильнее выносить за скобки.
Единственный кейс, когда я сомневаюсь в выносе - передача нескольких аргументов-функций. Но поэтому выносить можно, но не обязательно.

Bogdan
03.07.2018
13:51:03
но ведь по внешнему виду сигнатура метода совсем не такая получается
Мне норм. Всегда хотел от скобок избавится в джаве

Alexander
03.07.2018
13:52:46
глядя на код я вижу метод с 1 аргументом. печаль
Это дело привычки. Лямбду сбоку видно всегда, вопрос только в том, что надо пару раз самому написать. В среднем случае это намного лучше выглядит, чем куча скобок, тянущихся рядом.

Konstantin
03.07.2018
13:53:07
а несколько выносятся?

a, {b}, {c} ?

Alexander
03.07.2018
13:53:57
Только последняя. И тут уже действительно валидный кейс, чтобы не выносить вообще.

Konstantin
03.07.2018
13:54:08
ясн, спасибо за прояснение

Alexander
03.07.2018
14:13:56
Там огромный пласт задач по генерации DSL с помощью этих лямбд вынесенных решается

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

Alexander
03.07.2018
14:17:31
Вот только что писал такой код. Все равно путанница возникает. Лучше каждый параметр на отдельной строке и закрывающую круглую скобку тоже.

Ilya
03.07.2018
14:47:00
Что взять под REST API ktor или spring и почему?

Quantum Harmonizer
03.07.2018
14:47:36
Что взять под REST API ktor или spring и почему?
то, что нравится, любишь, знаешь, умеешь, потому что так получишь больше удовольствия

Kirill
03.07.2018
14:50:32
val a = Array(N) { Array(N) { (0..9).random() } }

5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 3 3 3 3 3 3 3 3 3 3 8 8 8 8 8 8 8 8 8 8 4 4 4 4 4 4 4 4 4 4 6 6 6 6 6 6 6 6 6 6 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 4 4

Ilya
03.07.2018
14:50:43
то, что нравится, любишь, знаешь, умеешь, потому что так получишь больше удовольствия
Где эффективнее и проще найти инфу, так как не то не то не знаю?

Kirill
03.07.2018
14:50:50
Как сделать чтобы вызвал 100 раз, а не 10?

Google
Ilya
03.07.2018
14:52:43
на ktor.io :)
то есть легче будет с ктором? ?

Quantum Harmonizer
03.07.2018
14:52:49
Alexander
03.07.2018
14:53:02
Если совсем без бэкграунда, то да

Ilya
03.07.2018
14:53:03
да)
спасибо

Alexander
03.07.2018
14:53:13
Спринг - это такая вещь с большим наследием

Igor
03.07.2018
14:59:51
val a = Array(N) { Array(N) { (0..9).random() } }
Что за random(), ext-function? Попробуй ее явно передавать один раз созданный Random() как параметр, а не создавай его внутри.

Kirill
03.07.2018
15:00:19
Не, то же самое. Функция вот так выглядит:





Kirill
03.07.2018
15:03:19
на ktor.io :)
а гибернейт с ним норм работает или там лучше другую ормку подыскать?

Quantum Harmonizer
03.07.2018
15:03:36
а гибернейт с ним норм работает или там лучше другую ормку подыскать?
ой, я бы в любом случае чё-нибудь другое искал :)

я брал kwery, но пришлось форкнуть и допилить

Andrey
03.07.2018
15:04:14
привет. вопрос - почему лямбда в качестве последнего аргумента функции может выноситься за скобки? меня смущает синтаксис
Скорее всего пришло из функциональных ЯП. Чего-нибудь типа Haskell. Там функции каррированные всегда, а применение функции к аргументу обозначается пробелом. Например f 1 обозначает применение функции f к литералу 1 В Kotlin такой синтаксис возможен только для лямбд, притом несколько негомогенно: fun <A, B, C> compose(f: (A) -> B): ((B) -> C) -> (A) -> C = { g -> { g(f(it)) } } fun main(args: Array<String>) = println( compose<String, Int, String> { it.length }() { it.toString() }("foo") ) Если убрать () из строки compose<String, Int, String> { it.length }() { it.toString() }("foo"), то не скомпилируется, хотя анализатор кода в IDEA говорит, что () не нужны.

Kirill
03.07.2018
15:04:51
проверенный временем и вск такое не?)

Quantum Harmonizer
03.07.2018
15:05:04
почему?
генерация кода, конфиги, вот это всё

Bogdan
03.07.2018
15:09:05
так ты опять каждый раз создаешь новый рандом, вынеси его за лямду

Alexander
03.07.2018
15:10:21
так ты опять каждый раз создаешь новый рандом, вынеси его за лямду
В теории это конечно плохо, но вроде не должно приводить к одинаковым строкам. Ну, если конечно человек не мокает системное время.

Google
Kirill
03.07.2018
15:10:39
так ты опять каждый раз создаешь новый рандом, вынеси его за лямду
Вообще в другом месте проблема была. Распечатываю криво) Спасибо.

Bogdan
03.07.2018
15:11:06
https://github.com/JetBrains/Exposed
вот это можно посмотреть

Mikhail
03.07.2018
15:13:39
Именно поэтому лямбды имеют такой клевый синтаксис

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

Alexander
03.07.2018
15:13:56
Mikhail
03.07.2018
15:15:46
А насчет хаскелл - если не ударяться в теорию и плагины для компилятора достаточно простой язык, не сложнее джавы, на мой взгляд

Kirill
03.07.2018
15:16:05
вот это можно посмотреть
Кто-то пробовал и то и то? Интересно впечатления после него услышать)

А что у ктора с di?

Bogdan
03.07.2018
15:16:57
Кто-то пробовал и то и то? Интересно впечатления после него услышать)
у меня к Exposed руки не доходят, пока с бд не работаю, но выглядит класно и прозрачно

Andrey
03.07.2018
15:17:35
А насчет хаскелл - если не ударяться в теорию и плагины для компилятора достаточно простой язык, не сложнее джавы, на мой взгляд
Согласен. Синтаксически хаскелл гораздо проще джавы, даже с учётом теории и плагинов для компилятора. В джаве, если в теорию, байт код инструментацию и прочее вдаваться - вообще адЪ

Alexander
03.07.2018
15:17:59
Я не пробовал всерьез, но у меня друг на нем работает. В общем, там как вода и масло, джависты плюются от хаскела и наоборот. С нашей точки зрения у них синтаксис упоротый и возможности сильно ограничены, а им без паттерн матчинга вообще жизнь не мила.

Совершенно разный стиль и разные задачи

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