@kotlin_lang

Страница 700 из 982
Anton
08.06.2018
15:53:41
разве это не просто сайт издательства

Глеб
08.06.2018
15:53:58
Эм... ещё чуууть-чуть оффтопика. Там ведь можно спокойно читать эту книгу, разве нет?

Google
Глеб
08.06.2018
15:55:45
Всё, разобрался. Хитрый сайт, оказывается, делает вид, что можно читать бесплатно, а со второй главы начинает "шифровать" часть текста. А то я никак не мог понять как можно пиратить бесплатное.

Quantum Harmonizer
08.06.2018
19:26:53
Sergey
09.06.2018
05:33:08
А кто какие варианты чекстайла сейчас использует?

И как их дружите с джавовыми, если проект смешанный

Anton
09.06.2018
07:28:05
Ктлинт

Обычно дружится

Можно пакеты джавовые игнорить

Egor
10.06.2018
02:59:08
внезапно встал вопрос, не знаю, задавали его или нет

Как в top-definition функции получить ресурс как от класса? Как в джаве this.getClass().getResource(...) только в Котлине

Хотя top-definition функция подразумевается чистой, но тут речь идет о точку входа в программу

Alexander
10.06.2018
06:36:07
Можно взять любой другой класс, который сущестует в данном ClassLoader-е. Например String. Для гарантии лучше использовать что-то, что определено в импортах данного файла.

Можно еще взять Thread.currentThread().contextClassLoader.getResource(...), только надо понмнить о том, что там в одном случае надо ставить `/`перед путем, в другом нет (я все время путаю, где надо, а где нет)

Google
Egor
10.06.2018
07:08:03
Спасибо, сейчас попробую

Как вариант, взять класс от object { }

Можно еще взять Thread.currentThread().contextClassLoader.getResource(...), только надо понмнить о том, что там в одном случае надо ставить `/`перед путем, в другом нет (я все время путаю, где надо, а где нет)

Хотя я в спецификации честно говоря не разбираюсь

Alexander
10.06.2018
07:11:25
Ничего неопределенного тут нет. У каждого ClassLoader-а есть свой набор ресурсов. Если в программе везде используется один и тот же ClassLoader, никакой проблемы нет. Если поведение более сложное, то я бы вообще рекомендовал его прописывать явно. В любом случае, второй вариант с Thread точно ведет себя однозначно (результат будет в теории разным в зависимости от того, откуда метод вызывается, но это же точка входа...).

Egor
10.06.2018
07:16:40
Понял, спасибо

Никита?❄️
10.06.2018
11:00:31
Кто-то может подсказать, существуют ли либы для того, что бы получать KDoc из кода?

Никита?❄️
10.06.2018
11:59:05
Dokka. Или AST Котлина.
разве докку можно юзать так: val doc = Dokka("SomeCode.kt").getMethod("foo").getDocumentation()?

Quantum Harmonizer
10.06.2018
12:09:56
Dumitru
10.06.2018
13:27:14
Считается ли вредным тоном писать web приложение на ktor без использования html файлов, а только через dsl ?

Egor
10.06.2018
13:29:05
а почему нет? Дсл - это как шаблонизатор, только средствами языка

Alexander
10.06.2018
13:42:51
Я думаю, что это как раз хороший вариант. Работать должно быстрее, чем с html шаблонами. Плюс гибкость (наследование и прочие радости), плюс строгая типизация. Если есть возможность, я бы предложил так и делать.

Quantum Harmonizer
10.06.2018
14:03:33
Делаю так, нравится.

