18 March 2018
Anton Vlasov converted a basic group to this supergroup «Kotlin Frontend JS»
Anton Vlasov changed group title to «Kotlin JS»
Anton Vlasov changed group photo
26 April 2018
Artem Viter invited Artem Viter
AV
11:21
Artem Viter
Да ) маловато народа
AV
11:21
Anton Vlasov
Очень маловато))
AV
11:21
Artem Viter
Artem Viter:
Здравствуйте. Я пытаюсь разобраться в kotlin js (в js плохо разбирают). Написал модуль my_module , а в модуле функцию myFunction, функцию Пометил анотацией @JsName. Все скомпилировал и теперь могу вызвать метод написанный на котлине через чистый js: my_module.myFunction(). Потом я попробовал использовать kotlin front end plugin который делает для меня магию с webpack и собирает весь код в один файл (превращает в нечитаемый вид) и я не могу теперь из обычного js вызвать мой Котлин метод my_module.myFunction() :( Подскажите пожалуйста как я из js могу достучаться до своего модуля используя front end plugin ( с webpack ) ?
AV
11:21
Anton Vlasov
Почти никто не интересуется, я для себя проектик написал на коленке, но до твоего примера не доходил
AV
11:22
Artem Viter
(
AV
11:22
Anton Vlasov
А зачем тебе из js кода вызывать котлин?
AV
11:22
Artem Viter
На гитхабе все молчат
AV
11:46
Anton Vlasov
In reply to this message
Cкорее всего у тебя там происходит обфускация в этот момент, и имя твоей функции myFunction становится просто набором букв ab. Можно попробовать отключить обфускацию и чекнуть что получится
AV
13:33
Artem Viter
Ну я находил свою функцию
13:33
А как отключить обфускацию ?
AV
13:50
Anton Vlasov
ну тогда это не обфускация, раз находил
29 June 2018
Наиль Гилазиев invited Наиль Гилазиев
НГ
12:25
Наиль Гилазиев
да, не густо. Может админам стоит упомянуть в группе kotlin_lang что тематическая группа по js создана?
AV
12:26
Anton Vlasov
Ага. Упомяну, как только начну ей заниматься - а это начнется с приходом нового проекта, где-то в течение июля)
НГ
12:26
Наиль Гилазиев
как минимум в этом списке эта группа отсутствует https://kotlinby.github.io/kotlin-telegram/
AV
12:26
Anton Vlasov
Ок, спасибо! Пофиксирую
16 July 2018
Gregory Manushkin invited Gregory Manushkin
☠️ hex 🌗🇷🇺🐍 ᚱᛟᛗᚨᚾ invited ☠️ hex 🌗🇷🇺🐍 ᚱᛟᛗᚨᚾ
Ruslan Ibragimov invited Ruslan Ibragimov
Alexandr Emelyanov invited Alexandr Emelyanov
Eugeny Karpov invited Eugeny Karpov
Kárin-Aleksandra Monoid invited Kárin-Aleksandra Monoid
Анна Удовиченко invited Анна Удовиченко
17 July 2018
Sergey Rostov invited Sergey Rostov
EK
15:49
Eugeny Karpov
Раз уж мы тут все уютно собрались, кто-нибудь пробовал прикручивать к проекту на реакте redux? Существующего враппера нет, а сделать новый через d.ts что-то не особо айс получается
НГ
16:00
Наиль Гилазиев
тоже интересно. Сам redux'ом не пользовался, но как я понял (чисто мое теоритическое понимание)
redux хорош в динамичном мире js
но когда начинаешь его переносить на статические типизируемые языки приходится писать неприлично много бойлерплейта.

например фо flutter вместо redux рекомендуется использовать другой паттерн - их собственный BLoC(ничего особенного, просто все на стримах)
Соответственно думаю, что тоже самое можно повторить и на каналах корутин. Но до практики еще не доходил.
KM
16:08
Kárin-Aleksandra Monoid
Есть опыт прикручивания vuex разве что. И это аналогично написанному выше: d.ts не работает легко взять, много бойлерплейта и unsafe cast'ов с примесью dynamic'ов. :(
EK
16:13
Eugeny Karpov
Понятно. Я думаю просто на чистом котлине redux написать. Архитектура не сложная и по идее не должно быть никакого рокет саенса. Единственное есть только опасение, что как в js и connect.js не получится с автодектом изменившегося пропса из глобал стейта, но в крайнем случае можно будет обойтись старым добрым наблюдателем
16:15
Получится почти редакс
Zalim Bashorov invited Zalim Bashorov
18 July 2018
Slava Kuzmich invited Slava Kuzmich
23 July 2018
AlexT invited AlexT
31 July 2018
AV
01:25
Artem Viter
Всем привет сталкивался ли кто с такой проблемой : делаю clean , потом assemble и ide не генерит файл стандартной библиотеки ...
SR
10:19
Sergey Rostov
файлы stdlib-а (и других зависимостей), компилятрный плгаин вроде не копирует (и не генерирует). этим занимается dce плагин. он подключен?
если подключен, то возможно его таск не входит в assemble
ZB
10:56
Zalim Bashorov
@ardmn
Пример того как копировать файлы в градле можете найти тут: http://kotlinlang.org/docs/tutorials/javascript/getting-started-gradle/getting-started-with-gradle.html

Но лучше воспользоваться, упомянутым ранее, DCE.

Про DCE можно почитать тут: http://kotlinlang.org/docs/reference/javascript-dce.html
AV
11:01
Artem Viter
Спасибо
11:01
Но как я понял dce для того чтобы отрезать не используемый код
ZB
11:01
Zalim Bashorov
11:02
В этом режиме вырезаний не происходит
AV
11:03
Artem Viter
Ок гляну :)
ZB
11:03
Zalim Bashorov
В этом режиме DCE ничего не вырезает, но продолжает делать остальную работу, вроде, собрать все зависимости и сложить в одном месте.
2 August 2018
Mr. #FFC0CB invited Mr. #FFC0CB
6 August 2018
Vitalii Dmitriev invited Vitalii Dmitriev
Kirill Knize invited Kirill Knize
Danil Y. invited Danil Y.
Dumitru Preguza invited Dumitru Preguza
Alexander Levin invited Alexander Levin
7 August 2018
Алина Долгих invited Алина Долгих
ZB
20:36
Zalim Bashorov
20:36
Предложения можно писать и тут и там 🙂
AV
20:38
Anton Vlasov
In reply to this message
Использование Kotlin JS применительно к React Native)
AV
20:39
Artem Viter
Вообще зачем он нужен и чем он лучше /хуже других js технологий :)
20:40
Много всякого умеет же в js
20:44
Если применять для шаринга кода то что там с concurrency ? И сколько реально можно шарить , и на сколько больно. + Тестирование кода
VD
21:28
Vitalii Dmitriev
Kotlin/JS и multiplatform?
ZB
21:29
Zalim Bashorov
если есть вопросы multiplatform тоже пишите
VD
23:10
Vitalii Dmitriev
Когда native можно будет добавить в multiplatform?)
ZB
23:11
Zalim Bashorov
VD
23:12
Vitalii Dmitriev
О, спасибо!
8 August 2018
НГ
10:05
Наиль Гилазиев
In reply to this message
Работа с react wrappers интересует. Именно advance уровень.
К примеру в документации по react есть секция advanced. И там есть всякие нюансы по написанию кода, которые влияют на перфоманс. Советы по типу лямбды выносить вне функцию render, иначе при следующем цикле рендеринга будет создана новая лямбда, что приведёт к проседанию перфоманса так как это поддерево будет перестроено.

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

Ps. Возможно для бывалых react js разработчиков очевидно как все это из Kotlin юзать, но у меня бекграунд в Android и iOS а не в web.
DP
12:17
Dumitru Preguza
хочется canvas/WebGL фреймворк на основе pixi-js (или наподобие) но с синтаксисом tornado-fx / html builder
LeeSoft invited LeeSoft
LeeSoft invited Paul F
PF
23:59
Paul F
In reply to this message
👍
9 August 2018
VD
09:04
Vitalii Dmitriev
In reply to this message
Вот да, это интересно.
Foat Karipov invited Foat Karipov
23 August 2018
Алексей Савельев invited Алексей Савельев
АС
11:10
Алексей Савельев
Всем привет! Ребят я тут получу ответ на вопрос по kotlin js или лучше сразу в kotlin lang писать? Скажите плиз если все же лучше у бОльшей аудитории спросить.
А сам вопрос такой: есть в js и react сообществе такой паттерн как HOC, как я понял external HOC можно заюзать, но вот как написать свой непонятно. Конкретно пытаюсь переписать эту либу https://github.com/andreypopp/react-derivable/blob/master/src/index.js#L112-L113 на котлин.
Смотрю сейчас еще в сторону аннотаций и рефлексии, но тоже пока не очень понятно как такого добится https://github.com/andreypopp/react-derivable/blob/master/src/index.js#L120-L122 , по сути это самая важная часть хока, мне надо вызвать родительский render и захватить его зависимости.
Заранее спасибо за помощь!
AV
11:15
Anton Vlasov
Если фронтендеры с опытом есть я думаю подскажут.
Со своей андроид колокольни лишь замечу, что аннотации и генерация кода это не очень, а рефлексия и подавно. Можешь в кратце описать, зачем тебе именно рефлексия? Почему не какой нибудь метод provideDependency и IoC?
RI
11:16
Ruslan Ibragimov
hoc это же просто компонент, который получает на вход другой компонент
АС
11:16
Алексей Савельев
Смысл в том чтобы спрятать "грязь" либы за апи) но эта "грязь" неотемлимая часть
11:18
In reply to this message
ну в данном случае он делает сабкласс. в котлине мне тогда все компоненты придется делать open, что уже не очень для апи
RI
11:19
Ruslan Ibragimov
в js все равно нету понятния открытый/закрытый класс
11:19
kotlin-open работает с kotlin-js?
АС
11:19
Алексей Савельев
это понятно, а в котлине то есть, я же пытаюсь сделать то что 👆 на котлине
RI
11:22
Ruslan Ibragimov
Как я понял идея либы сделать так, чтобы прокидывать через props какие-то реактивные api, и соответсвенно внутри компонента их использовать. А проблема в том что реакт сам не будет ререндерить компоненты потому что пропсы не меняются.
АС
11:24
Алексей Савельев
ну почти, только не надо ничего прокидывать через пропсы, потому что это дело резолвится во время вызова render-а, могу скинуть код, чтобы было понятнее. еще один пример если это как то поможет, в mobx есть observer, ведет себя так же
RI
11:27
Ruslan Ibragimov
АС
11:29
Алексей Савельев
вот ту либу что derivable я уже переписал на котлин, все работает отлично, теперь надо это просто с реактом скрестить, как в этой либе 🙂 ну или не обязательно как в этой либе, главное чтобы можно было "грязь" как то спрятать
Mr. #FFC0CB removed Mr. #FFC0CB
RI
11:42
Ruslan Ibragimov
В общем если посмотреть на https://github.com/JetBrains/kotlin-wrappers/tree/master/kotlin-react, то окажется что в нем тоже есть два компонентов - классы (Component) и функции (StatelessComponent) по сути тебе нужно написать такую функцию (функции) которая будет принимать на вход KClass<T : Component>.
АС
11:52
Алексей Савельев
@HeapyHop Если честно не очень понятно как последнее использовать 🙂 можно пожалуйста поподробнее?
Bogdan Panchenko invited Bogdan Panchenko
Igor invited Igor
Larymar invited Larymar
L
22:34
Larymar
Привет ребят вопрос такой, я работаю в идее и она же поднимает http сервер, когда отображает хтмл страницы, а можно сделать так, что бы сервер был https
24 August 2018
AE
05:26
Alexandr Emelyanov
In reply to this message
Привет. У тебя что на беке? Ктор?
L
09:08
Larymar
In reply to this message
Хз, на бэке у меня просто идея, я не знаю
Я идее на своей html страничке тыкаю в иконки браузеров и вижу в адресной строке localhost ...
DY
09:21
Danil Y.
так значит у тебя нет никакого сервера, просто статичный html 🤔 не на чем https настраивать
L
09:32
Larymar
In reply to this message
Ммм, нет, идея же пишет не путь к файлу в адресной строке , а там localhost...
AE
09:33
Alexandr Emelyanov
Идея внутри себя поднимает простой веб сервер. Не используй это
L
09:34
Larymar
Я просто с вебом вожусь и мне нужно было денутт navigation bluetooth и сервак только радивеба поднимать не хотелось
DP
11:25
Dumitru Preguza
In reply to this message
А если он на кторе?
11:26
Я поставил сервер на хероку, там сразу https
AE
11:32
Alexandr Emelyanov
всегда есть 2 варианта. 1 - пойти в доку твоего фреймворка (ktor) и посмотреть как делается. 2 - поставить на фронт прокси nginx с настроенным https
28 August 2018
Mar Ort invited Mar Ort
29 August 2018
30 August 2018
L
12:37
Larymar
Ребят, а можете посоветовать чат по чистому жс
Алексей Савельев removed Алексей Савельев
AV
12:52
Anton Vlasov
L
12:54
Larymar
Спасибо
12:54
Котлин увы не справляется с задачей
1 September 2018
АУ
11:25
Анна Удовиченко
Del. Вопрос решился.
9 September 2018
Deleted Account invited Deleted Account
12 September 2018
Deleted Account invited Deleted Account
13 September 2018
RI
19:01
Ruslan Ibragimov
Видео про Kotlin/JS подъехало
https://www.youtube.com/watch?v=X4-GgdAG0ZM
19:01
MO
19:03
Mar Ort
In reply to this message
Спасибо!
ZB
20:45
Zalim Bashorov
Пора пробовать инкрементальную компиляцию Kotlin/JS, если вдруг вы этого еще не сделали!
https://twitter.com/kotlin/status/1040289709086466049
НГ
21:03
Наиль Гилазиев
наконец-то какая-то движуха в kotlin/js )
Кирилл Романенко invited Кирилл Романенко
КР
22:10
Кирилл Романенко
Решил попробовать в kotlin-js, создал проект в Intellij idea, но вылетела ошибка
Warning:Kotlin: '/home/kirill/.m2/repository/org/jetbrains/kotlin/kotlin-script-runtime/1.2.70/kotlin-script-runtime-1.2.70.jar' is not a valid Kotlin Javascript library

