
Boris
13.02.2017
20:00:32

Sergey
13.02.2017
20:01:34
уже были попытки завернуть пхп на жвм. фейсбук даже свою виртуальную машину писал(hackvm и hacklang)

Boris
13.02.2017
20:02:01

Google

Slava
13.02.2017
20:04:05
Зачем холи вар о языках в котлин группе?

Sergey
13.02.2017
20:04:12
да, давайте завязывать)

Quantum Harmonizer
13.02.2017
20:04:29

Sergey
13.02.2017
20:05:16

Boris
13.02.2017
20:05:39
Вот по этому мне нравится слак, создал там канал и общайся никому не мешает

Quantum Harmonizer
13.02.2017
20:05:59
#holywars

Руслан
13.02.2017
21:44:53
Развели тут pro.jvm

Михаил
14.02.2017
05:15:07
Стоит разрабатывать бэкенд с сложной бизнес логикой на котлине. Есть у кого опыт?
Может есть затыки в сравнении с джавой

Руслан
14.02.2017
05:30:22
Ну как раз для бизнес логики Котлин упрощает написание и чтение

Boris
14.02.2017
05:34:11
Может есть затыки в сравнении с джавой
К котлину только приноровиться надо, он заставляет немного по другому смотреть на решаемые проблемы, из за этого джававэй временами смотрится инородно, но затыков как раз меньше чем с джавой, больше способов решить сложные проблемы просто

Михаил
14.02.2017
05:42:03
А если про фреймворкам смотреть?

Google

Михаил
14.02.2017
05:42:26
Есть известные траблы?
Речь о спринге например
Или спарке

Руслан
14.02.2017
05:49:51
со спрингом все хорошо, а теперь можно даже добавить плагин для системы сборки, и с ним еще лучше
спарке это который апачи, или джава?
если джава, то я на нем писал еще до релиза, тоже без проблем

Михаил
14.02.2017
05:51:58
Джава спарк

pplcf
14.02.2017
06:33:24
мы с релиза сидим на котлин + спарк
каких-то специфичных проблем не замечали

Руслан
14.02.2017
06:56:45
http://talkingkotlin.com/spring-boot-with-sebastian-delueze/

Boris
14.02.2017
07:00:14
Вообще специфичные проблемы конечно бывают, вроде спринговых, но они обычно или не критичные или решаются

Наиль
14.02.2017
07:35:06
Ребят, подскажите как подружить autowired и котлиновский object
http://telegra.ph/object-autowired-02-14

Sergey
14.02.2017
07:35:24
никак, это ж статический класс

Наиль
14.02.2017
07:51:45
Да, все вроде бы логичо :) Я только начинаю осваивать spring, поэтому для меня не все прозрачно пока, поэтому надо перепроверять. Я не знаком еще с bean'ами и di которые тут в ходу. Моя основная специальность это android(java,kotlin) и ios(objectice-c, swift). Раньше desktop (С# wpf). А вот с backend миром только сейчас знакомлюсь, чтобы себе же писать нормальную API.
Поэтому позвольте еще вопрос, как тогда завести @Autowired в классе, который не @RestController
class Holder {
@Autowired
lateinit var objProjsRep: ProjsRep
}
Предполагаю нужна какая-то аннотация.

Руслан
14.02.2017
07:53:39
Spring 4.3+?

Наиль
14.02.2017
07:53:49
даже 5+

Руслан
14.02.2017
07:53:54
@Component
class Holder(val objProjsRep: ProjsRep)
Тогда вот так лучше)

Наиль
14.02.2017
07:56:07
Блин, так не прокатит, так как я хотел вот так его заюзать
object MyObj {
fun projs(): List<Project> {
val h = Holder()
return h.objProjsRep.findAll()
}
}

Руслан
14.02.2017
07:57:24
object со спрингом не дружит (afaik)

Google

Руслан
14.02.2017
07:57:47
т.е. ты Holder в контекст положишь, а object - нет

Наиль
14.02.2017
07:58:48
Окей, а как лучше тогда сделать.
Этот MyObj, должен быть синглтоном на весь сервер. Как в спринге вы это делаете?

Руслан
14.02.2017
07:59:03
@Service/@Component
Они синглтоны
Спринг менеджит для тебя это

Наиль
14.02.2017
07:59:58
Окей, пойду целенаправленно почитаю тогда сначала про них, чтобы не задавать слишком простых вопросов

