Size: a a a

2020 July 10

AA

Armen Arakelyan in Kotlin JVM
Добрый день! Кто-нибудь может подсказать такую вещь.  Я пишу на kotlin бота под телеграмм. Наткнулся на библиотеку kt-telegram-bot, документацию не нашел, только в гите небольшое описание. Может, кто знает где взять по подробней описание?
источник

AM

Andrew Mikhaylov in Kotlin JVM
Armen Arakelyan
Добрый день! Кто-нибудь может подсказать такую вещь.  Я пишу на kotlin бота под телеграмм. Наткнулся на библиотеку kt-telegram-bot, документацию не нашел, только в гите небольшое описание. Может, кто знает где взять по подробней описание?
Я думаю, логично пойти к автору, контакты которого скорее всего можно найти на гитхабе, и пойти к нему пообщаться.
источник

AL

Anton Lakotka in Kotlin JVM
Ruslan Ibragimov
Да, тут вопрос в том как DI библиотека предоставляет вам провайдер, как что-то что закеширует результат get() или нет
а в чем суть проблемы?
Ты пытаешься свою реализацию DI сделать? И спрашиваешь как большинство будет воспринимать подобный механизм?

Если так, то лучше всего решать подобные двойственные трактовки явным образом. Как вариант сменить название интерфейса с Provider на SingletonProvider (название можно придумать по-лучше, главное чтобы было очевидно).
И аналогичный <SomeName>Provider который будет создавать каждый раз новый инстанс.

В koin это решили на уровне декларации, там есть single и factory.
источник

RI

Ruslan Ibragimov in Kotlin JVM
Anton Lakotka
а в чем суть проблемы?
Ты пытаешься свою реализацию DI сделать? И спрашиваешь как большинство будет воспринимать подобный механизм?

Если так, то лучше всего решать подобные двойственные трактовки явным образом. Как вариант сменить название интерфейса с Provider на SingletonProvider (название можно придумать по-лучше, главное чтобы было очевидно).
И аналогичный <SomeName>Provider который будет создавать каждый раз новый инстанс.

В koin это решили на уровне декларации, там есть single и factory.
Мне стало интересно какую семантику ожидают по умолчанию, думал что все за первый вариант проголосуют, ведь второй может быть полезен чтобы кастомные скоупы (типо объект на запрос) делать, а кастомные скоупы как по мне сложно и не нужно. В итоге я думаю что поведение - все по умолчанию Singleton самое правильное (потому что я так всегда использую, ага)
источник

BV

Boris Vanin in Kotlin JVM
Ruslan Ibragimov
Мне стало интересно какую семантику ожидают по умолчанию, думал что все за первый вариант проголосуют, ведь второй может быть полезен чтобы кастомные скоупы (типо объект на запрос) делать, а кастомные скоупы как по мне сложно и не нужно. В итоге я думаю что поведение - все по умолчанию Singleton самое правильное (потому что я так всегда использую, ага)
В спринге например скоуп на стороне декларации определяется. Я бы не был уверен, что это всегда синглтон. Но вот в грейдле за провайдером идёт стоять вообще вычислимое значение 🤷‍♂
источник

BV

Boris Vanin in Kotlin JVM
Так что синглтон не очевиден
источник

RI

Ruslan Ibragimov in Kotlin JVM
Boris Vanin
В спринге например скоуп на стороне декларации определяется. Я бы не был уверен, что это всегда синглтон. Но вот в грейдле за провайдером идёт стоять вообще вычислимое значение 🤷‍♂
Ну по умолчанию когда Bean метод в конфигурации, он разве не синглтон? Там даже прокси и его можно вызывать в конфигурации несколько раз и он будет кешировать результат
источник

RI

Ruslan Ibragimov in Kotlin JVM
Вот в guice по умолчанию все не синглтон - ходишь как дурак все помечаешь, я ещё и баги там жесткие видел когда на каждый запрос http клиент и дао поднимали, потому что он так делает по умолчанию
источник

AM

Andrew Mikhaylov in Kotlin JVM
А в даггере наоборот без скоупов всё будет создаваться при каждом новом связывании. А местный провайдер создаёт объект при каждом новом обращении.
источник

u

ultra + noise in Kotlin JVM
Привет!
А кто-нибудь использовал gettext-commons ? Он умеет читать .po файлы? Или для этого есть другие решения?
источник

RI

Ruslan Ibragimov in Kotlin JVM
ultra + noise
Привет!
А кто-нибудь использовал gettext-commons ? Он умеет читать .po файлы? Или для этого есть другие решения?
источник

u

ultra + noise in Kotlin JVM
этот крутой, но мне прям надо кучу po файлов разобрать)
источник

RI

Ruslan Ibragimov in Kotlin JVM
ultra + noise
Привет!
А кто-нибудь использовал gettext-commons ? Он умеет читать .po файлы? Или для этого есть другие решения?
Он умеет, но нужно ставить gettext на систему, т.к. он будет его вызывать чтобы распарсить. Т.е. он сам не является парсером. Если это one-time-job я бы взял любой доступный инструмент, перегнал в какой-нибудь json и его уже читал с kotlin
источник

AE

Alexandr Emelyanov in Kotlin JVM
Ruslan Ibragimov
Да, тут вопрос в том как DI библиотека предоставляет вам провайдер, как что-то что закеширует результат get() или нет
если это фабрика - она вернет каждый раз новый, если это собранный контекст, то он вытащит уже по правилам, если синглтон - то один единственный экземпляр, если прототип - то каждый раз новый
источник

AE

Alexandr Emelyanov in Kotlin JVM
Ruslan Ibragimov
Мне стало интересно какую семантику ожидают по умолчанию, думал что все за первый вариант проголосуют, ведь второй может быть полезен чтобы кастомные скоупы (типо объект на запрос) делать, а кастомные скоупы как по мне сложно и не нужно. В итоге я думаю что поведение - все по умолчанию Singleton самое правильное (потому что я так всегда использую, ага)
а как же реквест скоуп?
источник

RI

Ruslan Ibragimov in Kotlin JVM
Не нужен)
источник

AE

Alexandr Emelyanov in Kotlin JVM
сессия понятно что не нужна в нормальной архитектуре
источник

AE

Alexandr Emelyanov in Kotlin JVM
Ruslan Ibragimov
Не нужен)
ну не скажи
источник

RI

Ruslan Ibragimov in Kotlin JVM
Сессия и есть реквест скоуп
источник

AE

Alexandr Emelyanov in Kotlin JVM
все конечно же зависит от архитектуры создаваемого софта, в целом реквест скоуп - полезная штука
источник