Кто-нибудь знает что делать?
ZB
22:11
Zalim Bashorov
В сообщении написано Warning 🙂
22:12
вы добавили в проект не тот jar
КР
22:12
Кирилл Романенко
In reply to this message
Да, но потом из-за этого ошибка
Error:(1, 1) Kotlin: Cannot access script base class 'kotlin.script.templates.standard.ScriptTemplateWithArgs'. Check your module classpath for missing or conflicting dependencies

И явно что это из-за первого ворнинга
22:12
In reply to this message
А что нужно изменить?
ZB
22:12
Zalim Bashorov
проект можете показать?
22:13
проект идевский или gradle, maven ?
22:13
kotlin-script-runtime вы сами добавляли?
КР
22:13
Кирилл Романенко
In reply to this message
ZB
22:14
Zalim Bashorov
Если пошарите проект будет надежнее и проще
КР
22:15
Кирилл Романенко
In reply to this message
Нет. Нашёл причину ворнинга, убрал, ради интереса тупо создал голый проект, но там опять ошибка
Error:(1, 1) Kotlin: Cannot access script base class 'kotlin.script.templates.standard.ScriptTemplateWithArgs'. Check your module classpath for missing or conflicting dependencies
ZB
22:22
Zalim Bashorov
новый проект тоже Kotlin/JS?
КР
22:22
Кирилл Романенко
In reply to this message
да
ZB
22:22
Zalim Bashorov
какая у вас версия идеи?
22:23
я так понимаю плгин версии 1.2.70, да?
КР
22:23
Кирилл Романенко
In reply to this message
2018.2.3
22:23
In reply to this message
Да, обновил только что до 70, не помогло. До этого, вроде, был 61
ZB
22:26
Zalim Bashorov
спасибо, попробую, но zip с проектом был бы тоже полезен
КР
22:26
Кирилл Романенко
untitled.zip
Not included, change data exporting settings to download.
4.6 KB
22:26
Он абсолютно дефолтный
ZB
22:27
Zalim Bashorov
расширение неправильное
22:27
должно быть .kt
КР
22:28
Кирилл Романенко
In reply to this message
И это будет js?
ZB
22:28
Zalim Bashorov
kts это для всякого скриптинга и к Kotlin/JS отношения не имеет
КР
22:28
Кирилл Романенко
In reply to this message
Понятно, спасибо!)
ZB
22:28
Zalim Bashorov
In reply to this message
да можно будет скомпилировать в JS
КР
23:30
Кирилл Романенко
kotjs.zip
Not included, change data exporting settings to download.
4.7 KB
23:30
подскажите пожалуйста
23:31
Не могу запустить простейший хеллоуворд. .—-. По началу настроек конфигурации нет, когда ставлю - не видит файл с main-функцией. Залез в другие проекты на котлине (только jvm) - поставил ту же конфигурацию, а тут не работает.
ZB
23:32
Zalim Bashorov
что имеется ввиду под конфигурацией?
КР
23:33
Кирилл Романенко
In reply to this message
ZB
23:34
Zalim Bashorov
run-конфигурация для JVM и JS не совместимы
КР
23:34
Кирилл Романенко
MainKt я прописал сам, и тот не работает.
23:34
In reply to this message
Но почему не завезли дефолтную конфу?
ZB
23:34
Zalim Bashorov
запустить Вы можете только из IDEA Ultimate
КР
23:35
Кирилл Романенко
In reply to this message
Кек. .—. Пойду ставить, спасибо
ZB
23:36
Zalim Bashorov
Screen Shot 2018-09-13 at 23.35.38.png
Not included, change data exporting settings to download.
17.9 KB
и тогда получите зеленую кнопочку на против main
23:36
возможно нужно будет засетапить node.js, в том числе объяснить IDEA где брать ноду
КР
23:37
Кирилл Романенко
In reply to this message
Окей, спасибо
23:37
Но меня правда удивляет, почему комьюнити версия умеет создавать js-проекты, но не умеет их запускать, и ко всему ещё и не предупреждает, что для запуска нужна ultimate версия. .—.
ZB
23:39
Zalim Bashorov
Screen Shot 2018-09-13 at 23.37.17.png
Not included, change data exporting settings to download.
48.0 KB
Для запуска в ноде нужно будет еще пойти в настройки сюда
23:39
Screen Shot 2018-09-13 at 23.37.33.png
Not included, change data exporting settings to download.
24.7 KB
и поменять это свойство
23:40
а еще сделать npm install kotlin
КР
23:42
Кирилл Романенко
In reply to this message
Окей, спасибо.)
ZB
23:42
Zalim Bashorov
In reply to this message
при желании можно обходится без ultimate, но придется часть вещей делать не в IDE и возможно менее удобно
23:43
т.е. например можно дебажить в любимом браузере, запускать любимым тулом и т.п.
КР
23:53
Кирилл Романенко
In reply to this message
А node.js зачем для запуска обычного hello world-а?
23:54
In reply to this message
Кстати, ничего не поменялось... Дефолтного конфига нет, нихрена не запускается.
ZB
23:58
Zalim Bashorov
In reply to this message
JS код где то надо же выполнить
КР
23:59
Кирилл Романенко
In reply to this message
Ну я вместе с html, idea предлагает выполнить в браузере
ZB
23:59
Zalim Bashorov
Альтернатива написать html и подключить туда нужные js файлы
14 September 2018
КР
00:01
Кирилл Романенко
In reply to this message
А трансляция в js-файл происходит автоматически?
ZB
00:01
Zalim Bashorov
In reply to this message
Node.js, JavaScript плагины включены?
00:02
In reply to this message
Что значит автоматически?
00:02
Аля watch mode?
КР
00:03
Кирилл Романенко
In reply to this message
Ну как я представляю: написал на kotlin-js код, нажал run, он его транслировал в js-файл и дальше можешь запускать как хочешь, хочешь из html, хочешь ещё как-то. Нет?
ZB
00:05
Zalim Bashorov
Ну зааустил билд, получил js и дальше можно использовать этот файл
00:07
Идея может билдить автоматически и гредла есть continues mode, меняешь сорцы, а код в фоне перекмпилируется
КР
01:31
Кирилл Романенко
Подскажите ещё, пожалуйста: idea разрешает hmtl-файлу брать js-файлы из другой папки аля
<script type="text/javascript" src="out/production/sampleapp/lib/kotlin.js"></script>