Alexander
10.06.2018
14:07:14
Есть только один минус у всей этой системы шаблоны должны быть в коде, поэтому довольно сложно построить готовый код, который бы просто подсасывал внешние файлы в `kt`формате. Надо таскать с собой компиллятор, а его API какой-то еще очень сырой (не говоря уже о размере). Я сейчас вожусь с [Orchid](https://orchid.netlify.com/). На мой взгляд, очень перспективный проект. Но Pebble бесит. Я бы с радостью использовал котлиновский dsl вместо него, но не могу придумать как (без очень сильных граблей).

Алексей
10.06.2018
14:12:37
Добрый день! Какие библиотеки можно посмотреть для работы из котлина с интернетом как с клиентом? Планируются GET/POST для HTTP/HTTPS

Алексей
10.06.2018
14:13:35
Я смотрю сейчас khttp (но может ли он в https?) и networkinkt (насколько он common, то есть не андроидоориентированный?)

Google
OlegKrikun
10.06.2018
14:15:19
Это я и называю большими граблями.
ну это так, маленькие десткий пластиковые грабельки для песочницы =)

Boris
10.06.2018
14:16:10
Alexander
10.06.2018
14:16:11
Я понимаю, что бывает больше, но того не стоит. Проще разобраться с Pebble. Но помечтать не вредно. Вон в Груви все это отлично работает, почему бы и в котлине не работать?

Алексей
10.06.2018
14:18:02
retrofit?
А у него есть какие-то экстеншены для котлина? Там не сильно много оверхеда по сравнению с khttp и networkinkt?

Там же рефлексия вроде вовсю

Alexander
10.06.2018
14:18:14
Без редеплоя приложения?
Смотря что называть приложением. Идея статического генератора в том, что один раз компилируется генератор, а потом добавляются маркдауновские страницы и просто одной командой все компилится. В принципе можно в этот момент и байткод докомпиливать, но это какое-то усложнение. Получается данные и код в одну кучу - не хорошо.

Alexander
10.06.2018
14:24:34
С точки зрения генератора есть код - то есть котлиновский или явовский код, который всасывает файлы из директории и генерит из них сайт и есть сама директория с данными. Если в этой директории с данными есть код, который надо докомпилировать, то получается идейный и практический монстр. Там начинается всякая веселуха с класслоадерами и прочим. Груви с этим справляется, но он на то и скриптовый язык. В принципе, можно сказать, что тема, то есть шаблоны страницы являются куском программы, генерятся при компилляции и не имеют отношения к данным, но тогда не понятно, как параметры в страницы подставлять. Надо опять же какой-то язык шаблонов использовать.

Груви в этом смысле един в двух лицах, они и язык и формат шаблонов. С котлин такое, боюсь, не пройдет.

Если без детальных дебрей хочется чего-то вроде http://docs.groovy-lang.org/next/html/documentation/template-engines.html в котлине.

Boris
10.06.2018
14:27:09
Компилить с приложением очень удобно

Подгружать динамически мало масла

можно вроде депенденси инжекшена сделать, но сильно удобство теряется

Alexander
10.06.2018
14:29:33
Да кто спорит? Но вот теперь у меня есть маркдаун файл, с контентом. Как туда внутрь параметры передать? Даже для банального ${param} надо чего-то городить, а мы-то хотим, чтобы можо было туда внутрь вычисляемое выражение подставить. Без динамической компиляции вообще никак.

Google
Руслан
10.06.2018
14:32:04
Boris
10.06.2018
14:32:19
Если какой-то там файл, то да, это сложно и смысл теряется

Alexander
10.06.2018
14:32:43
Типизация тут не при чем. Она вполне может быть статической. Вопрос в том, когда компилляция выполняется. В котлине вроде сейчас появилась поддержка JSR223.

Boris
10.06.2018
14:34:29
ну как, ты конечно можешь связять динамически два статически скомпилированных куска

Alexander
10.06.2018
14:34:37
Чет не понимаю какие приемущества по сравнению с тем же freemarker?
У чего, у Груви? Идейно никаких, и там и там собственный язык. На практике, разумеется у Груви возможности существенно шире. Можно спокойно в коде свои классы сделать и потом их использовать.

Boris
10.06.2018
14:34:43
только из за этого сильно теряется смысл таких шаблонов

