|
Не получается поднять бота на Spring Boot
|
|||
---|---|---|---|
#18+
Собирай артифакт jar. И запускай его так как делает хероку. Только в таких условиях ты сможешь протестировать все нюансы. Компромиссов нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2020, 17:41 |
|
Не получается поднять бота на Spring Boot
|
|||
---|---|---|---|
#18+
dakeiras бот это presentation layer. В нём не должно быть никакой своей бизнес логики. Бизнес логика в REST API. Безопасность в IAM. Иначе получается каша. открывается страница - на ней только число xxxxx юзверь вводит это число в бот бот отсылает это число к тебе на сервер по id юзверя в боте проверяешь его наличие телефона в своей базе если он есть - ищешь по этому числу сессию привязываешь этого юзверя к этой сессии и шлёшь по этой сессии новую страницу с инфой только для этого юзверя какая бизнес логика ? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2020, 17:54 |
|
Не получается поднять бота на Spring Boot
|
|||
---|---|---|---|
#18+
dakeiras вадя пропущено... это почему? бот это presentation layer. В нём не должно быть никакой своей бизнес логики. Бизнес логика в REST API. Безопасность в IAM. Иначе получается каша. Стоп-стоп. Вы щас улетите на луну с такими абстракциями. Под ботом вы подразумеваете что? Имплементацию TelegramLongPollingBot ? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2020, 18:07 |
|
Не получается поднять бота на Spring Boot
|
|||
---|---|---|---|
#18+
mayton dakeiras пропущено... бот это presentation layer. В нём не должно быть никакой своей бизнес логики. Бизнес логика в REST API. Безопасность в IAM. Иначе получается каша. Стоп-стоп. Вы щас улетите на луну с такими абстракциями. Под ботом вы подразумеваете что? Имплементацию TelegramLongPollingBot ? При чём здесь абстракции. Это "архитектура" (ненавижу это слово). автора какая логика? открывается страница - на ней только число xxxxx юзверь вводит это число в бот бот отсылает это число к тебе на сервер по id юзверя в боте проверяешь его наличие телефона в своей базе если он есть - ищешь по этому числу сессию привязываешь этого юзверя к этой сессии и шлёшь по этой сессии новую страницу с инфой только для этого юзверя какая бизнес логика ? я ничего не понял. Можете понятнее описать? Вы имеете в виду что бот шлёт какое-то OTP? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2020, 18:36 |
|
Не получается поднять бота на Spring Boot
|
|||
---|---|---|---|
#18+
dakeiras, ты решил к боту подойти как к ентерпрайзу? Это обосновано? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2020, 19:02 |
|
Не получается поднять бота на Spring Boot
|
|||
---|---|---|---|
#18+
dakeiras я ничего не понял. Можете понятнее описать? Вы имеете в виду что бот шлёт какое-то OTP? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2020, 19:13 |
|
Не получается поднять бота на Spring Boot
|
|||
---|---|---|---|
#18+
mayton dakeiras, ты решил к боту подойти как к ентерпрайзу? Это обосновано? имхо в современных реалиях - экономически это стало целесообразно. Изза облак, опенсорса и пр. Т.е. то что раньше стоило дорого, сейчас стало доступно - предоставляя преимущества. Но это имхо. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2020, 21:01 |
|
Не получается поднять бота на Spring Boot
|
|||
---|---|---|---|
#18+
dakeiras, Я прекрасно знаю как работают облака. Но твое предложение пе декомпозиции бота на слои в данном примере - безсмысленно. Оно ничего не даёт автору. Но оно может обрести смысл если ты поможешь ему сэкономить на хостинге или обеспечить скейлинг. Только автор пока ни о чем таком не просит. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2020, 21:08 |
|
Не получается поднять бота на Spring Boot
|
|||
---|---|---|---|
#18+
Ребят, помогите "архитектуру" поправить, чтобы избежать циклических зависимостей. Spring выносит мне мозг. В общем, бот работает по примерно такой схеме: Получает Update в главном классе, который наследуется от LongPolling, потом я сразу отправляю этот апдейт в UpdateReceiver, откуда в зависимости от типа Update еще дальше отправляю его "гулять" по обработчикам. В классе бота написаны методы для отправки сообщения юзеру, поэтому этот "бот" нужен во всех обработчиках. Но этот бот зависит от UpdateReceiver, которому так же нужен этот "бот". В итоге циклическая зависимость: Чёрным цветом - классы (почти все помечены как @Component), красным - инжектнутые зависимости. Сделал конфигурацию для класса бота: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
Немного "бота": Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31.
Едем в UpdateReceiver: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29.
Ну и для примера в "текстовый" обработчик далее по цепочке: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28.
Ну и получаю: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Проблему смог решить двумя путями. 1) Заменить все конструкторы на поля и повесить на них @Autowired Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9.
В таком случае бот работает, но постоянно плюется (почти ежесекундно) ошибками о том, что он не может получить апдейты, но он получает их и обрабатывает корректно. 2) Добавить в конструкторе @Lazy: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
В таком случае бот так же продолжает плеваться сообщениями типа: Код: java 1. 2.
Оба решения не совсем мне нравятся. В общем, нужен совет, что поменять и как заставить это чудо полноценно работать. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2020, 21:44 |
|
Не получается поднять бота на Spring Boot
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2020, 12:09 |
|
Не получается поднять бота на Spring Boot
|
|||
---|---|---|---|
#18+
dakeiras, обычно я вместо длинной колбасы методов ввожу 1 поясняющую переменную. Кажется называется Introduce Temporary Variable refactoring. Тоесть вместо такого Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Делаю introduce data, и некий неизвестный объект message (не знаю какого он типа сам подставь нужный). Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
После этого код получается... более git-friendly. Строки короче. И смысл более сжатый и понятный. И изменения легче вносить т.к. они сжаты в 1 точке. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2020, 19:23 |
|
Не получается поднять бота на Spring Boot
|
|||
---|---|---|---|
#18+
Ентерпрайз не отменяет KISS. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2020, 20:22 |
|
Не получается поднять бота на Spring Boot
|
|||
---|---|---|---|
#18+
я так же делаю часто. Это более хорошая практика, делать if условие короче. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2020, 20:23 |
|
Не получается поднять бота на Spring Boot
|
|||
---|---|---|---|
#18+
dakeiras, ну так исправляй. Что-ж ты несовершенный код выдаешь как пример. Потом джуны посмотрят и примут за чистую монету. И еще будут рассказывать что так видели и это правильно. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2020, 20:43 |
|
Не получается поднять бота на Spring Boot
|
|||
---|---|---|---|
#18+
Я не против бинов. Я просто эстетику кода оценивал. Чисто по диагонали. Обычно видно чем сильнее разработчик тем меньше у него копи-паст и само-повторения кода. У Бесконечно-Технологичного Дэвида - дохрена копи-паст и код его от этого... хм слегка теряет престиж. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2020, 21:05 |
|
Не получается поднять бота на Spring Boot
|
|||
---|---|---|---|
#18+
вы о разном коде говорите. Zzz79 говорит про адский код топик стартера. И как я понимаю троллит к тому же (я надеюсь на это). (upd: я так и не понял где Zzz79 увидел бины и у кого). В Дэвиде нет бинов. Даже компонентов нет. Хотя autowiring есть и всё в Спринге. Надо будет по местному совету передалать на Boot Starter и prototype бины. авторЯ не против бинов. Я просто эстетику кода оценивал. Чисто по диагонали. Обычно видно чем сильнее разработчик тем меньше у него копи-паст и само-повторения кода. У Бесконечно-Технологичного Дэвида - дохрена копи-паст и код его от этого... хм слегка теряет престиж. 2 фактора. Сила разработчика + количество итераций рефакторинга. Это не последняя итерация. Но там далеко не всё так плохо. Убогий копипаст кстати вызван кривым API TelegramBots, что они тоже постепенно выправляют (хоть и не туда куда нужно). Насчёт своей силы Java разработчика: она на уровне мидла. Я никогда не кричал и не кричу что я знаю Яву отлично (или даже хорошо). ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2020, 23:44 |
|
Не получается поднять бота на Spring Boot
|
|||
---|---|---|---|
#18+
Zzz79 mayton, Я просто к чему- что я разгребаю и легаси и более менее современный код но давно уже бины не видел А что не так стало с бинами-то теперь? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2020, 23:47 |
|
Не получается поднять бота на Spring Boot
|
|||
---|---|---|---|
#18+
dakeiras Убогий копипаст кстати вызван кривым API TelegramBots, что они тоже постепенно выправляют (хоть и не туда куда нужно). Не согласен. Я не вижу здесь влияния API TelegramBots. Я указал вам ВАШ авторский код который находится в namespace io.infinite.david. И я говорю - этот код плох. Его надо улучшить. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2020, 23:51 |
|
Не получается поднять бота на Spring Boot
|
|||
---|---|---|---|
#18+
Mayton, Кстати, не хотел разбивать Ваш идеализм насчёт эстетики кода. Но просто откройте популярные опен сорс проекты. Например тот же Logback. И просто ужаснитесь тому хтоническому ужасу который там внутри. И так в половине проектов. И они используются и развиваются. Тоже самое касается и проприетарщины. Там даже хуже бывает. Есть и отличные примеры конечно. Где всё идеально сделано (и опен сорс и проприетарные). К таким надо стремиться конечно. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2020, 23:54 |
|
Не получается поднять бота на Spring Boot
|
|||
---|---|---|---|
#18+
mayton dakeiras Убогий копипаст кстати вызван кривым API TelegramBots, что они тоже постепенно выправляют (хоть и не туда куда нужно). Не согласен. Я не вижу здесь влияния API TelegramBots. Я указал вам ВАШ авторский код который находится в namespace io.infinite.david. И я говорю - этот код плох. Его надо улучшить. Даже не TelegramBots API. А сам бот АПИ телеги сделан через жопу Дуровым. Если будите с ним работать - сразу станет понятно. Ненормализованная модель данных, неоптимизированная. Не REST не GraphQL. Не рыба ни мясо короче. Я не спорю что мой код плох там. И улучшу в след раз когда буду что-то менять там. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2020, 23:59 |
|
Не получается поднять бота на Spring Boot
|
|||
---|---|---|---|
#18+
dakeiras Даже не TelegramBots API. А сам бот АПИ телеги сделан через жопу Дуровым. Если будите с ним работать - сразу станет понятно. Ненормализованная модель данных, неоптимизированная. Не REST не GraphQL. Не рыба ни мясо короче. Денормализация - вообще не в тему. При чем здесь это к качеству кода? Это разные векторы. REST/GraphQL - да пофиг вообще. Тебе как прикладнику какая разница какой там над-сетевой проткол? Ты же не браузером к боту подключаешся верно? dakeiras Я не спорю что мой код плох там. И улучшу в след раз когда буду что-то менять там. Ты уж постарайся. Меня коробит когда кто-то приводит эталоном свои проекты даже не пройдя независимые code-review. Я по возможности буду напоминать тебе об этом несовершенстве. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2020, 00:04 |
|
Не получается поднять бота на Spring Boot
|
|||
---|---|---|---|
#18+
dakeiras Но просто откройте популярные опен сорс проекты. Например тот же Logback. И просто ужаснитесь тому хтоническому ужасу который там внутри. Этот проект? https://github.com/qos-ch/logback Ну ткните меня туда где ужас-ужас. Я вот хочу ужастнуться. Может сам напишу issue с пожеланием об улучшении. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2020, 00:07 |
|
Не получается поднять бота на Spring Boot
|
|||
---|---|---|---|
#18+
авторДенормализация - вообще не в тему. При чем здесь это к качеству кода? Это разные векторы. REST/GraphQL - да пофиг вообще. Тебе как прикладнику какая разница какой там над-сетевой проткол? Ты же не браузером к боту подключаешся верно? Ну не знаю как это формально описать. В общем если столкнётесь с этим АПИ - увидите сами. Он... странный. Они запихнули всё в объект Update. Поэтому приходится постоянно делать if (update.hasThis.....), if (update.hasThat...) Код: java 1.
Могли они как-то иначе сделать. авторТы уж постарайся. Меня коробит когда кто-то приводит эталоном свои проекты даже не пройдя независимые code-review. Я по возможности буду напоминать тебе об этом несовершенстве. да я только рад, спасибо. Это помогает. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2020, 00:15 |
|
Не получается поднять бота на Spring Boot
|
|||
---|---|---|---|
#18+
dakeiras Код: java 1.
Не понимаю проблемы. Сделай себе функцию и пользуйся. Код: java 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2020, 00:35 |
|
Не получается поднять бота на Spring Boot
|
|||
---|---|---|---|
#18+
mayton dakeiras Но просто откройте популярные опен сорс проекты. Например тот же Logback. И просто ужаснитесь тому хтоническому ужасу который там внутри. Этот проект? https://github.com/qos-ch/logback Ну ткните меня туда где ужас-ужас. Я вот хочу ужастнуться. Может сам напишу issue с пожеланием об улучшении. ch.qos.logback.classic.Logger filterAndLog_0_Or3Plus И прочие чудеса на виражах. Там нормального очень мало на самом деле. Код: java 1. 2. 3. 4. 5. 6. 7.
При этом ирония в том что logback и Slf4j делали одни и теже авторы. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2020, 00:48 |
|
|
start [/forum/topic.php?fid=59&msg=39971091&tid=2120769]: |
0ms |
get settings: |
28ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
53ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
575ms |
get tp. blocked users: |
1ms |
others: | 349ms |
total: | 1041ms |
0 / 0 |