Kotlin Developer
6.22K subscribers
253 photos
7 videos
347 links
Самый топовый канал по Kotlin

По вопросам сотрудничества и рекламы: @NadikaKir

Мы на бирже: https://telega.in/c/KotlinSenior
Download Telegram
🔝 Как разрабатывать приложения на любом фреймворке?

📡Расскажет Сергей Окатов, кандидат физ.мат наук, руководитель курса Kotlin Backend Developer.Professional на примере Spring и Ktor на открытом уроке от OTUS.

🔥На занятии: 
- узнаем про подход framework-agnostic и зачем он нужен; 
- разработаем приложение на Kotlin/Spring и Ktor;
- выполним интеграцию бизнес-логики в оба приложения;
- проанализируем плюсы и минусы подхода.

‼️Бесплатный урок пройдет 26 февраля в 19:00 по Москве в рамках курса «Kotlin Backend Developer. Professional». Обновленная программа обучения позволит прикоснуться к большому числу инструментов разработки современных, гибких, высокопроизводительных серверных приложений на языке Kotlin. Доступна рассрочка на обучение!

➡️Зарегистрируйтесь и пройдите тест прямо сейчас, чтобы занять место на открытом уроке и получить запись: https://otus.pw/sRnF/

Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. erid: LjN8KERcX
Deep dive into delegated properties: разбираемся с делегатами в котлин

Не так давно решил поглубже изучить официальную документацию котлина, как человек изучивший его, как и многое другое через видосики и практику, решил почитать ее с первой до последней строчки.

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


Читать статью
С чего начать обучение на Android-разработчика?

С бесплатного практического урока «Jetpack Compose: Modifiers» от Максима Качинкина – специалиста Dodo Engineering.

💻В рамках вебинара:

- разберемся с одним из главных элементов Compose — Modifiers;
- поработаем с Constraints и поймем, как они связаны с Modifiers;
- проведем Quizz по Modifiers.

Встречаемся 7 марта в 20:00 мск в рамках курса «Специализация Android Developer». Доступна рассрочка на обучение!

👉Регистрируйтесь прямо сейчас, чтобы посетить бесплатный урок и получить запись: https://otus.pw/zuW1/

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Решение проблемы N+1 при работе с Kotlin Exposed

К написанию этой статьи я подошёл после продолжительного использования Kotlin Exposed в рабочих, а также персональных проектах, когда я начал анализировать генерируемые SQL запросы. В тот момент я познакомился с проблемой N+1)

Читать статью
Использование resilience4j со Spring Boot

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

Рассмотрим какие в ней есть инструменты, как их использовать в Spring Boot приложении с помощью аннотаций, как настраивать и есть ли в них подводные камни


Читать статью
🤖 Какие есть технические метрики Android-приложений?

Узнайте на бесплатном практическом уроке от OTUS и Антона Казакова — руководителя направления Android-разработки в Золотом яблоке. На вебинаре разберём:

1. Введение в технические метрики
2. Основные метрики производительности
3. Метрики стабильности и надежности
4. Метрики эффективности использования ресурсов

🔥Встречаемся 13 марта в 20:00 мск в рамках курса «Android Developer. Professional». Доступна рассрочка на обучение!

👉 Пройдите короткий тест прямо сейчас, чтобы посетить бесплатный урок и получить запись: https://otus.pw/VJIg/

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Android Lint: оптимизируем проверку мердж-реквестов

Привет, это Android-разработчик из «МТС Диджитал» Никита Пятаков. Когда я только начал работать над приложением «Мой МТС», мне нужно было время, чтобы адаптироваться и ознакомиться с проектом. На первых МР-ах коллеги подсвечивали готовые решения, которые можно переиспользовать. Когда к нам стали приходить новые разработчики, такие комментарии оставлял уже я. Это натолкнуло меня на мысль, что использование синтаксического анализатора оптимизирует процесс проверки. К тому моменту мы уже использовали Android Lint, так что выбирать не пришлось.

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


Читать статью
💯Освойте профессиональную бэкенд-разработку на Kotlin всего за 5 месяцев. Осталось всего 2 места!🔥

👩‍💻Под руководством опытных экспертов из ведущих международных компаний на онлайн-курсе «Kotlin Backend Developer. Professional» от OTUS.

Обучение идеально подойдет для:
- разработчиков на Java;
- опытных разработчиков на других языках программирования;
- мобильных разработчиков;
- Kotlin бэкенд-разработчиков.