Alexander
10.06.2018
14:35:46
Я не спорю. Вопрос эстатики. Хочется, чтобы все было на котлине или котлино-подобном коде. А так приходится использовать один язык для кода и другой для шаблонизации контента.

Руслан
10.06.2018
14:36:07
Ну в общем-то в спринге нам же показывали рабочие темплейты на kotlin script уже больше года назад. я использую для конфига котлин скрипты. что мешает юзать их вместе kotlinx.html?

https://github.com/sdeleuze/kotlin-script-templating вот например

Alexander
10.06.2018
14:37:08
Я со спрингом не работаю, так что не в курсе. Спасибо за ссылку.

Руслан
10.06.2018
14:37:38
https://spring.io/blog/2017/01/04/introducing-kotlin-support-in-spring-framework-5-0 вот анонс был даже

Alexander
10.06.2018
14:37:41
Симпатишно. Это примерно то, чего я хотел

Boris
10.06.2018
14:38:34
Я не спорю. Вопрос эстатики. Хочется, чтобы все было на котлине или котлино-подобном коде. А так приходится использовать один язык для кода и другой для шаблонизации контента.
ну так вроде это не так уж сложно сделать, просто связанный на этапе компиляции проще, надежнее и проверяется на уровне компиляции. Если обязательно нужно динамически это делать, ну, значит надежность упадет, но в остальном почти тоже самое.. только еще рефлекшена придется прикуть пачку

Alexander
10.06.2018
14:39:06
И получится Груви :)

Руслан
10.06.2018
14:39:19
Ну тащить с собой компилятор, а это десяток мегабайт зависимостей пока

Boris
10.06.2018
14:40:04
типа груви, если строковый генератор и совсем не, если дсл

Alexander
10.06.2018
14:41:19
Ну тащить с собой компилятор, а это десяток мегабайт зависимостей пока
Я с этого и начал. компилятор сильно не портативный и без человеческого API был в последний раз, когда я проверял.

Google
Boris
10.06.2018
14:42:13
так его же в режиме скрипта можно использовать, там API устоявшийся

Руслан
10.06.2018
14:42:17
там создаешь scripting engine ~ 1 строчка и испольуешь его ~ 1 строчка не уверен зачем для скриптов еще какой-то api компилятора использовать причем компилятор ты совсем не трогаешь в этих местах

Boris
10.06.2018
14:43:46
вот да

Руслан
10.06.2018
14:44:40
Вот пример https://github.com/bootique/bootique-kotlin/blob/master/bootique-kotlin-config/src/main/java/io/bootique/kotlin/config/KotlinScriptCompiler.kt#L16-L24

Boris
10.06.2018
14:44:48
тем более, что там уже написана динамическая прослойка

Alexander
10.06.2018
14:45:23
Ну компилятор-то все равно тащить надо. К тому же, там проблема передачи параметров в скрипт. Я честно говоря не пробовал. Последний раз в этом направлении тыкался полгода назад. Искал аналог GroovyShell

Boris
10.06.2018
14:47:54
там как раз проблем нету

с передачей параметров

в мапу кладешь и наслаждаешься

Alexander
10.06.2018
14:49:23
Надо будет потыкаться. У меня в другом проекте коммандная стока на груви и он меня переодически бесит

Sergey
10.06.2018
15:22:56
еще бы Jenkinsfile поддерживал котлин

Boris
10.06.2018
16:11:17
еще бы Jenkinsfile поддерживал котлин
Это было бы слишком хорошо

Хотя вообще я думаю было бы нет так уж сложно прикрутить туда котлин

Dumitru
10.06.2018
18:05:46
Как же я вас люблю ))

а почему нет? Дсл - это как шаблонизатор, только средствами языка

Я думаю, что это как раз хороший вариант. Работать должно быстрее, чем с html шаблонами. Плюс гибкость (наследование и прочие радости), плюс строгая типизация. Если есть возможность, я бы предложил так и делать.

Делаю так, нравится.

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