Но когда открываешь html-файл вручную, он не находит данные файлы. Как пофиксить?
01:33
Или возможно идею принудить закидывать определённые файлы в src?
DP
10:03
Dumitru Preguza
Сделай gradle таск на копирование файлов в src если проект на gradle как вариант
AE
10:14
Alexandr Emelyanov
In reply to this message
у тебя после сборки html файл помещается (должен при нормальной сборке) со всеми остальными артифактами (js, css) в папку дистра, оттуда и открывай
10:15
In reply to this message
>out/production/sampleapp/lib/kotlin.js
плохая идея, не надо так делать
КР
10:15
Кирилл Романенко
In reply to this message
А в чём прикол иметь 2 одинаковых html-файла? Один в src, другой в out.
10:16
In reply to this message
Ага, будто я сам это придумал
AE
10:18
Alexandr Emelyanov
In reply to this message
это сдандарт дефакто, у тебя же ресурсы приложения перекладываются в target/build при сборке kotlin кода? тут так же
10:18
тут это все делает вебпак или другой какой сборщик
10:18
это раз
10:19
два, тебе вообще этот файл открывать не надо, т.к. обычно настривается вебпак с embedded сервером, который все отдает сразу из папки дистра
10:20
In reply to this message
отсюда вытекает - в твоем html файле пути должны быть такими же как в дистре
КР
10:20
Кирилл Романенко
In reply to this message
Ага, только мне каждый раз приходится менять во втором html-файле пути к js исходникам. А так всё в порядке..
AE
10:21
Alexandr Emelyanov
In reply to this message
и да, этот же вебпак мониторит изменения твоих сырцов и заново их собирает при изменениях и пихает в дистр
10:21
In reply to this message
потоу что так, как ты открываешь - не делает никто
КР
10:21
Кирилл Романенко
In reply to this message
У меня лабки в универе, ничего не могу поделать
AE
10:22
Alexandr Emelyanov
все поднимают embedded сервер и смотрят, настраивается на раз-два
10:22
In reply to this message
и что? что тебе мешает сделать нормальную конфигурацию?
КР
10:23
Кирилл Романенко
In reply to this message
Ну например? Прописал в html-файле пути к js, он собрал, кинул второй html в другую папку, где пути не сходятся. И как мне сделать нормальную конфигурацию??
AE
10:24
Alexandr Emelyanov
ну емае, делаешь пути как в дистре и смотришь через embedded сервер, что не понятно то?
КР
10:29
Кирилл Романенко
In reply to this message
Ничего. ;D Я только вчера вечером впервые сел за js. Что ты имеешь ввиду под "пути как в дистре"?
AE
10:31
Alexandr Emelyanov
мой тебе совет, почитай сначала немного про js/веб разработку, что такое пакетные менеджеры (npm), бсорщики и т.д., вот неплохая вводная статья https://habr.com/company/mailru/blog/340922/
10:32
потом пйомешь что к чему
10:32
этот чат не место, где все объяснять
10:32
ну либо можешь сходить в чатик фронтендеров
10:33
если будут вопросы как настроить kotlin под вебпак - пиши сюда
L K invited L K
Boris Vanin invited Boris Vanin
Maksim B. invited Maksim B.
Ibrohim Kholmatov invited Ibrohim Kholmatov
BV
22:13
Boris Vanin
господа, как же так, неужели в котлинх.хтмл нету дсл-а для цсс-а? :-\
15 September 2018
DP
00:00
Dumitru Preguza
есть dsl для сss, целых 2
00:01
но они не связыны как то с библиотекой kotlin.html
16 September 2018
Deleted Account invited Deleted Account
BV
20:44
Boris Vanin
может быть здесь есть кто-то кому удалось написать рабочий пример на котлин-реакте?
АУ
21:27
Анна Удовиченко
У Kotlin/JS правда нет никакой обёртки для MongoDB, или я просто плохо ищу? 🤔
BV
21:28
Boris Vanin
для сервера?
АУ
21:28
Анна Удовиченко
In reply to this message
да, для сервера. У меня там Kotlin/JS и node.js соответственно
21:29
нашла только для JVM
BP
21:29
Bogdan Panchenko
In reply to this message
BV
21:29
Boris Vanin
отважный ты человек. для себя или в проде?
21:29
In reply to this message
а это ведь для жвм-а
21:29
вроде
АУ
21:30
Анна Удовиченко
In reply to this message
слабоумие и отвага
BP
21:30
Bogdan Panchenko
In reply to this message
сам не уверен, но мало ли
АУ
21:31
Анна Удовиченко
In reply to this message
> you use transparently the core MongoDB java driver API
Так что видимо это мимо. Но спасибо
BV
21:32
Boris Vanin
https://mongodb.github.io/node-mongodb-native/ ну вот эту штуку заверни в котлин и норм
21:33
кто-то же в итоге должен это делать 😊
АУ
21:33
Анна Удовиченко
In reply to this message
вот насчёт завернуть в котлин это мой следующий шаг, после того, как я не нашла обёрток уже готовых.
Чтобы интеропиться с JS, я решила последовать совету с оф. сайта и сконвертить хэдеры от TypeScript. Вот пока не нащупала глубину этой бездны 🙈
21:34
для ts2kt видимо багрепортов надо будет написать, если конечно эту штуку ещё поддерживают 🤔
BV
21:35
Boris Vanin
вообще такое ощущение, что жс бэкэнд котлиновский пилят довольно слабо
21:35
если получится из тайпскрипта — это будет большой удачей
АУ
21:37
Анна Удовиченко
последние коммиты в конвертилку были как-то давно, а чего-то похожего на баги я сходу нашла много :(
BV
21:37
Boris Vanin
ну, желаю тебе сил и терпения. Ты сама выбрала этот путь..мм.. воина 😊
АУ
21:40
Анна Удовиченко
In reply to this message
хех, спасибо 😂
21:41
Почему для сервера на node.js ничего нет - это понятно. Зачем, если можно писать сервер на Kotlin/jvm
BV
21:41
Boris Vanin
думаю, проблема в том, что жс нельзя так же удобно использовать из котлина как джаву
18 September 2018
Ilya Nemihin invited Ilya Nemihin
ZB
20:57
Zalim Bashorov
In reply to this message
в чем именно сложности? Приходите в kotl.in/slack там точно есть такие люди 🙂
21:03
In reply to this message
поддерживаем, но, как было замечено, внимания оно пока мало получает
21:04
@AnutaU вообщем, если есть вопросы по ts2kt или нужна помощь по конвертации пиши
АУ
21:08
Анна Удовиченко
In reply to this message
Спасибо! Не знаю, как с конвертацией, но пока мне и без неё немного полегчало. Потом сделаю issue на гитхабе на те странности, что нашла в конвертере. Сейчас пока никак, всё горит :)
21:09
И видимо пора завести себе slack и если что все же писать туда 🤔
19 September 2018
BV
00:51
Boris Vanin
In reply to this message
Не понимаю как делать байнды
00:52
Документации нету, примеров нету, своих мозгов не хватает
00:54
Сделал пока руками: дёргаю форсрендер руками
DP
02:14
Dumitru Preguza
In reply to this message
AE
06:04
Alexandr Emelyanov
А css то зачем в коде описывать... просто как статику раздавать и все, вебпак все равно ее обработает, если даже scss нужен
AE
06:50
Alexandr Emelyanov
а ангуляр, не первый, кто то поднимал под котлин?
06:50
или забить и писать на TS?
LK
06:51
L K
In reply to this message
я видел некие наброски, но скорее новую версию не поднимешь
лучше на ts писать
@angular_ru
AE
06:52
Alexandr Emelyanov
я тоже видел наброски, но ничего живого. возможно придется самому колбасить. только с TS разобраться
LK
06:53
L K
там на ts все норм, колбасить ничего не нужно
AE
06:54
Alexandr Emelyanov
хотелось бы втащить ангуляр в единую мультиплатформенную экосистему с одним языком
06:55
но пока что наверно это все утопия
LK
06:55
L K
In reply to this message
не выйдет, я думаю и пытаться не нужно
AE
06:55
Alexandr Emelyanov
надо продолжить эксперименты по kotlin -> ts для подключения к проекту на андройде
06:55
*ангуляре
06:55
проснуться надо)
LK
06:56
L K
нужно будет описывать кучу тайпингов и поддерживать их
AE
06:57
Alexandr Emelyanov
есть вот такая штука https://github.com/ntrrgc/ts-generator
LK
07:00
L K
вам нужно сначала наоборот с ts на kotlin
что бы kotlin мог видеть типы, а потом обратно
AE
07:02
Alexandr Emelyanov
зачем?
07:02
если я делаю общий платформонезависимый код и немного приправляе его js биндингами?
07:02
его просто остается подключить к ts
LK
07:03
L K
ну тут я хз, может и не нужно
я просто не знаю как вы autocomplete будете юзать
откуда котлин будет знать про angular типы
AE
07:04
Alexandr Emelyanov
так котлину и не нужно будет, этот код не будет знать о ангуляре, либаз андройда или какой там фреймворк на бэке
07:04
это все те места, куда его подключат
LK
07:05
L K
как не нужно если вам нужен ангуляр ?
AE
07:05
Alexandr Emelyanov
если нужны асинхронные абстракции типо observable - они объявляются как expected и в реализации для js платформы подключаются
07:05
In reply to this message
ангуляр будет просто вызывать этот код
07:05
и все
LK
07:06
L K
In reply to this message
вы пакет делаете / либу для ангуляра ?
AE
07:06
Alexandr Emelyanov
коду ничего не нужно будет знать кроме своей доменной модели, которую в него будут пихать
07:06
да
LK
07:07
L K
In reply to this message
там есть модули и вам нужно объявить этот NgModule модуль для ангуляра, без него не выйдет
а если вам просто нужно либа на js, то тут ангуляр не причем
07:07
без ангуляра не обойдется
07:08
вот для того что бы объявить сервис в либе для ангуляра нужен декоратор Injectable, нужен NgModule
для компонента Component, директива Directive, фильтры Pipe
AE
07:08
Alexandr Emelyanov
In reply to this message
>а если вам просто нужно либа на js, то тут ангуляр не причем
в точку, если ангуляр под котлин не заводится, мы просто к нему подключим общий код
07:09
In reply to this message
для этого просто нужно будет подключить к js модулю ангуляр и объявить все эти типы что бы котлин их знал и смог использовать
LK
07:10
L K
In reply to this message
я понял, у вас выйдет обычная js либа не привязанная к какому-либо фреймворку
AE
07:10
Alexandr Emelyanov
да
07:10
это как вариант если ангуляр под котлин не взлетает
LK
07:10
L K
In reply to this message
подключить к js модулю ангуляр странно звучит
я понял вы просто тогда опишите уже на ангуляре модуль для этой либы
если нужно будет
AE
07:17
Alexandr Emelyanov
In reply to this message
нет. я подключу к kotlin/js модулю, реализующему common модуль и укажу там ожидаемые абстракции
07:17
ну или не ожидаемые, а просто смочу код необходимой обвязкой для ангуляра, но на котлине
LK
07:19
L K
In reply to this message
в этом случае вам нужны типы ангуляра
AE
07:19
Alexandr Emelyanov
да, просто подключив его к проекту
07:19
на kotlin/js
LK
07:24
L K
люди от пытались
https://github.com/gbaldeck/angular-kotlin-starter
но как я вижу в angular не будут доступны какие-то фичи
опять же теряется польза от ng cli которые может генерить любой компонент, сервис модуль и т.д.
AE
07:30
Alexandr Emelyanov
видел я этот стартер
07:30
заброшен он
BV
11:11
Boris Vanin
Канал-то ожил 🙈
11:13
Не получилось у меня использовать общую модель между клиентом и сервером, к слову. Из за особенностей сериализации жсона
20 September 2018
SR
07:41
Sergey Rostov
@lex_it Немного про перспективы поддержки ангулара 2+ вот тут: https://youtrack.jetbrains.com/issue/KT-21561#focus=streamItem-27-2931945-0-0
AE
08:17
Alexandr Emelyanov
In reply to this message
спасибо за информацию, поразбираюсь, может что сделаю)
LK
08:28
L K
ну собственно про что я и говорил, как бы можно юзать ангуляр и писать на kotlin
но не будет работать очень много нужных фичь
тот же AOT, не будет ng-cli который бы генерил что нужно да еще под kotlin код
AE
08:35
Alexandr Emelyanov
я так понимаю какие либо движухи начнутся после релиза 1.3
4 October 2018
ShamilNerd invited ShamilNerd
5 October 2018
bogus invited bogus
Sergey λ invited Sergey λ
Vladislav Navrocky invited Vladislav Navrocky
VN
23:52
Vladislav Navrocky
Господа, а как в аппликации, созданной с помощью npx create-react-kotlin-app делать юнит тестирование?
23:53
делать правильно имеется ввиду
6 October 2018
Andrew Mikhaylov invited Andrew Mikhaylov
Vadim invited Vadim
Almazbek invited Almazbek
9 October 2018
VN
08:34
Vladislav Navrocky
Никто не пишет тесты?
08:34
Или не использует этот вид проекта?
BV
10:58
Boris Vanin
Я в итоге поднял реакт, но тестов не делал
АУ
11:00
Анна Удовиченко
Я тоже не очень поняла, как тестировать реакт 🤷‍♀️
VN
11:01
Vladislav Navrocky
Без тестов не знаю как писать код ( на сервере привык
BV
11:02
Boris Vanin
Как тестировать, можно представить. Там же компоненты отдельные, их можно создать и потыкать палочкой
RI
11:02
Ruslan Ibragimov
есть подход с https://airbnb.io/enzyme/, но я не совсем понимаю как это вкрутить в kotlin-react-app
VN
11:02
Vladislav Navrocky
Там похоже надо писать для Jest адаптер, который будет перед прогоном тестов компилить котлин
BV
11:04
Boris Vanin
А интеграционные тесты на селениуме 🙈
VN
11:06
Vladislav Navrocky
в README.md вот такое вот написано (((
11:06
кто и где работает над этим?
BV
11:06
Boris Vanin
Это многое объясняет
11:07
Это зависит от того ридми какого проекта ты читаешь 😁
VN
11:08
Vladislav Navrocky
BV
11:08
Boris Vanin
Я в итоге его выкинул, оказалась совершенно бесполезная вещь
VN
11:09
Vladislav Navrocky
Проект на базе gradle мне что-то совсем не понравилось делать, слишком многословно и во всех примерах делается по ранзому
11:09
In reply to this message
А как тогда делать правильно?
LK
11:09
L K
как это нравится, что бы писать фронт нужна java ))
BV
11:10
Boris Vanin
In reply to this message
Ну да, компилятор котлина один чёрт работает на жвм
11:11
In reply to this message
Грейдл, вполне норм, мне даже удалось что то переиспользовать
11:11
Между сервером и клиентом
11:11
Но значительно меньше чем хотелось бы
АУ
11:13
Анна Удовиченко
Я тоже на Gradle всё запилила с kotlin-react. Шарилась по разным примерам и в итоге как-то сообразила.
11:14
По идее, для фронта есть Karma - она какие-то браузерные тесты ранит что ли. Но я пока не въёхала, как эта балалайка работает, я от фронта бесконечно далека 🤷‍♀️
VN
11:22
Vladislav Navrocky
In reply to this message
Нет, ну так оно работает, и если пересаживать джаваскриптера на котлин, ему прямо будет привычно
AE
11:29
Alexandr Emelyanov
In reply to this message
не совсем, они его прогоняют через excelsior jet, так что на выходе бинарь
VN
11:37
Vladislav Navrocky
In reply to this message
смотрю в node_modules, там компилятор котлина на jvm
AE
11:38
Alexandr Emelyanov
какая версия?
VN
11:38
Vladislav Navrocky
11:39
1.2.71
AE
11:39
Alexandr Emelyanov
может быть
11 October 2018
I
16:08
Igor
Ребят, кто-нибудь пробовал Redux Saga? Оно на котлине есть?
RI
16:08
Ruslan Ibragimov
Пробовал, не понравилось
16:09
Я в итоге свои поиски идеального middleware для redux остановил на thunk - для простых случаев, а для больших приложений мне зашел https://redux-observable.js.org/
I
16:13
Igor
In reply to this message
А ты прям из kotlin пробовал?
RI
16:13
Ruslan Ibragimov
Нет, из котлина хз как пробовать, в саге генераторы абьюзяться сильно
16:14
Т.е. там вся сага это генератор
I
16:14
Igor
Я вот, задумался "можно ли свою saga" написать (на котлине)
RI
16:15
Ruslan Ibragimov
Да, сага это способ не писать async/await
16:15
на suspend функциях кажется тоже самое можно без проблем делать
16:15
Это ж джаваскрипт, библиотеки возникают от бедности
I
16:16
Igor
In reply to this message
Да, но их сложно тестировать. Стейт-машина же спрятана от тебя.
16:16
И в котлине же есть yield 🤔 через который saga работает
RI
16:16
Ruslan Ibragimov
In reply to this message
Но он генерится в стейт машину, а не траспилиться в es6
I
16:17
Igor
Но он же возвращает "коллекцию эффектов", которую можно либо проинтепретировать, либо просто просмотреть в тесте
RI
16:18
Ruslan Ibragimov
<бред> Если проблема в тестировании, то ты смотришь просто на стор. Кидаешь в middleware ивенты, мокаешь зависимости и смотришь как стор меняется </бред>
16:22
чет фигню сказал, вот тут пример как именно протестировать middleware без редьюсеров
I
16:54
Igor
> Injecting Dependencies

😒
12 October 2018
Evgeniy Podivilov invited Evgeniy Podivilov
15 October 2018
Anton Pekhov invited Anton Pekhov
Lev Shagalov invited Lev Shagalov
Roman Kochkar invited Roman Kochkar
18 October 2018
Deleted Account invited Deleted Account
Vadim Gavrikov invited Vadim Gavrikov
21 October 2018
Ever Ramirez invited Ever Ramirez
25 October 2018
Cenator ❄️ invited Cenator ❄️
C❄
17:03
Cenator ❄️
Привет, почему с такой конструкцией (as Regexp) сборщик кидает ошибку cannot find module '.'?
ставил через create-react-kotlin-app
17:03
17:04
без as RegExp работает но идея подсвечивает зеленым
MO
17:14
Mar Ort
In reply to this message
Привет, чтобы as RegExp правильно сработал, аргумент должен быть Котлиновским объектом.
C❄
17:16
Cenator ❄️
In reply to this message
а как сделать чтобы идея не подсвечивала?
MO
17:17
Mar Ort
Попробуй вот так js(...).unsafeCast<RegExp>()
17:18
Но это не выглядит, как что-то безопасное :)
C❄
17:18
Cenator ❄️
да я понял уже по названию спасибо)
VN
17:19
Vladislav Navrocky
In reply to this message
а вот так не надо
17:19
100% оно не кастанётся
MO
17:20
Mar Ort
In reply to this message
Не совсем понятно, что такое RegExp в данном случае
17:21
Если речь про библиотечный котлиновский RegExp, то программа упадет чуть позже
VN
17:24
Vladislav Navrocky
In reply to this message
Хы, в котлине оно Regex, а не RegExp
17:24
так, что это вообще хз что
LS
22:02
Lev Shagalov
Могу ли я описать несколько классов с методами и свойствами.
А потом взять переменную и сказать, что она удовлетворяем всем эти классам?
LK
22:03
L K
In reply to this message
это с js класс, он там так называется
VN
22:05
Vladislav Navrocky
Ну не знаю тогда, как оно сработает с JS классами.
22:06
Если просто нужны регекспы, то можно их взять из котлина
22:07
In reply to this message
Плохая постановка вопроса..
22:08
val: Any удовлетворяет всем классам
LS
22:08
Lev Shagalov
https://pl.kotl.in/rkanEqk27

А как кастануть и в то и в то одновременно?
VN
22:09
Vladislav Navrocky
С мобилки не открывается (
LS
22:11
Lev Shagalov
(Отправил в личку)
Я пытаюсь воспользоваться Vue.js но без всех жутких unsafeCast. Замучался. Либ нету.
MO
22:12
Mar Ort
In reply to this message
LS
22:12
Lev Shagalov
Про Vue я его уже достал) Может про классы поможет
22:12
Если честно, может ну его нафиг этот Vue и перейти на реакт... Но от такой простой, приятный, этот Vue %)
AL
22:30
Alexander Levin
In reply to this message
В явном виде структурной типизации в Котлине нету, если нужно постоянно, лучше юзать Typescript.

Если же нужно юзать редко, то есть unsafeCast.

Пересечений типов в явном виде тоже нету. Для интерфейсов можно создавать пересечения через имплементацию на делегатах. Для классов уже непросто.
BV
22:34
Boris Vanin
In reply to this message
Никак. В жс наверное такое можно провернуть, но в котлине нет
LS
22:35
Lev Shagalov
{
part1: {
prop1: 1,
prop2: 2
},
part2: {
fun1 : funciton() {return 1},
fun2: funciton() {return 2},
}
}

{
prop1: 1,
prop2: 2,
fun1 : funciton() {return 1},
fun2: funciton() {return 2},
}

В Vue,js компоненты описываются как первый объект.
Vue обрабатывает этот конфиг и мы в работе получаем второй объект "смерженный".
Вот я и хочу крсиво описать такой смерженный объект в котлине
Я хотел части конфига описать классами, а потом как то силком заставить некую внешнюю переменную выглядеть как оба класса сразу

Так то я могу сделать это через интерфейсы, отдельно описать части конфига а потом сказать что есть еще один интерфейс отнаследованный от всех других. Но... это не то. "Это не катит". Я не хочу дважды описывать одно и то же.

Разве что описать и сразу имплементировать на месте.
LK
22:35
L K
в ts куча манипуляций с пересечениями типов
LS
22:36
Lev Shagalov
ts не хочу, на котлине оч удобно писать, даитаклассы готовы, сериализация есть, логика расшаренная есть... Исключение - использование Vue
LK
22:37
L K
In reply to this message
только не для vue, туда даже типизацию норм на ts не запилили еще, а вы kotlin хотите
22:40
максимум что можно придумать, это написать некую логику на kotlin не привязанную к vue и упаковать в npm либу с типами,
потом на фронте это юзать
LS
22:40
Lev Shagalov
Я еще думал, может поверх конфига (первый объект) написать обертку. Но, тоже ничего в голову не пришло. Там еще и this подменяется...
VN
22:41
Vladislav Navrocky
а чего такого в vue есть, чтобы не использовать react?
LS
22:44
Lev Shagalov
Чисто субьективно не хочется. Но ладно.
Ок, предположим перейдем на реакт. (Я как то пытался просто реакт js осилить, не поулчилось, ну.. получится)
Смотрю примеры
https://github.com/JetBrains/kotlin-wrappers/blob/master/examples/src/main/kotlin/example/Todo.kt
И сразу вспоминаю наиудобнейшие однофайловые компоненты у Vue, которые без котлина еще и отлично прокликиваются в idea.
А в этом примере... не ну kotlin-html это все конечно замечательно, но я хочу ближе к html и чтобы проклививалось и было в одном файле. Я сходу не нашел, есть поддержка такого?
AL
22:44
Alexander Levin
In reply to this message
Ну, пока есть такие решения:

1. Выбросить Vue. Это нормальный фреймворк, но не на Котлине в данный момент жизни.
2. Выбросить KotlinJS часть. Дата классы - хорошо, сериализация - замечательно. Но с динамик концептами не настолько сдружили (ну, по крайней мере, если не считать использование dynamic почти везде хорошим планом)
3. Изолировать KotlinJs часть. Похоже на второе, но можно просто оставить то, что выглядит не криво на котлине, остальное перенести на Typescript или даже просто ES6 JS.
4. Начать методично долбить KEEP с пересечением/объединением типов, намекая, что без него очень плохо движется интероп с KotlinJS
LS
22:46
Lev Shagalov
Да я уже задолбил всех вплоть до сео)
VN
22:46
Vladislav Navrocky
In reply to this message
что значит прокликиваются?
LS
22:47
Lev Shagalov
In reply to this message
У Vue есть однофайловые компоненты. Это xml из трех частей: html css js.
Прокликиваются: кликаешь по переменной в html - попадаешь в js. Соответственно подсветка невалидных имен вроде бы была. Переименование. Но это не точно.
22:49
In reply to this message
Вот если вернуться к идее обертки.
Проблема в чем. Мы описываем первый объект - конфиг. А this в методах будет другой. this будет как второй объект. Получение ссылки на подстановочный this очень просто: js("this") Но теперь хочется приделать к нему апи для работы. Ну или завернуть его во враппер какой либо.
LK
22:50
L K
In reply to this message
ну напишите общую логику на kotlinjs, сущности, сериализацию упакуйте в либу, что там еще
пока я вижу что это оптимальный вариант
LS
22:50
Lev Shagalov
In reply to this message
И утоните в интеропе с манглингом. Пробовал. Лучше unsafeCast
LK
22:51
L K
а так вы тоните в поиске решения и теряете время, до которого еще далеко, вообще далеко
AL
22:53
Alexander Levin
In reply to this message
Ну, в публичном поле, если честно, не нашёл сходу.
Пару тем, которые нашёл дискусионных:
https://discuss.kotlinlang.org/t/union-and-intersection-types-feature-request/4191
https://discuss.kotlinlang.org/t/any-thoughts-on-ceylon-style-union-and-intersection-types/547/20

Комментов нету с августа 17 года.

Так что я бы предложил с конкретными примерами и пожеланиями прийти туда.
Учитывая, что на недавних конференциях обсуждали то, что они собираются оживить немного направление KotlinJS после релиза 1.3, то есть шанс прийти в нужное время.
LS
22:56
Lev Shagalov
Я обращался не публично. Но да, наверно если начать писать как вы предлагаете, дело может сдвинуться с мертвой точки. Так или иначе, я попробую еще один вариант с оберткой.
BV
23:16
Boris Vanin
В котлин+реакт всё на котлине пишется. Там обычный переход по методам заменяет то что делает плагин vue
26 October 2018
LS
09:29
Lev Shagalov
Просто kotlin-html, это все конечно замечательно. Но обынчый html/css намного привычней + всякий zen coding или как там эти автодополнения зовутся.

... как из класса (можно дата класса) получить обычный js объект включая методы?
По умолчанию со свойствами все ок, а методы находятся в в классе выше
Wubbu Lubbu Dub Dub invited Wubbu Lubbu Dub Dub
Алексей Овсянников invited Алексей Овсянников
АО
15:01
Алексей Овсянников
In reply to this message
О, привет. А я тебя знаю:)
29 October 2018
Il invited Il
I
10:49
Il
Привет! подскажите как обычно в веб-приложении kotlin-js реализуется интернационализация?
VN
10:50
Vladislav Navrocky
насколько мне известно под сам котлин нет либ, надо использовать существующие js либы
I
10:55
Il
ага хорошо, спасибо, буду копать тогда в эту сторону
RI
14:08
Ruslan Ibragimov
Смотрю я доклад с React Conf (https://www.youtube.com/watch?v=V-QO-KO90iQ&list=PLPxbbTqCLbGE5AihOSExAa4wUM-P42EIJ&index=2&t=0s), и там Даниил Абрамов на серьезных щах говорит что классы confusing. Реалии JS разработчиков
VN
14:10
Vladislav Navrocky
Да им там и DI не нужен
LK
14:20
L K
In reply to this message
нужен, ангуляру
VN
14:24
Vladislav Navrocky
In reply to this message
Это транссексуал?
RI
14:24
Ruslan Ibragimov
Да, в начале, Ден вроде нет, но это не важно
VN
14:25
Vladislav Navrocky
Фу, чот на реакте перехотелось программировать )
I
15:30
Igor
In reply to this message
>>  классы confusing

А что вместо них нужно?
RI
15:31
Ruslan Ibragimov
Функции, но функции не всегда можно, иногда нужен state, и различные lifecycle ивенты. Вот и придумали hooks
15:34
Вообще кажется что это хорошо, наверное будет удобнее писать на котлине
15:37
Интересно как они реализовали useEffect...

Типо пишут

function MyComp() {
useEffect(() => {
// only runs once
}, []);
}
15:46
Надо привязать вот этот useEffect к текущему компоненту, судя по всему они просто кладут условно текущий компонент в глобальную переменную, и когда внутри функции дергается useEffect достают текущий компонент (контекст) из глобальной переменной. JS, сингл тред, норм чё
16:00
Прекрасный API у React Hooks

Есть такая функция:

export function useState<S>(
initialState: S | (() => S),
): [S, Dispatch<S, BasicStateAction<S>>] {


и её предлагают вот так использовать:

const [name, setName] = useState("Ruslan")


Т.к. Pair и destructuring как в Kotlin у них нет, они возаращают по сути List<Any>, где list[0] лежит текущее значение, а list[1] функция для обновления.

И вот с нормальных языков типо TypeScript или Kotlin придется извращаться чтобы типы прописать.
16:04
А объект не возвращают, потому что в таком случае у него всегда будет value/setValue и нельзя будет несколько раз написать useState

const {value, setValue} = useState("Ruslan");
const {value, setValue} = useState("Kotlin"); // ooops
16:06
придется писать бойлерплэйт:

const {value: name, setValue: setName} = useState("Ruslan");
const {value: lang, setValue: setLang} = useState("Kotlin")
НГ
23:00
Наиль Гилазиев
А можно попросить кого-нибудь обьяснить коротко и научно-популярно суть?
React вносит принципиальные изменения в фреймворк? Теперь надо так делать?
Подтянется ли Kotlin (wrappers) к этому новому подходу? И прочие неочевидные изменения.
Спасибо и сразу извиняюсь, не нашёл пока времени перекопать все ресурсы. Web front не мой профиль, но я стараюсь через Kotlin js + react влезть в эту тему. Стало очень интересно, но пока нет времени видос с конференции посмотреть. Ещё раз извиняюсь)
I
23:59
Igor
Ну это пока только пропозал, да и обратную совместимость они обещали сохранить
30 October 2018
RI
00:51
Ruslan Ibragimov
Как по мне новый подход может быть даже удобнее со стороны котлина
I
01:15
Igor
подожи, а это что?
И вот с нормальных языков типо TypeScript или Kotlin придется извращаться чтобы типы прописать.
RI
01:18
Ruslan Ibragimov
In reply to this message
Так там один раз нужно написать такую обертку над use* чтобы возращался не Array<Any>, а `Pair<S, Dispatch<S>>
RI
02:02
Ruslan Ibragimov
02:03
Вот на коленке сделал обертку для useState
AE
06:00
Alexandr Emelyanov
In reply to this message
Тот случай когда пхпшники пытаются написать что то нормальное)
SR
12:13
Sergey Rostov
In reply to this message
Можно вот так наверное:
12:13
RI
12:14
Ruslan Ibragimov
ну только добавить типы в useState, и делегат должен пару возвращать
12:15
а
12:15
понял, да, красиво
12:16
баг в setValue -> jsArray[1]
SR
12:16
Sergey Rostov
да, точно
Anton Bannykh invited Anton Bannykh
1 November 2018
Denis Pavlyuchenko invited Denis Pavlyuchenko
DP
08:17
Denis Pavlyuchenko
Парни, у кого-нить есть опыт написания электрон приложух на котлин js? Хочется послушать ваш опыт и впечатления
Victor Alenkov invited Victor Alenkov
Рахматуллаев Равшанжон 🍀 invited Рахматуллаев Равшанжон 🍀
Mukhit Abdinazarov invited Mukhit Abdinazarov
Dmitry 𝔇𝔪𝔦𝔱𝔯𝔶 invited Dmitry 𝔇𝔪𝔦𝔱𝔯𝔶
Sergiy Tsimbalyuk invited Sergiy Tsimbalyuk
7 November 2018
Dmitrii Tukhvatullin invited Dmitrii Tukhvatullin
Koba Trader invited Koba Trader
8 November 2018
Иван Бисярин invited Иван Бисярин
LS
13:33
Lev Shagalov
In reply to this message
А в чем собственно проблемы то?
RI
13:38
Ruslan Ibragimov
Ну например есть апишки какие-то в электроне свои, их нужно декларациями покрывать будет
10 November 2018
LS
15:16
Lev Shagalov
Мы тут пытаемся использовать (пока достаточно успешно) Vue с котлином. Написали external определения для этого.
Но у нас вот какая проблема:
У нас есть State (vuex store), где хранятся все данные, грубо говоря уберобъект где лежат все данные (Это так надо в Vue).
У нас есть классы (action mutation component), которые используют этот State.
У нас есть несколько сайтов, в некоторой степени похожих. Не настолько похожих чтобы все слить в один и разрулить ifами и не на настолько разных чтобы не шарить код между ними.

Но вот загвоздка.
Как сделать так, чтобы State у каждого сайта был свой, а классы (action mutation component) могли быть общие?

И при этом получается, что мы заранее не всегда знаем, какое свойство State надо скормить классу. Мы не можем просто взять и насоздавать интерфейсов для State под каждый action-mutation-component.
15:22
Или может я палку перегнул? И надо тупо везде одинаковый стейт? А уже на месте разруливать различия при обращении к стейту?
RI
15:41
Ruslan Ibragimov
Идея с интерфейсами звучит разумно. А если большой стейт собирать как набор маленьких, и вот это малые стейты шарить? Ну типичная композиция
DT
15:58
Dmitrii Tukhvatullin
In reply to this message
А что мешает вынести мутации и actions в отдельный пакет\файл\класс(нужное подчеркнуть) Если бы мы делали это в мире js, то так бы и поступили бы
LS
15:58
Lev Shagalov
In reply to this message
Только вот... интерфейсов... на каждый action mutation component будет over 9000
15:58
Их уже под 50-60 вроде
15:59
Я думаю я просто палку перегнул. И нам не надо делать разный стейт.
11 November 2018
LS
16:28
Lev Shagalov
Да, в итоге решили, что нам не нужно несколько State. Сайты достаточно похожи чтобы на это забить. Так что будет один State и если надо, то для каждого сайта будут подключаться разные версии action и component. Количество сайтов достаточно ограничено чтобы мелки различия реализовать через if. Костыльненько, но быстро и отличий очень мало.
VN
16:33
Vladislav Navrocky
Я вот не пойму прикола этого flux. Всю жизнь боролись за инкапсуляцию и тут такая шняга - общий стейт,в который все могут лазать и ломать как угодно. Это нормально?
LS
16:42
Lev Shagalov
In reply to this message
ООП тут ни при чем. Инкапсуляция ни при чем.
16:43
Это на самом деле очень удобно. Это другой подход. Но вот для сложных интерфейсов ИМХО самое оно.
16:46
А есть еще вопрос.
У системы что я пишу есть прокси. Через него собственно идет весь внешний траффик. А прокси уже решает куда именно его направить, статика это, сервисы, очередь и прочее.
В случае со статикой (js как я понимаю туда же), прокси нацелен на папку.

1. Вопрос собственно вот в чем: как "правильней" собирать kotlinjs автоматически по изменению файлов и класть результат на диск, в папку (включая сорсмапы)? Я это делаю через ./gradlew bundle -t. Но, может для этого есть что то специальное?

2. Я знаю, что котлин собирается вебпаком и что вебпак может вебсервер. будет ли оно сборка "в память" значительно быстрее сборки на SSD диск?

3. Есть ли какие советы по поводу ускорения сборки? инкрементальную компиляцию включил.
RI
16:52
Ruslan Ibragimov
In reply to this message
Думай об этом как о базе данных
LS
16:54
Lev Shagalov
О базе данных, которая бросает события об изменении
VN
16:55
Vladislav Navrocky
Ну так себе
LS
18:25
Lev Shagalov
In reply to this message
Еще и сорсмапы упорно не генерятся для бандла...
14 November 2018
SR
12:03
Sergey Rostov
In reply to this message
Вебпак запускается через гредл? Kotlin Frontend Plugin?
LS
12:15
Lev Shagalov
In reply to this message
Да. сорсмапы уже пофиксил
18 November 2018
LK
18:41
L K
реально ли этот https://pastebin.com/cdnmVzbi код в js скомпилить ?
DP
18:41
Dumitru Preguza
Там же import java.nio.ByteBuffer
LK
18:42
L K
да я и так вырезал самое нужное, не знаю как дальше быть
DP
18:43
Dumitru Preguza
Реализовать import java.nio.ByteBuffer из средств js
LK
18:43
L K
впринципе вариант последний этот и это будет ArrayBuffer с js, но по функционалу могут сильно отличаться
19 November 2018
AM
01:47
Andrew Mikhaylov
In reply to this message
IoBuffer из kotlinx-io, возможно, будет полезен.
https://ktor.io/kotlinx/io/io/iobuffer.html
LK
16:08
L K
Кто может скинуть дефолтный kotlinjs gradle конфиг
у меня сейчас так
buildscript {
ext.kotlin_version = '1.3.10'
repositories {
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}

apply plugin: 'kotlin2js'

repositories {
mavenCentral()
}

dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib-js:$kotlin_version"
}

compileKotlin2Js {
kotlinOptions.outputFile = "${projectDir}/web/lib/kotlin-js-example_main.js"
kotlinOptions.moduleKind = "amd"
kotlinOptions.sourceMap = true
}
и ошибка Error running 'example.MainKt': No JDK specified
но если в градле выполнить build таск то в js компилится
RI
16:09
Ruslan Ibragimov
Так а ошибка откуда? Наверно в Project Settings не выбрана JDK
LK
16:10
L K
In reply to this message
да фиг знает, js бандл появляется
выбрано
RI
16:11
Ruslan Ibragimov
16:11
Вот тут скорее всего JDK нету
16:11
16:12
или тут
LK
16:12
L K
RI
16:13
Ruslan Ibragimov
In reply to this message
Я хотел узнать где ошибка появляется)
LK
16:15
L K
16:15
ща про ошибку
16:16
16:16
все что есть
RI
16:18
Ruslan Ibragimov
Так это Event log
16:20
Туда сыпется из-за разных причин сообщения. После какого действия там появляется этот error?
16:21
Что-то не работает?
LK
18:12
L K
In reply to this message
я взял рабочий проект и пытаюсь туда подключить kotlin2js
вот конфиг gradle - https://pastebin.com/Nw6dz7bC
ошибка
A problem occurred evaluating root project 'ithink'.
> Failed to apply plugin [id 'kotlin2js']
> Cannot add extension with name 'kotlin', as there is an extension already registered with that name.
RI
18:12
Ruslan Ibragimov
plugins {
id "org.jetbrains.kotlin.jvm" version "1.3.10"
}
18:12
два плагина в одном модуле
18:13
они конфликтуют, нужно разнести их в разные модули
LK
18:16
L K
In reply to this message
а где еще 2 jvm плагин ?
RI
18:18
Ruslan Ibragimov
В одном модуле должно быть

apply plugin: "kotlin2js"


а в другом

apply plugin: "kotlin"


java плагин уже включен в состав kotlin плагина, его можно удалить

-apply plugin: "java"


а вот это:

plugins {
id "org.jetbrains.kotlin.jvm" version "1.3.10"
}


эквивалентно

apply plugin: "kotlin"
18:19
gradle это не то место куда можно накопипастить кучу всего и оно магически заведется
LK
18:20
L K
In reply to this message
вау, спасибо, объяснили
RI
18:20
Ruslan Ibragimov
Вот тут про модули (проекты, project) можно почитать:

https://docs.gradle.org/current/userguide/multi_project_builds.html
20 November 2018
DP
19:47
Dumitru Preguza
но идея хитрая, пишешь себе часть кода на JVM часть на JS в том же файле (либо модуле) :)
26 November 2018
Dmitry invited Dmitry
Dmitry invited Dmitry
6 December 2018
Kirill Ozeretskovsky invited Kirill Ozeretskovsky
Set Set invited Set Set
Дмитрий invited Дмитрий
Д
11:23
Дмитрий
всем привет, поделителсь впечатлениями от kotlin js ? Насколько много боли, граблей, насколько удобно, какие ограничения встречали? Попросили небольшой веб проект сделать, думаю на тему того, чтобы его полностью сделать на котлине, но не уверен на тему ui части
Наталья Ахременко (Алтайский край 22 рег) invited Наталья Ахременко (Алтайский край 22 рег)
VN
12:09
Vladislav Navrocky
In reply to this message
Смотря что будешь использовать в качестве JS фреймворка
12:10
Под React, Bootstrap есть биндинги от Jetbrains
Д
12:10
Дмитрий
In reply to this message
а много вариантов? Я слышал только про реакт на котлине
VN
12:10
Vladislav Navrocky
под все остальное вроде бы нет
12:11
Если через create-react-kotlin-app будешь делать сборку, то в целом все просто заводится, но не работают юнит-тесты и медленно компилится по сравнению с create-react-app
12:12
Если проект будет на gradle, то там с конфигурированием сложно, есть много рецептов, все разные, надо будет много перебрать
Д
12:13
Дмитрий
вообщем боль есть) понятно спасибо
VN
12:13
Vladislav Navrocky
да, не всё гладко
12:14
Меня остановило отсутствие тестов, жду когда поддержку jest туда запилят =)
Д
12:15
Дмитрий
а где-то анансированно что над этим работают?)
VN
12:15
Vladislav Navrocky
Ну в доке написано, что *пока* не реализовано. Значит в планах есть :3
Д
12:25
Дмитрий
In reply to this message
ещё раз благодарю
AE
13:39
Alexandr Emelyanov
In reply to this message
работы пока приостанавливали, обещали после релиза 1.3 снова начать, пока не слышно
Vitaliy invited Vitaliy
🅰ртем Вилков ☭ invited 🅰ртем Вилков ☭
Konstantin invited Konstantin
7 December 2018
Eugene Zarucheisky invited Eugene Zarucheisky
SR
10:51
Sergey Rostov
In reply to this message
Тесты работают в гредловых проектах, в том числе с поддержкой в ide (правда только в ultimate). Еще в create-react-kotlin-app к сожалению не поддерживается инкрементальная компиляция и демон, поэтому проекты созданные этим способом будут собираться значительно медленее гредловых. Для гредловго проекто можно использовать вот этот шаблон: https://github.com/snrostov/gradle-kotlin-react-app
AE
10:52
Alexandr Emelyanov
In reply to this message
меня к сожалению реакт ни капельки не интересует(
VN
10:52
Vladislav Navrocky
демон не поддерживается, насколько я понимаю, потому что там грэдла нет, там же вебпаком собирается?
SR
10:52
Sergey Rostov
p.s. в спб планируется митап в декабре, если интересна тема с реактом, можем рассказать
AE
10:52
Alexandr Emelyanov
мне больше интересна интеграция с ts и angular...
SR
10:52
Sergey Rostov
In reply to this message
ну просто ты отвечал на сообщение со скриншотом про limitions create-react-kotlin-app
10:53
вне него тесты js поддерживаются
10:53
In reply to this message
да, там вебпак просто дергает cli компилятор
Д
10:53
Дмитрий
Вчера у меня даже официальный пример от jb full stack sample не завелся
VN
10:53
Vladislav Navrocky
да, но зачем тут демон и как он ускорит
AE
10:53
Alexandr Emelyanov
In reply to this message
да я впринципе про весь k/js говорил, что не так активно было
SR
10:54
Sergey Rostov
демон нивелирует медленный прогрев jvm. компилятор котлина большой, поэтому время на загрузку и компиляцию классов котлина тратится не мало. демон решает эту проблему тем что jvm с компиляторм переиспользуется
10:55
In reply to this message
есть ссылка?
SR
10:56
Sergey Rostov
In reply to this message
про это тоже можно рассказать. спб?
10:56
In reply to this message
спасибо
AE
10:58
Alexandr Emelyanov
In reply to this message
не, я в Челябе. но если будет запись - с удовольствием потом посмотрю
Sergey Rostov invited Sergey Ryabov
10 December 2018
Евгений Бурлаков invited Евгений Бурлаков
11 December 2018
( invited (
(
14:47
(
@lllewik какие есть подводные камни при юзании котла с вью.джс?
LS
14:47
Lev Shagalov
Про vue и koltin
Готовой либы нет ( я не нашел, https://github.com/nosix/vue-kotlin заброшена по словам самого автора).

Как подружить:
1. Пилить экстеншены. Я сначала хотел сразу и все описать, но потом понял, что проще по мере необходимости. Экстешенов мало.
2. Я пытался запилить поуниверсальней - но не получается. Любой код который что то берет из стейта должен знать интерфейс стейта. А значит твои экшены и мутации будут залочены на твой стейт. Ты не используешь их с другим стейтом (может быть тебе это и не надо).
3. В качестве имени для мутаций и экшенов я бы советовал использовать полное имя класса, тогда можно написать простой inline reified для бросания мутаций и экшенов без указания их имени.
4. В текущей версии Vue реактивность принудительно вешается на все, что кладется в стейт. Котлиновские мапы и списки содержат в себе кучу переменных, к которым будет прикручена реактивность и это будет очень мешать. Я бы советовал убедиться, вызывает ли это тормоза в вашем случае. Если вызывает, то надо вынести состояние в отдельный объект (я вынес в мапу). А в vue-state хранить ключи по которым можно достать тот или иной кусок вынесенного состояния. Ну и в коде обращаться к вынесенному состоянию через ключ, полученный из vue-state. Или применять другие подходы, Object.freeze там вроде есть, тогда реактивность не добавляется. Я надеюсь проблему описал нормально.
5. .vue файлы (однофайловые компоненты) не будут доступны с kotlin. Т.к. нет пофайловой компиляции. Или вы будете вызывать js (скомпилированный из котлин) из .vue файла. (Но, тогда это не однофайловый компонент))) Или используйте апиишный способ определения компонентов. Можно упороться и вообще все писать на котлине включая html и css. Но это перебор помоему)))
Тимур Бухараев invited Тимур Бухараев
ТБ
14:58
Тимур Бухараев
немного был занят, не успел задать вопрос, спасибо за ответ )
15:00
еще такой нубский вопрос
допустим хочется пилить фронтэнд с использованием kotlin js
какой фреймворк лучше всего сочетается и наиболее проработана связка с kotlin js на текущий момент?
если допустим выбирать из тройки angular, react, vue
15:00
их друг с другом сами по себе сравнивать не надо, только аспект взаимодействия с kotlin js
AE
15:01
Alexandr Emelyanov
лучше всего вроде react, хуже vue
15:02
про angular лучше молчать, пока нет поддержки нормально ts биндингов
15:07
но честно говоря по опыту фронт разработки - взял бы angular
ТБ
15:07
Тимур Бухараев
сам по себе?
AE
15:07
Alexandr Emelyanov
да
15:07
ну мне идеология и апи больше нравятся
15:07
кому то нравится реакт
15:08
но тут еще от задачи стоит отталкиваться
ТБ
15:08
Тимур Бухараев
ну мне интересно пощупать конкретно kotlin js
а выбор между фреймворками вторичен
AE
15:08
Alexandr Emelyanov
бери vue/react
15:08
не, jquery тогда лучше :)
15:08
лан, шучу)
ТБ
15:09
Тимур Бухараев
я сейчас в основном колеблюсь между vue и react
KM
15:09
Kárin-Aleksandra Monoid
In reply to this message
Бери реакт. Меньше геморроя и больше инфы
ТБ
15:09
Тимур Бухараев
но хочется поменьше боли и всяких детских болячек от того, что оно с Kotlin js как то не сочетается
KM
15:10
Kárin-Aleksandra Monoid
Если выбор из двух стульев именно такой
AE
15:11
Alexandr Emelyanov
да, лучше react, у него поддержка лучше и примеров больше
15:11
но я бы выбрал vue, т.к. его модель мне ближе, он почти как angular
15:12
между прочим vue написал чувак, который писал angular изначально)
ТБ
15:12
Тимур Бухараев
даже с учетом взаимодействия с kotlin js?
KM
15:12
Kárin-Aleksandra Monoid
In reply to this message
С чистым жс норм план, с котлином я бы не брала. Погрязнешь в бойлерплейте
15:12
Да и вся элегантность vue теряется
AE
15:12
Alexandr Emelyanov
In reply to this message
да
15:13
In reply to this message
про чистый vue или vuex?
LS
15:13
Lev Shagalov
Vue js очень простой. Достаточно прочитать доки и все. Поэтому даже без поддержки со стороны JB писать экстеншены для Vue крайне просто. (vue + vuex)
15:14
И я совсем забыл добавить: .vue файлы (однофайловые компоненты) не будут доступны с kotlin. Т.к. нет пофайловой компиляции. Или вы будете вызывать js (скомпилированный из котлин) из .vue файла. (Но, тогда это не однофайловый компонент))) Или используйте апиишный способ определения компонентов.

@Dobriy_Eeh
AE
15:15
Alexandr Emelyanov
ух
KM
15:15
Kárin-Aleksandra Monoid
In reply to this message
Ну, если честно, я их всегда в связке рассматриваю. Но и в чистом виде лёгкость и читабельность потеряется. Ну и single file component'ы страдают
AE
15:16
Alexandr Emelyanov
подожду ка я интероп с ts и буду ковырять angular
LS
15:16
Lev Shagalov
Можно упороться и вообще все писать на котлине включая html и css. Но это перебор помоему)))
AE
15:17
Alexandr Emelyanov
это выльется в очередной фреймворк
15:17
без перспектив)
LS
15:17
Lev Shagalov
Для html и css уже есть билдеры
15:18
vue с котлином выливается в несколько костылей, не особо больших
ТБ
15:18
Тимур Бухараев
ну хотелось бы работать на более менее общепринятых технологиях
только код клиентской логики писать не на js, а на котлине
AE
15:18
Alexandr Emelyanov
In reply to this message
чего чего, а я за html шаблоны, а не код
KM
15:19
Kárin-Aleksandra Monoid
In reply to this message
Почему не тайпскрипт? Или проект планируется пилить в одиночку?
ТБ
15:19
Тимур Бухараев
потому что весь остальной проект на котлине уже
LS
15:19
Lev Shagalov
In reply to this message
Котлин можно назвать с натяжкой общепринятым для андроида. Все равно еще очень много явы (тут я точно не знаю, чисто субьективно)

Но вот котлин на бекенде и уж тем более на фронте... еще и с реактом/vue... это точно не мейнстрим.
15:20
Еще и с сериализацией котлиновской.... )))
KM
15:20
Kárin-Aleksandra Monoid
In reply to this message
Не думаю, что это хороший аргумент, если честно. Подводных камней жс хватает, что сэкономленное на строгой типизации время может потратиться на кучу мелких неочевидных кейсов
AE
15:21
Alexandr Emelyanov
In reply to this message
я бы пошарил модельки и какую-то бизнес логику в либу и дергал из js/ts
15:21
для ts это вариант, для angular
(
15:21
(
In reply to this message
Мы упоролись и в маленьком проекте написали либу на котлине, которую зашарили на клиенте-жабоскрипте и на беке-спринге
15:22
Получилось ничего так, не пришлось дублировать модельки, но в конце концов там были только датаклассы
AE
15:22
Alexandr Emelyanov
ну и связывать потом все на радном для фреймворка языке
15:23
In reply to this message
а клиент на чем?
(
15:23
(
In reply to this message
на вью
AE
15:24
Alexandr Emelyanov
а бэк на чем?
(
15:24
(
Написал же все, бек на спринге
AL
15:24
Alexander Levin
In reply to this message
Есть ли переиспользуемый код? Если нет, то от Котлина на фронте не так много толку (удобнее stdlib, единообразие)

Даже если есть, все равно стоит подумать о том, чтобы на Котлине написать только этот общий код.


Typescript сейчас намного удобнее в вопросах js. Так что если код скорее про js, а не про кучу бизнес логики - пока логичнее брать его.
AE
15:24
Alexandr Emelyanov
In reply to this message
а, точно
ТБ
15:26
Тимур Бухараев
In reply to this message
проект не сильно большой
бекенд на котлине уже целиком, в принципе получилось хорошо, ощущения сугубо положительные
поэтому выглядит логичным и на фронтенде его использовать

есть конечно риск как и с любым чем то новым, но поскольку проект небольшой, то считаю его оправданным, чтобы использовать его как неплохую возможность пощупать руками kotlin js на практике, а не просто hello world написать
15:27
In reply to this message
хочется переиспользовать API к бекенду ну и какие-то структуры данных, которые гоняются между фронтом и юекендом
15:28
возможно какую то логику еще
I
15:28
Igor
In reply to this message
А что такое “строгая” типизация?
LS
15:28
Lev Shagalov
У меня на котлине полностью все - и бэк и фронт. Проект большой. Котлин js в начале было больно, очень. @littlejellycat не даст соврать. Но, пару раз выручало капитально, когда сложную логику надо было шарить. А ну и да... сериализация конечно не идеальна, но это ооооочень удобно, когда объекты одинаковые, надо просто добавить @Serializable и пользоваться по аккуратней
ТБ
15:29
Тимур Бухараев
допустим функция могу ли я вот это купить
чтобы ее вызвать сначала на фронте проверить, а потом тоже самое на сервере и еще раз проверить
15:29
какой то шарин г кода хочется, да
AE
15:29
Alexandr Emelyanov
In reply to this message
модельки да, а вот по апи к бэкенду - тебе придется делать абстрации асинхронными, т.к. на фронте нет синхронных либ для дергания апи, а тут привет корутины в common)
(
15:29
(
Котлиновская сериализация кста сейчас очень больно
15:29
Ооочень
LS
15:29
Lev Shagalov
нормально
(
15:29
(
И я до сих пор не уверен, она сериализует листы?
LS
15:30
Lev Shagalov
Сериализовала и сериализует
15:30
Что вы хотите от либы которая только из беты вышла?
(
15:30
(
В доке написано, что она в массивы не умеет
LS
15:30
Lev Shagalov
хз. Я массивы постоянно таскаю
(
15:30
(
Хотелось бы, чтобы она не ломала проект, когда внезапно встречает инлайны
15:31
Во, нашёл проблему, которая у меня была
15:32
Как вы с датой работаете?
ТБ
15:35
Тимур Бухараев
In reply to this message
а фреймворк у вас какой на этом проекте?
LS
15:40
Lev Shagalov
In reply to this message
Оооо... да...

@lex_it прием )))

На бекенде явовская дата.
На фронте yoda time (порт явовской даты на js)
На kotlin common написаны expected, которые резолвятся в платформенные реализации.
Политическое решение хранить дату в Instant.
На бэкенде спринг (@Dobriy_Eeh) и помоему при сохранении в монгу он сам конвертит Instant в свою нативную дату (для него то это будет Instant jvm). Ну или я где то написал конвертер. Короче в итоге даже сортировка в базе работает если надо.

Если требуется че то серьезное с датой делать - конвертю в ZonedDateTime
ТБ
15:41
Тимур Бухараев
@lllewik
я имею в виду на фронтенде вы в итоге что используете вместе с kotlin js?
vue?
(
15:43
(
А написать свою мультиплатформенную дату думали? Потому что я до сих пор сейчас над этим потею и что-то не хочется костылить с actual-expected, потому что у меня либа
15:43
Попробовал затянуть klock, но оказалось, что он на инлайнах, поэтому тоже не вариант
LS
15:47
Lev Shagalov
In reply to this message
Vue. Я выше остаил здоровый пост об этом.
15:48
In reply to this message
Думали. Количество кода видели?

Имхо лучше actual expected. Тогда на бекенде все сторонее будет нормально работать.
ТБ
15:50
Тимур Бухараев
In reply to this message
да, спасибо большое за пост, я там не все еще понял, но прочитал очень внимательно
но вдруг вы писали по результатам предварительных исследований, а потом решили отказаться от vue и делать на чем то еще
поэтому решил уточнить что в итоге было выбрано
(
15:51
(
In reply to this message
Я попробую тогда в свободное время написать нормальную мультиплатформенную дату
LS
15:55
Lev Shagalov
In reply to this message
Не, я не отказался. Все на котлине. И фронт и бек. Основная бизнеслогика на common, заодно от фреймворков не зависит.
15:56
In reply to this message
Жили были 9 протоколов. И тут Вася решил сделать один универсальный...
АО
15:58
Алексей Овсянников
In reply to this message
(
16:00
(
In reply to this message
Так нету мультиплатформенной либы в мире
16:00
Опять же, есть клок, но он на инлайнах и оттого неоч
16:00
Да и не документированный
16:01
Ну, типа, если есть, то я был бы рад посмотреть
LS
16:04
Lev Shagalov
Да что там с инлайнами то?
(
16:05
(
да не сериализуются они
LS
16:11
Lev Shagalov
... я че то пропустил? Что за инлайны которые надо сериализовать?
(
16:13
(
У них главный класс, который репрезентит собственно таймштамп - DateTime - инлайновый, поэтому (хотя не совсем поэтому) его нельзя сериализовывать
16:13
Даже если бахнуть собственный сериализатор
AE
16:48
Alexandr Emelyanov
In reply to this message
Я пока не допилил(
Mikhail Mangushev invited Mikhail Mangushev
LS
19:52
Lev Shagalov
In reply to this message
А накой они инлайновые?
(
19:54
(
In reply to this message
А кто его знает?
AE
20:26
Alexandr Emelyanov
In reply to this message
Я в процессе порта jsr310, на фронте это jsjoda. Останется нэйтив)
20:27
In reply to this message
А в чем проблема? Делается сериализатор/десериализатор в/из строки
(
20:32
(
In reply to this message
Ошибка компиляции inline class DateTime cannot be serialized. Я честно говоря до сих пор не понимаю, в чем ее причина, потому что мои собственные инлайны вполне адекватно десериализуются
AE
20:47
Alexandr Emelyanov
In reply to this message
Хм.
12 December 2018
AV
06:04
Anton Vlasov
In reply to this message
ну так сделать форк, убрать inline и все также будет работать, если есть необходимость именно сериализации.
Inline класс как я понял, там исключительно для того, чтобы в рантайме там Double был
SR
11:07
Sergey Rostov
In reply to this message
Можете завести issue в youtrack?
(
11:08
(
In reply to this message
Хорошо, часа через два где-то напишу
(
15:24
(
Только что узнал, что зря грешил на клок
15:24
Инлайны не дружат с сериализацией в принципе
15:26
Странно, а компиляция не ломалась
13 December 2018
BP
01:35
Bogdan Panchenko
А как в kotlin js c inline klass ? В jvm очень так себе
14 December 2018
Ольга Савельева invited Ольга Савельева
Alexander Khlopotov invited Alexander Khlopotov
17 December 2018
SR
01:03
Sergey Ryabov
Коллеги, если вы из Питера и вам интересно послушать и обсудить за Kotlin JS, то 17го декабря питерский KUG делает митап, посвященный этой теме. Событие и более подробная информация тут: https://www.meetup.com/ru-RU/St-Petersburg-Kotlin-User-Group/events/257186826
DT
10:51
Dmitrii Tukhvatullin
In reply to this message
Трансляция или запись будут?
SR
14:57
Sergey Ryabov
In reply to this message
Запись будет
Filipp Kolsanov invited Filipp Kolsanov
FK
20:27
Filipp Kolsanov
трансляция тоже есть
VA
20:35
Victor Alenkov
микрофон бы в зал
24 December 2018
AE
13:15
Alexandr Emelyanov
In reply to this message
видео удалено. будет перезалив?
RI
13:27
Ruslan Ibragimov
Да
27 December 2018
Azim Muradov invited Azim Muradov
4 January 2019
Ray invited Ray
8 January 2019
Deleted Account invited Deleted Account
Иван Головащенко invited Иван Головащенко
14:38
Deleted Account
Всем привет!
Где лучше всего подсмотреть build.gradle для kotlin-js frontend проекта?
Что бы тесты работали из идеи, всё собиралось, упаковывалось и открывалось в браузере.
Marat.k invited Marat.k
MO
14:55
Mar Ort
In reply to this message
cc: @snrostov
21:58
Deleted Account
In reply to this message
13 January 2019
Sergey invited Sergey
20 January 2019
Valentin invited Valentin
23 January 2019
Anton Shkurenko ⚜️ invited Anton Shkurenko ⚜️
AS
23:44
Anton Shkurenko ⚜️
Ребят, тут в соседнем чате спрашивал, можете подсказать:

Не могу найти аналог генераторов из джса (пытаюсь заюзать либу написанную на джсе, а она возвращает генератор, не хоечтся свое писать, по идее штука то встроена в язык):

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Generator
BP
23:56
Bogdan Panchenko
In reply to this message
Я не специалист но это скорей тип дайнемик
23:56
Читай про интертоп с джс
V
23:56
Valentin
корутины
23:57
sequence{yield(“Hi”)}
AS
23:57
Anton Shkurenko ⚜️
К Sequence, Iterable не кастится, я собственно то и сделал через дайнемик и проверки на value или done. Но чето хочется конечно forEach какой-то из котлина то 🙂
BP
23:58
Bogdan Panchenko
In reply to this message
Можно вропер сделать
AS
23:59
Anton Shkurenko ⚜️
Ну я собственно так и сделал, просто думал есть путь получше
23:59
Ну вообще спасибо :0
24 January 2019
V
00:00
Valentin
был еще produce
00:00
у него вроде есть итератор но я не юзал
00:01
да и у sequence есть итератор
BP
00:04
Bogdan Panchenko
Calling JavaScript from Kotlin - Kotlin Programming Language
https://kotlinlang.org/docs/reference/js-interop.html
00:05
In reply to this message
External и можно описать структуру в джс
AS
09:19
Anton Shkurenko ⚜️
In reply to this message
Имеешь в виду обернуть генератор джсный в джсный код и потом в котлин? Я через динамик напрямую сделал пока
BP
16:28
Bogdan Panchenko
In reply to this message
Не совсем, в котлине ты можешь задекларировать то что есть в джс, например в джс есть функция a(name). В котлине можно сделать external fun a(name: String): returnType. Ну и почитать про это или спросить знающих, я просто тыкал немного kotlinjs
16:29
Ты декларируешь функцию джс которая возращает генератор, ну и декларируешь сам декоратор. Примерно так
AS
16:30
Anton Shkurenko ⚜️
Ну я примерно так и сделал собственно, может описал неверно
BP
16:32
Bogdan Panchenko
In reply to this message
Я ссылку выше кидал
AS
16:53
Anton Shkurenko ⚜️
Да, я на нее и опирался 🙂
16:53
Там в доке по джсу не густо
28 January 2019
Yến invited Yến
29 January 2019
Dmitry Melnik invited Dmitry Melnik
𝕗𝟘𝕩 invited 𝕗𝟘𝕩
31 January 2019
Ivan invited Ivan
2 February 2019
Vladimir Romanov invited Vladimir Romanov
12 February 2019
AV
13:52
Anton Vlasov
In reply to this message
17 February 2019
Andrey invited Andrey
A
10:26
Andrey
Всем привет! Кто как использует kotlin-js? Есть ли у него своя ниша, или это пятая нога корове?
FK
11:11
Foat Karipov
Как минимум, одна ниша нашлась - я фуллстек разраб и мне нужен веб-клиент.
Kotlin/js + vue.js прекрасно зашли.
Но я не пробовал kotlin-react-wrapper (могу ошибаться в названии), возможно, там лучше
DP
12:18
Dumitru Preguza
упомяну про KVision
AM
13:29
Andrew Mikhaylov
In reply to this message
А есть где-то примерчик? Vue+ts видел, потому не особо себе представляю связку с котлином.
BV
16:01
Boris Vanin
Я с реактом использовал, сыро, но очень норм
AM
16:04
Andrew Mikhaylov
Ну с реактом я примеры видел, а у вуе таки природа чуть другая. На те же классы он в ts натягивается довольно интересным образом, скажем :)
16:05
Который повторить получилось бы с помощью плагина для компилятора почти наверняка, но пусть этим занимается кто-нибудь, кто в проде это применять планирует.
AE
22:00
Alexandr Emelyanov
У @lllewik большая система в проде на k/js + vue
LS
22:34
Lev Shagalov
Ась
22:39
@itpubbot Сам по себе kotlin js отличная вещь. А если и бекенд на котлине - ащще огонь. Мне все нравится. Бывают конечно косячки, но норм, не очень больно.
22:40
In reply to this message
Примерчик дать не могу. А так рассказать - можно.
A
23:51
Andrey
In reply to this message
Спасибо. Вот думаю попробовать. С чего посоветуете начать, если опыт в js фреймворках минимальный?
18 February 2019
LS
00:03
Lev Shagalov
In reply to this message
...с js фреймворков. Освойте vue (с) Кэп
FK
00:26
Filipp Kolsanov
In reply to this message
С учётом того что шаблоны Vue это валидный HTML можно попробовать напрямую использовать kotlinx.html
AM
00:28
Andrew Mikhaylov
Оно-то да, там интереснее как раз работа со стейтом -- методы, вычисляемые проперти, вот это всё.
00:30
@lllewik много рассказывать, мне кажется :) А конкретные вопросы я задавать не готов, давно я этим занимался, да и сейчас мне без особой надобности.
00:30
Так что если вдруг будете доклады куда-нибудь делать -- дайте знать, а так не хочется ваше время тратить :)
A
10:02
Andrey
In reply to this message
Vue нормальная вещь для старта?
AE
10:03
Alexandr Emelyanov
In reply to this message
вполне себе
10:03
In reply to this message
опять ночами не спишь)
LS
10:03
Lev Shagalov
In reply to this message
Ну если вы с js знакомы. То вполне можно наверно... А чего собственно ждать?
A
10:04
Andrey
In reply to this message
Спасибо, тогда с него и попробую начать
23 February 2019
Alexander Nozik invited Alexander Nozik
AN
10:34
Alexander Nozik
Товарщи, помогите мне пожалуйста со сборкой K-JS, я в нем ничего не понимаю. Мне надо раскочегарить вот эту штуку: https://github.com/markaren/three.kt или любую другую обертку для three.js. Я беру frontend плагин, дальше согласно инструкции все собираю, добавляю three в зависимости ноды, а выше указанную библиотеку как компайл-зависимость в градле. Все нормально выглядит в идее, но при запуске нода ругается error notarget No matching version found for wrapper@0.88.0-ALPHA-6. Этот момент не понял. Почему эта штука вдруг должна быть в ноде?
AN
11:53
Alexander Nozik
С этим разобрался. Теперь почему-то код не видит зависимость
12:06
С этим тоже разобрался вроде
AN
13:52
Alexander Nozik
Чего-то как-то все плохо. В упор не могу понять как kotlin-frontend сборка работает
RI
13:53
Ruslan Ibragimov
Ты именно фронтенд плагин используешь?
AN
13:53
Alexander Nozik
да
13:53
Просто я не понимаю, как сделать так чтобы модуль из ноды вмонтировался в бандл а потом импортировался где надо
RI
13:54
Ruslan Ibragimov
Ну вообще в JS как и в Kotlin есть модульная система
13:54
Несколько даже, это же JS
AN
13:55
Alexander Nozik
Я в курсе. Я не могу сказать, что я их понимаю, но по крайней мере копировть примеры умею. Просто в моем понимании, если я указываю зависимость в node{} она должна подкачаться и вмонтироваться в бандл. Похоже, что это не так
RI
13:56
Ruslan Ibragimov
Ну есть два подхода, просто указать что для работы моего модуля нужны другие модули, или все модули "заинлайнить" в бандл аля fat jar
AN
13:56
Alexander Nozik
Ну я хотел сделать второе. Нео не совсем понима, как
13:57
Если я указываю, что нужны, то я должен, как я понимаю, их сам в соурсы вклеить. Я же не на ноде все запускаю
RI
13:58
Ruslan Ibragimov
Второе делается через webpack
13:58
webpack как раз бандлер, который склеивает все
AN
13:58
Alexander Nozik
Ему что-то дополнительно говорить надо для этого?
13:58
Это понятно. Я просто не имею опыта работы с ним, поэтому видимо что-то делаю не так
RI
13:58
Ruslan Ibragimov
не уверен обязательно ли, но вот в конфиге указывается кое-какая конфигурация: https://github.com/Kotlin/kotlin-frontend-plugin/blob/master/examples/frontend-only/build.gradle#L41-L46
AN
13:59
Alexander Nozik
Это все указал.
RI
13:59
Ruslan Ibragimov
(потом может глянешь ради интереса): О, кстати есть у тебя только js можешь rollup использовать, он тупо проще
14:00
In reply to this message
И если запустить билд никаких бандлов в билде не появляется?
AN
14:00
Alexander Nozik
бандл есть, но там только мои библиотеки, нету нодовских
RI
14:00
Ruslan Ibragimov
например?
AN
14:01
Alexander Nozik
котлин стдлиб, мой маленький код и либа, которую я использую...
14:02
Может я чего-то неправильно внутри подключаю и dce все вырезает. Сейчас отключу его
RI
14:03
Ruslan Ibragimov
котлин, твой код и либа есть, а чего нету?
AN
14:03
Alexander Nozik
Нету модуля из ноды, который нужен для работы либы.
RI
14:03
Ruslan Ibragimov
а
14:03
это как с application server
14:03
этот модуль нодой на рантайме подставляется
AN
14:04
Alexander Nozik
Ы. А как мне сделать чтобы оно само подгрузилось и не надо было его руками вставлять в исходники?
RI
14:04
Ruslan Ibragimov
у тебя какой таргет, нода? или еще браузер?
AN
14:04
Alexander Nozik
браузер
RI
14:05
Ruslan Ibragimov
тогда ты не должен нодовские модули использовать :)
AN
14:05
Alexander Nozik
нода вообще не особо нужна.
RI
14:05
Ruslan Ibragimov
In reply to this message
ну это простой выход
14:05
может скажешь в каком месте проблема, подскажу как решать
AN
14:05
Alexander Nozik
грусть. То есть надо все зависимости руками подтягивать и записывать в соурсы?
RI
14:06
Ruslan Ibragimov
ну просто в ноде есть условно "fs" модуль, он в браузере не имеет смысла
AN
14:06
Alexander Nozik
Я просто думал, что можно из нодовских модулей что-то вытащить перед сборкой, сделать бандл и забыть про нее.
RI
14:07
Ruslan Ibragimov
так а какой модуль нужен?
AN
14:07
Alexander Nozik
например вот этот: https://www.npmjs.com/package/three-orbitcontrols
RI
14:07
Ruslan Ibragimov
а
14:07
так это не нодовский модуль)
14:08
блин, проблемы с терминологией
AN
14:08
Alexander Nozik
нпмовский. Наверное с терминологией напутал
14:08
Я же говорю, нуб в этом вопросе
RI
14:08
Ruslan Ibragimov
да, из npm должно все без проблем бандлиться
AN
14:08
Alexander Nozik
как?
RI
14:08
Ruslan Ibragimov
сделать import где-то в коде
AN
14:09
Alexander Nozik
import чего? Можно пример?
RI
14:09
Ruslan Ibragimov
В простейшем случае, если нужен как ты говоришь один файл то это require
AN
14:10
Alexander Nozik
это я пробовал. Ноль реакции. Сейчас еще раз попробую
RI
14:10
Ruslan Ibragimov
require("three-orbitcontrols/file")
AN
14:10
Alexander Nozik
а что /file oзначает?
RI
14:10
Ruslan Ibragimov
есть же такая функция?
AN
14:11
Alexander Nozik
есть. Она в стандартном бойлерплейте от frontend прилагается
RI
14:11
Ruslan Ibragimov
In reply to this message
это значит пойди в папку node_modules/three-orbitcontrols
AN
14:11
Alexander Nozik
щас попробую
RI
14:11
Ruslan Ibragimov
и загрузи file
14:12
а фактически это может быть file.js, file.ts или file/index.js
14:12
зависит от конфигурации webpack
14:15
In reply to this message
да, и отключи dce пока
AN
14:20
Alexander Nozik
О, вроде появилось в бандле. dce его правда вырезает
RI
14:21
Ruslan Ibragimov
Еще же есть @file:JsModule("three-orbitcontrols")
AN
14:21
Alexander Nozik
да, я его попрбовал навесить в библиотеке, которую я использую, но вот это похоже игнорится.
RI
14:21
Ruslan Ibragimov
если объявлять типы как я понимаю, может тогда будут простые котлиновские импорты и dce не будет вырезать
Vasiliy Chernov invited Vasiliy Chernov
AN
14:30
Alexander Nozik
@chernov_vg ты про вот эту строчку говорил? (module.exports, require('kotlin'), require('wrapper'), require('three-orbitcontrols')));
VC
14:52
Vasiliy Chernov
Да, про нее
AN
14:53
Alexander Nozik
In reply to this message
Ну в общем, я не понял какой магией эти JSModule подключаются, потому что что-то подключается, что-то нет. И все равно часть кода не видна. Чувствуется, напишу прототип на JavaFX , а потом ты всю JS часть делать будешь
VC
14:57
Vasiliy Chernov
In reply to this message
Хорошо. Думаю надо будет сгенерировать бинды через ts2kt и допилить их вручную
AN
14:58
Alexander Nozik
Я пробовал, там Ts2Kt полную бурду генерит. Половиины классов вообще нет
14:58
Проще взять то, что чувак написал, и обновить до последней версии
14:59
Ладно, пойдем уже к нам в чат, нечего людей грузить.
15:00
Я таки запустил пример, но только путем переписывания всех JS в сорсы. Вся эта автоматика так и не заработала
15:01
К котлиновской части и идее притензий нет, но эта JS-ная сборка - это кошмар какой-то.
RI
15:03
Ruslan Ibragimov
Приходится с js интегрироваться, а js без typescript это мрак
AN
15:05
Alexander Nozik
Ну интегрироваться вроде как можно, но вот сборка бандла - это какой-то темный лес. Может для людей, которые тут работают что-то более очевидно, но я так и не осилил чего-то.
RI
15:08
Ruslan Ibragimov
In reply to this message
Ну webpack сам по себе достаточно понятый по своей идеи инструмент. он парсит исходники, ищет иморты и загружает их по правилам которые ему можно задавать.
15:09
Скорее всего должно работать так:

bundle=Webpack(DCE(Твой код + Kotlin Std) + NPM)
AN
15:09
Alexander Nozik
Я правильно понимаю, что в K-JS импорты задаются через @ImportModule?
15:09
У меня есть подозрение, что этот @ImportModule не работает транзитивно для зависимостей
RI
15:10
Ruslan Ibragimov
In reply to this message
Не видел такой аннотации, вроде JsModule это делает
AN
15:10
Alexander Nozik
да, точно
15:10
оно
RI
15:11
Ruslan Ibragimov
DCE вроде экспереминтальный, поэтому логично что в нем могут быть косяки
15:12
Особенно с желанием команды перейти на модель "закрытого мира"
15:12
@romanarte а для DCE нету аннотаций специальных, типо @DceKeep?
AN
15:13
Alexander Nozik
Ну как я понял, оно ломается еще на этапе вебпака, поскольку модуль просто не импортится. Но я могу ошибаться
15:14
Ближе к вечеру еще потыкаю. Сейчас надо отдохнуть от этих ужасов.
MO
15:15
Mar Ort
In reply to this message
Если я ничего не путаю, то можно указать декларации, которые нельзя удалять
RI
15:15
Ruslan Ibragimov
Ну в плагине да, но это не очень удобно там делать
MO
15:16
Mar Ort
Я немного не в контексте, можете в кратце рассказать, в чем проблема?
15:17
In reply to this message
Так скорее всего не поможет, тк аннотации стераются
RI
15:18
Ruslan Ibragimov
А, ну да, логично
15:18
Проблема как я понимаю с импортом NPM модуля
MO
15:18
Mar Ort
Там есть баг на пересечении dce и вебпака
RI
15:18
Ruslan Ibragimov
И есть предположение что DCE вырезает импорты
MO
15:18
Mar Ort
Какие у вас удаляются декларации?
15:19
Это что-то из kotlin.js?
RI
15:20
Ruslan Ibragimov
In reply to this message
вот
15:20
внешний импорт в своем коде
AN
15:20
Alexander Nozik
Есть либа на голом K-JS. Они хочет JS код. Я хочу этот код ей скармливать не руками, а через вебпак--бандл.
MO
15:23
Mar Ort
In reply to this message
@snrostov думаю нам нужна твоя помощь
AN
15:24
Alexander Nozik
Так, констатирую. испортов после компиляции либы в Js файле нет
MO
15:25
Mar Ort
In reply to this message
А в какой типа модуля компилируется? В commonjs?
AN
15:25
Alexander Nozik
umd
15:25
Руками в исходник вставил
@file:JsModule("three")
@file:JsNonModule
15:26
но в результном js нет ни импортов, ни require
MO
15:26
Mar Ort
В если в commonjs попробовать, тоже не работает?
AN
15:26
Alexander Nozik
щас
15:26
у автора было umd. Я просто склонил и играюсь, если что
15:29
все равно нет. Есть один require на котлин
15:29
щас клин билд сделаю на всякий случай
15:31
Нету. Я так понял, что импорты не пишутся, если они нигде не используются
15:32
Там кстати вообще какой-то мизерный js генерится. В нем вообще почти ничего нет.
15:35
О, а в экзамле, который использует модуль и сидит в том же проекте, генерятся правильные зависимости
MO
15:59
Mar Ort
In reply to this message
А без dce оно работает?
AN
16:02
Alexander Nozik
Нет
16:02
В библиотеке dce вообще не подключен. Я использовал composite build, может с этим проблемы
MO
16:18
Mar Ort
In reply to this message
Возможно, но я тут мало чем смогу помочь к сожалению, надо подождать Серёжу @snrostov
AN
16:19
Alexander Nozik
Я еще поковыряюсь. Может я что-то не правильно делаю.
AN
16:38
Alexander Nozik
Так, я вроде победил. Понавесил в клоне либы, которую я использую аннотации @JsModule не на файлы, а на те классы, которые используются. После этого по крайней мере в js коде все появилось, что надо. Сейчас попробую все это собрать
16:39
Хотя теперь оно импортится несколько раз: require('three'), require('three-orbitcontrols'), require('wrapper'), require('three'), require('three-orbitcontrols')
MO
16:40
Mar Ort
In reply to this message
Отлично, есть вероятность, что баг с файловыми аннотациями, возможно стоит зарепортить
AN
16:41
Alexander Nozik
Ну я пока сам не очень понимаю, что происходит.
16:53
Все равно очень странно работает. Мне пришлось навешать аннотации абсолютно на все классы, которые используются из этого пакета. После этого, он нагенерил много дублирующегося мусора в JS и все равно выдает ошибку: Uncaught TypeError: $module$three is not a constructor
16:54
Но бандл генерится со всеми вставками
AN
17:18
Alexander Nozik
Так. Вести с полей. @JsBundle навешанный на класс подменяет в сгенерированном JS файле высе вызовы этого класса на $bundle$<имя>, что очевидно ломает весь код. Обход этой проблемы, навесить аннотацию на объект или файл, который импортится. Правда все равно какие-то ошибки лезут
MO
17:20
Mar Ort
In reply to this message
Если есть гитхаб с этой проблемой, мы можем посмотреть, и возможно поправить нашу документацию по итогам
AN
17:21
Alexander Nozik
Хорошо. Сейчас закину
MO
17:21
Mar Ort
Спасибо
17:21
Такой вопрос, это может потерпеть пару дней?
AN
17:21
Alexander Nozik
да, конечно.
17:22
У нас проект на несколько месяцев, я пока только первичный тык делаю. Кроме того, с прямой записью jsфайлов в директорию все работает
MO
17:22
Mar Ort
Отлично, тогда постараемся в начале недели следующей дать решение
AN
17:40
Alexander Nozik
Вот я все слил в один проект: https://github.com/altavir/three.kt Он правда после этого совсем перестал работать. Но у меня уже нет времени сегодня разбираться почему. ТАм есть модуль frontend-demo, который я пытался заставить работать
MO
17:41
Mar Ort
In reply to this message
Спасибо, будем разбираться
AN
17:41
Alexander Nozik
Вероятно, я сам что-то сделал не так. Но вообе нужна бы инструкция.
MO
17:46
Mar Ort
In reply to this message
Такое тоже возможно 🙂 Но из этого как минимум следует, что наша документация недостаточно ясна, а значит ее нужно править
AN
17:46
Alexander Nozik
Я просто сталкивался с этим год назад. Тогда тоже не победил, но проект таки запустил, просто подгрузив зависимость с cdn. Сейчас задача более масштабная
MO
17:47
Mar Ort
В этот раз все должно получиться
AN
17:48
Alexander Nozik
Уж хотелось бы. У нас два масштабных проекта на это дело завязаны. Хотелось бы делать это все на kotlin, а не на TS
17:49
Проекты кстати опенсорсные будут - визуализация детекторов и событий для экспериментальных установок в физике частиц
MO
17:49
Mar Ort
In reply to this message
Нам бы тоже так хотелось 🙂
17:49
In reply to this message
Это для какого-то института физического?
AN
17:52
Alexander Nozik
Мы сами по себе физический институт, точнее сотрудики (МФТИ и ИЯИ РАН). А эксперименты - это BM@N на NICA: http://nica.jinr.ru/ru/projects/bman.php и IAXO: http://iaxo.web.cern.ch/ Я думаю, может получиться хорошая реклама для kotlin
MO
17:55
Mar Ort
Это очень круто звучит
SR
19:35
Sergey Rostov
@noraltavir webpack, вроде, из коробки не может работать с umd. попрбуйте собрать с commonjs (поставить kotlinOptions.moduleKind = "commonjs" в build.gradle)
AN
19:36
Alexander Nozik
В обоих модулях? В приложении уже пробовал
SR
19:36
Sergey Rostov
я попрбовал поставить в frontend-demo. в build/bundle/main.bundle.js three.js встроился
AN
19:37
Alexander Nozik
В бандл и у меня встроился. Он теперь не видет ннймспейс THREE
19:38
Сейчас правда оно у меня вообще падает с Directory 'D:\Work\Projects\three.kt\frontend-demo\webpack.config.d' specified for property '$1' does not exist. хотя директория явно есть. Может точка в имени директории его смущает
19:38
До этого было наоборот. Видел неймспейс, но не видел модуль
SR
19:41
Sergey Rostov
а что нужно запускать? есть какой то html-ник который подключает bundle?
AN
19:42
Alexander Nozik
Есть, там у frontend есть таск run. Его и запускаю обычно
SR
19:57
Sergey Rostov
ага, вижу
у вас ошибка во всех файла враппера (я все обсуждение не читал, возможно выше уже писали)
вам нужно
@file:JsQualifier("THREE")

заменить на

@file:JsModule("THREE")
@file:JsNonModule
19:57
проверил для Scene, заработало
19:57
AN
19:58
Alexander Nozik
Это было не у меня, а у автора либы. В любом случе не понятно, почему оно так
19:58
Из документации вообще не понятна разница между JsQulified и JsModule
SR
19:59
Sergey Rostov
JsQualifier нужен для вложенных пакетов
и его все равно нужно использовать только в комбинации с JsModule
http://kotlinlang.org/docs/reference/js-modules.html
AN
19:59
Alexander Nozik
Это я читал несколько раз. В данно случае JsQualifier нужен или нет?
SR
19:59
Sergey Rostov
19:59
нет, не нужен
19:59
если бы нужно было импортировать THREE.x.y.z, то стал бы нужен
20:00
In reply to this message
а кто автор либы, есть ссылка?
AN
20:00
Alexander Nozik
Хорошо. Попробую. Как только победю проблему с webpack.config.d. Директория есть, но он почему-то ее не видит. До слияния проетов видел
20:01
In reply to this message
Он ее к сожалению не поддерживает больше
SR
20:01
Sergey Rostov
In reply to this message
какая версия гредла?
у вас, кстате, директория gradle не закомичена. там должен быть gradle wrapper
20:01
gradlew.sh есть, а директории gradle - нет
AN
20:01
Alexander Nozik
5.2.1 должна быть.
20:02
Я переделывал его структуру и чистил код, наверное враппер снес за компанию. Сейчас добьюсь пускабельности и починю
SR
20:03
Sergey Rostov
а у вас ошибка прямо в том репозе что вы выолжили? я его запускаю и у меня такой ошибки нет. но на что то похоже точно был issue в github. я правда, не смотрел подробно. если есть способ воспроизвести, очень бы пригодилось
AN
20:04
Alexander Nozik
Я думаю, что чего-то с виндой не дружит. Issue был по поводу того, что эта директория вообще не нужна
AN
20:20
Alexander Nozik
In reply to this message
Да, если заенить на @JsModule("theree") то основные классы проскакивает, но на том, что из другого модуля все равно падает: OrbitControls is not a constructor даже если я там все три аннотации добавляю
20:21
Занинул версию после изменений
20:24
В бандле эта функция есть
20:26
Но вызывается похоже с лишним префиксом
SR
20:38
Sergey Rostov
Выглядит так что OrbitControls - это не родная фича three.js, похоже что он определен в frontend-demo/src/main/web/js/OrbitControls.js
OrbitControls.js - написан не как модуль js: как видите вместо экспорта он тупо присваивает что то в THREE.OrbitControls, предпологая, видимо, что THREE уже определен. Поэтому его не получится стандартными средствами симпротировать. Нужно переписать его так чтобы он стал модулем: зависел на three.js и экспортировал OrbitControls

После этого он будет работать с @file:JsModule("three-orbitcontrols")
@file:JsNonModule
AN
20:41
Alexander Nozik
Он как я понял часть исходной библиотеки, но не часть npm-модуля. А можно ему как-то через JsName правильный префикс присобачить? Или определить его как экстеншн на объекте THREE, который уже есть? В принципе вопрос не критичный, один маленький скриптик можно и за собой потаскать.
20:42
Модуль-то кстати есть https://www.npmjs.com/package/three-orbitcontrols
20:43
А, стоп. Там как раз в описании модуля написано, что префикса быть не должно
SR
20:43
Sergey Rostov
пардон, он оказывается в npm
20:43
то что в web не используется
20:43
тогда вот так:
20:43
@JsModule("three-orbitcontrols")
@JsNonModule
external class OrbitControls(`object`: Object3D, domElement: Node = definedExternally) {
20:43
а все @file: убрать
20:44
это потому что в модуле написано:
/* three-orbitcontrols addendum */ module.exports = exports.default = THREE.OrbitControls;
20:44
т.е. он экспортирует только один класс
20:44
у меня заработало
AN
20:45
Alexander Nozik
щас попробуем
SR
20:45
Sergey Rostov
Index: threejs-wrapper/src/main/kotlin/info/laht/threekt/external/controls/OrbitControls.kt
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- threejs-wrapper/src/main/kotlin/info/laht/threekt/external/controls/OrbitControls.kt (revision c80f6160d6ecdaa99f9988b272496f61655c8634)
+++ threejs-wrapper/src/main/kotlin/info/laht/threekt/external/controls/OrbitControls.kt (date 1550943748000)
@@ -22,9 +22,6 @@
* THE SOFTWARE.
*/

-@file:JsModule("three-orbitcontrols")
-@file:JsNonModule
-@file:JsQualifier("THREE")
package info.laht.threekt.external.controls

import info.laht.threekt.core.Object3D
@@ -39,6 +36,8 @@
* Zoom - middle mouse, or mousewheel / touch: two finger spread or squish
* Pan - right mouse, or arrow keys / touch: three finger swipe
*/
+@JsModule("three-orbitcontrols")
+@JsNonModule
external class OrbitControls(`object`: Object3D, domElement: Node = definedExternally) {

var object: Object3D
20:46
можно скопировать и в идее: vcs -> apply patch from clipboard
AN
20:46
Alexander Nozik
да я уже руками поменял Три строчки - это можно и так :)
20:47
Ура!
20:47
Заработало
20:47
Спасибо большое.
SR
20:47
Sergey Rostov
🍻Всех с праздником кстате
AN
20:47
Alexander Nozik
Да, защитник от отечества
20:48
Я тогда этому дяде пул реквест сделаю с поправленной либой. Если не отзовется, надо забирать. Либа нужная.
Sergey Mikhailov invited Sergey Mikhailov
25 February 2019
AE
08:28
Alexandr Emelyanov
In reply to this message
проект не на гитхабе?) глянуть можно?) я на днях хочу вернуться к теме мпп)
08:28
давно не ковырял. там новая модель какая-то
AN
08:40
Alexander Nozik
Здесь не мпп, чистый js
AE
08:51
Alexandr Emelyanov
ок)
Victor Petrenko invited Victor Petrenko
AN
11:30
Alexander Nozik
In reply to this message
Для mpp с новой моделью есть https://github.com/mipt-npm/kmath/blob/master/build.gradle.kts
26 February 2019
A
17:01
Andrey
@lllewik, в чем ты работаешь с kotlin-js? Только в идее, или комбинируешь ее с webstorm?
LS
17:02
Lev Shagalov
@itpubbot Я купил idea ultimate
17:02
Ну и.. вроде в бесплатной с котлином можно работать
A
17:04
Andrey
In reply to this message
У меня студенческая версия. Но она слишком плохо может в анализ css, и html файлов, по сравнению с ws. Приходится комбинировать с webstorm. Или это как-то плагинами решается?
LS
17:10
Lev Shagalov
In reply to this message
Это я не знаю
АО
17:32
Алексей Овсянников
In reply to this message
Если ты студент - можешь подать на получение всего пака на время учебы бесплатно
17:33
Ultimate в том числе
BP
17:41
Bogdan Panchenko
In reply to this message
Я думаю это он и имел ввиду
АО
17:41
Алексей Овсянников
In reply to this message
врядли, есть Intellij Idea, Intellij Idea Education и Intellij Idea Ultimate
17:42
я думаю, он пользует второе
BP
17:43
Bogdan Panchenko
In reply to this message
А ws покупает за кровные ? @itpubbot
АО
17:43
Алексей Овсянников
In reply to this message
Или смотрит, что в итоге покупать
17:44
@itpubbot развей наши догадки:)
27 February 2019
A
08:51
Andrey
In reply to this message
Оно входит в студенческий пак
BP
08:56
Bogdan Panchenko
In reply to this message
Я не понимаю "студенческий пак", это ведь имеется ввиду студенческая лицензия где есть все продукты jb ?
AE
08:57
Alexandr Emelyanov
да
08:57
я студентом кодил на нетбинсе, он еще был топ
BP
09:00
Bogdan Panchenko
In reply to this message
Тогда с таким вопросом стоит обратится к @fundamentalparticle, он во многих чатах есть
4 March 2019
Sergey Rubanov invited Sergey Rubanov
6 March 2019
AN
15:32
Alexander Nozik
Чего-то у меня все опять плохо со сборкой во frontend. На этот раз не находит стдлиб. Причем в бандле он есть, но ошибка выбрасывается на проверке до того, как доходит до него. Кто-нибудь знает такую беду?
9 March 2019
Deleted Account invited Deleted Account
13 March 2019
Pavel Shorokhov invited Pavel Shorokhov
PS
16:27
Pavel Shorokhov
Кто-нить уже втащил в прод?)
AN
16:35
Alexander Nozik
кого, куда и что считать продом?
PS
16:35
Pavel Shorokhov
Что-нибудь на kotlinjs, реакт например
16:35
Прод - что угодно, что деньги приносит
AN
16:39
Alexander Nozik
Ну у меня тогда прода вообще нет, так как все опенсорс.
AN
16:59
Alexander Nozik
Но если вопрос про то, как работает, то хорошо работает. Для незнакомого с JS экосистемой человека есть некоторая боль в пониманиии сигналов, которые подает npm, но собирается, компилируется, работает как родное. Разумеется, размер JS несколько увеличен за счет стдлиба, но там реально не много.
17:00
Вообще лучеш в слаке спрашивать, тутошний чат не очень живой.
PS
17:02
Pavel Shorokhov
А можно ссылку на слак?
AL
17:03
Alexander Levin
In reply to this message
17:03
Но сначала надо зарегистрироваться
FK
17:04
Foat Karipov
In reply to this message
В начале этой недели отдал веб-клиента на kotlin/js+vue.js менеджерам на растерзание.
Неделя-две на отлов багов, причёс "дизайна", вошкотня с nginx и https и можно отдавать остальным пользователям.
17:06
Всё очень понравилось.
Теперь совершенно нет желания поддерживать предыдущего javafx клиента :/
Есть, конечно, некоторые местами анекдотичные нюансы, но жить можно
17:07
Про JS знаю, что он существует. :)
AL
17:10
Alexander Levin
In reply to this message
Здесь есть люди, но вопрос, что именно ты хочешь получить актуален. Пока что я бы всё ещё рекоммендовал Typescript.

Работа с фреймворками - довольно сильно завязана на прохождение сквозь костыли. Библиотек мультиплатформенных немного, так что либы ещё завязаны на js, т.е. нужно самому писать тайпинги, что не всегда легко (т.е. в Котлине нету той системы типов, которая даст возможность всё легко перевести)

Но в JB обещают активнее заняться :)
17:11
Из хорошего - впринципе запариться и сделать общий код на бэке и фронте реально и это довольно удобно.
17:15
Ну и чуток почеловечнее апи для коллекций например.
AN
17:19
Alexander Nozik
Там есть большой важный фишка, что тайпинги не обязательно писать для всего сразу. Можно дописыватьих по ходу, по мере использования методов.
AL
17:19
Alexander Levin
In reply to this message
Не, это то правда конечно. Ну, как и в любом языке с тайпингами (TS, Flow, Scala.js etc)
PS
17:29
Pavel Shorokhov
In reply to this message
А можете пример какого-то общего кода на бэке и фронте привести?
17:30
Я недавно так думал про фичу шаринга кода на мобилках и бэке, и чет не нашел особо каких-то боьших кейсов. На бэке одно, в UI другое.
17:30
DTO-шки разве что только пошарить.
AL
17:30
Alexander Levin
In reply to this message
Ну, самое традиционное - dto и валидация.
PS
17:31
Pavel Shorokhov
Ну это настолько мелкие кейсы, что про них даже не стоит говорить.
AL
17:32
Alexander Levin
In reply to this message
Ну, да и нет. Т.е. на текущем проекте у нас такого нету, Scala на бэке, Typescript на фронте. Но есть моменты, когда беру и копирую код с фронта и переписываю его на целевой язык. И наоборот. Если бы побочных проблем было бы мало, было бы очень классно переписать такой код на один язык.
17:33
Всё-таки проще в одном месте согласовать API, чем в нескольких.