Boris
14.02.2017
08:26:12
в спринге есть только один синглтон — это контекст приложения, всё остальное варится как бы внутри, даже само приложение работает как часть контекста, поэтому для доступа к определенным системам или сервисам используется di, т.е. обычно если одному объекту для жизни нужен другой, то он его просто принимает в конструктор, а подставить его при создании в конструктор ты доверяешь спрингу
это как конструктор, насоздавал элеметов и попросил спринг их раздать друг другу где надо

Наиль
14.02.2017
08:29:05
Ага, эту идею я уже уловил. Спасибо. Сейчас осталось освоить технические моменты.

Sergey
14.02.2017
08:41:13
в книге написано что можно делать такую структуру файлов для пакетов
com:
- package1.kt
- package2.kt
но идея возмущается на этот счет и требует переименовать пакет. приходится лепить что-то в духе
com.package1.Package.kt
com.package2.Package.kt
на сколько ок выключить испекцию в идее и делать как в первом варианте? или есть какие-то другие варианты?

Boris
14.02.2017
08:42:13
файлы превратятся в классы, а не в пакеты
не совсем понимаю про пакеты

Sergey
14.02.2017
08:44:56
я хочу сделать файл, в котором будут функции для пакета

Руслан
14.02.2017
08:44:57
tree покажи

Sergey
14.02.2017
08:46:10

Руслан
14.02.2017
08:46:29
а зачем package1
просто com.example

Sergey
14.02.2017
08:46:59
тогда если я в package2 сделаю функцию test - будет коллизия

Google

Boris
14.02.2017
08:47:44

Руслан
14.02.2017
08:48:09

Boris
14.02.2017
08:48:57
а если и есть такая штука, думаю, лучше воздержаться от её использования, дабы не сбивать с толку тех, кто будет это потом смотреть

Aliaksei
14.02.2017
09:06:12

Sergey
14.02.2017
09:08:23

Aliaksei
14.02.2017
09:34:50
плохой совет какой то))

Глеб
14.02.2017
09:50:33
А может, в таком случае, можно просто отключить предупреждение?

Sergey
14.02.2017
09:52:34

Igor
14.02.2017
09:55:11

Quantum Harmonizer
14.02.2017
09:55:48
import onePackage.something as oneSomething
import anotherPackage.something as anotherSomething

Igor
14.02.2017
09:56:11
Это хорошо, а если конфликтов большое (плюс имена новые придумывать)? Замучаешся ведь каждый раз так делать.

Sergey
14.02.2017
09:56:35

Quantum Harmonizer
14.02.2017
09:57:07
почему бы не использовать один класс Credentials?

Igor
14.02.2017
09:58:16

Sergey
14.02.2017
09:58:36

Igor
14.02.2017
10:00:00
Те у тебя там только функции и data классы без логики (ФП пробуешь на Kotlin)?

Quantum Harmonizer
14.02.2017
10:00:40
дата классы с логикой могут приносить проблемы)

Boris
14.02.2017
10:01:57
вспоминается анекдот:
- Доктор, когда я вот вот так вот делаю у меня болит
- А вы вот вот так вот не делайте

Google

Sergey
14.02.2017
10:02:18
и коллеги успешно раздули его до 50 полей

Quantum Harmonizer
14.02.2017
10:03:25
Короче, большие классы — всегда плохо)

Boris
14.02.2017
10:03:34
дело-то не в том как сделать, а в возножностях и бест-практис. Если мне нужно два класса, я делаю два класса, а если язык мне этого сделать не позволяет, то значит что-то с ним не так

Sergey
14.02.2017
10:03:38
ну и плюс request/response это для api, сваггер хорошо его подхватывает и всегда наглядно какой нужен запрос и какой ответ

Quantum Harmonizer
14.02.2017
10:03:58

Boris
14.02.2017
10:04:24
котлин позволяет, да ?
это я про предложение сделать один класс вместо двух

Sergey
14.02.2017
10:05:27
вот я и хочу сделать
dto.request{Credentials}
dto.response{Credentials}
при этом не плодить отдельные классы)
пока разделил все дата классы по отдельным
потому что вариант dto.request.Requests вообще не очень выглядит

Boris
14.02.2017
10:06:20

Sergey
14.02.2017
10:06:50

Boris
14.02.2017
10:07:17
а кто мешает их положить просто в отдельные папки?
зачем обязательно в файл-пакет-то?

Sergey
14.02.2017
10:07:46
удобно ведь

Boris
14.02.2017
10:08:25
ну как, сделать один класс, возможно немного удобнее, зато если будут еще появляться, то уже как-то не очень удобно

Evgeny
14.02.2017
14:48:18
Кто-нибудь пробовал использовать jack с kotlin1.1 beta?