📆Только в феврале вы можете стать студентом курса на самых выгодных условиях. Спешите, осталось всего 2 места на курсе! Пройдите тест прямо сейчас и получите скидку 10% по промокоду «10backend10»: https://otus.pw/Z0Se/

Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. erid: LjN8KMCkD
Detekt: как статический анализ помогает улучшить код автотестов

Есть такое мнение, что качество кода автотестов не так важно в сравнении с основной кодовой базой. Однако это тоже код, который приходится поддерживать с соответствующими накладными расходами. Если не следить за его качеством, то и тут могут возникать проблемы.

И у каждой ошибки есть своя цена. Было бы здорово, если бы о них можно было узнать как можно быстрее и без привлечения лишних ресурсов.

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

Меня зовут Николай, и я инженер в мобильной платформенной команде Яндекс Еды. В этой статье я расскажу, как мы повышаем качество кода автотестов Android-приложения. И в этом нам помогает статический анализ.


Читать статью
Поговорим про деньги в IT?

Приглашаем опытных IT-специалистов пройти небольшой опрос про зарплаты и бенефиты в технологических компаниях. Это займёт не более 7 минут — а ваше мнение поможет одному крупному российскому работодателю делать актуальные офферы.

Пройти опрос можно здесь
Настраиваем кросс-обновления Android-приложений между сторами

Меня зовут Тимофей, я Android-разработчик в Сравни. Давайте поговорим о кросс-обновлении Android-приложений без привязки к конкретному стору – так, чтобы пользователи могли устанавливать из одного источника, а обновлять – из другого, без необходимости удалять и ставить заново.

Поводы задуматься о подобном сценарии у нас были разные: проработка рисков блокировки приложения в сторах, исследование новых возможностей добавить удобства пользователям, активация дополнительных каналов дистрибуции приложений.

Но первые реальные практические шаги в этом направлении мы сделали в формате
“А что, так можно было?”: пошли выкладывать приложение в RuStore и попутно обнаружили возможности использовать аналогичные механизмы для настройки кросс-обновления.


Читать статью
Интегрируем Kotlin сервис с AI чат-ботом с помощью Spring AI за 5 минут

Чат-боты с генеративным искусственным интеллектом получили широкую известность после релиза ChatGPT в ноябре 2022 года. Сейчас вряд ли найдётся человек, который не слышал про данный инструмент от OpenAI. Именно он вызвал настоящий бум в данной сфере, вынудив конкурентов разрабатывать свои аналоги, чтобы побороться за место на рынке. Таким образом созданная лавина изменений затронула многие языки программирования. Не обошли они и Java-сообщество. Spring Framework, один из наиболее популярных Java фреймворков обзавёлся модулем Spring AI, который обещает упростить разработку приложений с функциями ИИ.

Давайте вместе взглянем на него в деле и опробуем на демо проекте. В данном гайде мы создадим и подключим Kotlin сервис к чат-боту всего за пять минут, используя Spring AI!


Читать статью
Осознанная оптимизация Compose 2: В борьбе с композицией

Jetpack Compose постоянно развивается, открывая перед разработчиками новые горизонты для оптимизации. С момента нашего последнего обзора, мы добились значительного прогресса, сократив задержки при скролле с 5-7% до нуля. В этом материале мы поделимся свежими находками и передовыми практиками в оптимизации Compose. Чтобы максимально углубиться в тему, рекомендуем ознакомиться с первой частью.

Читать статью
🔥С чего начать обучение на Android-разработчика?

С бесплатного практического урока «Jetpack Compose: Modifiers» от Максима Качинкина – специалиста Dodo Engineering.

🤖 В рамках вебинара:

- разберемся с одним из главных элементов Compose — Modifiers;
- поработаем с Constraints и поймем, как они связаны с Modifiers;
- проведем Quizz по Modifiers.

Встречаемся 7 марта в 20:00 мск в рамках курса «Специализация Android Developer». Доступна рассрочка на обучение!

👉 Регистрируйтесь прямо сейчас, чтобы посетить бесплатный урок и получить запись: https://otus.pw/vSQW/

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Пару слов о полях и свойствах в Kotlin

Терминология свойств и полей в Kotlin может немного сбивать с толку, потому что технически в Kotlin нет полей. Вы не можете объявить поле. Все — свойства! Однако, во избежании путаницы, я предпочитаю разделять определения полей и свойств на следующей основе — полями являются приватные переменные-члены класса. Это то, для чего выделена память. Свойствами являются публичные или защищенные (protected) функциями геттеры и сеттеры, которые позволяют вам получить доступ к приватным полям.

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

Читать статью
📱 Хочешь быть в курсе последних технологических инноваций и интернет трендов? Присоединяйся к reposted прямо сейчас!

У нас:
🌪️ Горячие новости из мира технологий и интернета;
🌪️ Интересное о будущем технологий и нейросетей;
🌪️ Эксклюзивные посты про IT-и медиа.

💥 Держи руку на пульсе трендов вместе с reposted
Kotlin вместо bash. Прокачиваем автоматизацию на сервере

Для решения задач автоматизации рутинных процессов для системных администраторов и DevOps чаще всего используются или bash-сценарии или python. Первое решение косвенно используется и в описании Dockerfile, поскольку сценарий исполняемых команд принципиально ничем не отличается от запуска скрипта в какой-либо shell, второй подход чаще ассоциируется с автоматизацией, связанных с взаимодействием с хранилищами данных. Но несправедливо было бы обойти стороной возможность создания исполняемых сценариев на языке Kotlin, которые могут стать полноценной заменой bash-сценариям.

В этой статье мы рассмотрим несколько примеров использования Kotlin Scripting (KTS) для автоматизации в распределенной системе, будем использовать долгоживущие скрипты с ожиданием заданий через RabbitMQ, а также поработаем с файловой системой, внешними сервисами, а также попробуем использовать KTS для сборки Docker-контейнеров
.

Читать статью
⚡️Хакатон "Умный помощник для тендеров"

Присоединяйтесь к участию в соревновании и станьте частью комьюнити Федерации спортивного программирования, объединяющей талантливых специалистов и спортсменов!

🚀Что дает участие?
1. Карьерные преимущества.
2. Поддержка и развитие.
3. Призовой фонд — 200 000 рублей.
4. Комьюнити спортсменов.

👨‍💻К участию приглашаются:
- Студенческие команды в составе от 3х до 5ти человек;
- Обучающиеся технических специальностей;
- IT-специалисты;
- Заинтересованные представители регионов Российской Федерации.

📅Дата проведения: 23 - 25 марта
📍Формат: Онлайн/Офлайн в г. Москва

Подробная информация и регистрация: https://tglink.io/589439577d3e?erid=LjN8K74Ej
Что такое мульти-декларации (destructuring declarations)?

Мульти-декларации (destructuring declarations или деструктуризирующее присваивание) — это способ извлечения значений из объекта и присвоения их сразу нескольким переменным. В Kotlin этот механизм поддерживается с помощью оператора распаковки (destructuring operator) — componentN(), где N — номер компонента.

При создании data класса Kotlin автоматически создает функции componentN() для каждого свойства класса, где N — номер позиции переменной в конструкторе. Функции componentN() возвращают значения свойств в порядке их объявления в конструкторе. Это позволяет использовать мульти-декларации для распаковки значений свойств и присваивания их отдельным переменным.

Например, если у нас есть data класс Person с двумя свойствами name и age, мы можем использовать мульти-декларации, чтобы извлечь эти свойства и присвоить их двум переменным:

data class Person(val name: String, val age: Int)

val person = Person("Alice", 29)
val (name, age) = person

println(name) // Alice
println(age) // 29

Также можно использовать мульти-декларации в циклах, чтобы итерироваться по спискам объектов и распаковывать значения свойств:


val people = listOf(Person("Alice", 30), Person("Bob", 40))
for ((name, age) in people) {
println("$name is $age years old")
}

// Alice is 30 years old
// Bob is 40 years old

Мульти-декларации также могут быть использованы с массивами и другими коллекциями:

val list = listOf("apple", "banana", "orange")
val (first, second, third) = list

println(first) // apple
println(second) // banana
println(third) // orange
🤖 Разбираешься в Android разработке? - Проверь себя, пройди тест!

Хочешь расти дальше и создавать быстрые, оптимизированные приложения для Android - тогда наш курс для тебя!

Пройди тест из 20 вопросов и проверь свои знания. Сможешь сдать — пройдёшь на продвинутый курс "Android Developer. Professional " от OTUS по специальной цене.

Возможна оплата курса в рассрочку

👉 ПРОЙТИ ТЕСТ

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Строим мосты: подключение зависимостей с Cocoapods в Kotlin Multiplatform Mobile

При создании КММ проекта Android Studio предоставляет разработчику выбор между использованием Regular Framework и Cocoapods Dependency Manager для добавления iOS-специфических библиотек, который может быть крайне неочевидным на первый взгляд, ведь использование Regular Framework кажется затруднительным и не пользуется популярностью в отличие от удобного Cocoapods. В данной статье мы рассмотрим, как интегрировать Cocoapods в разработку, создав небольшое Android приложение.

Читать статью