Kotlin Developer
6.21K subscribers
250 photos
7 videos
343 links
Самый топовый канал по Kotlin

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

Мы на бирже: https://telega.in/c/KotlinSenior
Download Telegram
Пару слов о полях и свойствах в 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 приложение.

Читать статью
Как стать Fullstack-разработчиком на JavaScript в 2024?

Освоить необходимый стек технологий под руководством опытных экспертов на онлайн-курсе «Специализация Fullstack developer» от OTUS.

💻 Программа идеально подойдет для начинающих разработчиков, тех, кто хочет перейти на fullstack и тех, кто хочет попасть в IT, но пока не определился с направлением.

На курсе вас ждут:

- живые вебинары с возможностью задать вопросы экспертам;
- много практики и сильные проекты для портфолио;
- поддержка профессионального комьюнити;
- рассрочка на комфортных условиях.

👉 Оставьте заявку прямо сейчас и получите бесплатные уроки, которые помогут ознакомиться с форматом обучения: https://clck.ru/39emSj

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

Всем привет! Меня зовут Миша Вассер, я Head of Android в AGIMA. Мы занимаемся разработкой Digital-продуктов для больших и маленьких компаний, в том числе пилим мобильные приложения.

Не так давно — по сравнению со всей историей Android — Huawei выкатил собственную операционную систему и сказал: «Ребята, вот вам новая система, кайфуйте». Многие отнеслись к новой ОС скептически. Остальным пришлось адаптировать под нее свои Android-приложения.

Мы оказались во второй группе. К нам время от времени обращаются с просьбой помочь с адаптацией под Huawei. И мы неплохо в этом вопросе прокачались. Поэтому сейчас расскажу, что надо сделать, чтобы стало хорошо. А покажу всё это на примере крупного ретейлера, с которым мы работаем.

Читать статью
🦾 Как развиваться тестировщику?

👉 Наращивать объем знаний и навыков.
Приглашаем на открытый урок «Разработка сервиса для генерации тестовых данных на Spring Framework» в рамках курса «Kotlin QA Engineer» от OTUS

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

На упрощенном примере реализуем сервис для генерации тестовых пользователей и поговорим о внутреннем устройстве Spring Framework.

🔹Основные темы открытого урока:
- Применение тестовых сервисов для тестирования
- Внутреннее устройство Spring Framework
- Разработка Rest API на примере сервиса для генерации тестовых данных

Не упустите возможность погрузиться в мир разработки на Spring Framework и узнать все об основных принципах создания тестовых сервисов! 

👉 Регистрация
https://otus.pw/l6im/?erid=LjN8KWzc1
Context receivers — новые extension functions

Поговорим сегодня про context receivers — фиче Kotlin, про которую я узнал давно, но смог найти применение лишь пару месяцев назад. Расскажу о том, что такое context receivers, где их можно использовать, и, конечно же, про «успешный успех» — минус 60% самописного DI в OzonID SDK. Но обо всём по порядку.

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

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

💥 Держи руку на пульсе трендов вместе с reposted
Во что компилируется typealias?

Typealias не создает новый тип данных, а только создает псевдоним для существующего типа. При компиляции кода, все typealias заменяются на соответствующий тип, поэтому typealias не приводит к увеличению размера кода.

Например, typealias IntPredicate = (Int) -> Boolean при компиляции будет заменено на (Int) -> Boolean, то есть функцию, принимающую значение типа Int и возвращающую значение типа Boolean.

Можно ли использовать typealias для функциональных типов?

Да, можно использовать typealias для функциональных типов в Kotlin. Например, вы можете создать псевдоним для типа функции, которая принимает два параметра типа Int и возвращает значение типа String, следующим образом:

typealias IntToString = (Int, Int) -> String

Это позволит вам использовать созданный псевдоним вместо полного объявления типа, то есть вместо:

fun processValues(f: (Int, Int) -> String) {
// ...
}

можно использовать:

fun processValues(f: IntToString) {
// ...
}

Как и в случае с другими typealias, компилятор Kotlin просто заменяет псевдоним на соответствующий тип при компиляции кода.
#вакансия #job #vacancy #remote #parttime #преподаватель #educator #QA #Kotlin

Время делиться знаниями!

Компания: OTUS – образовательная платформа. За более чем 6 лет работы мы создали более 170 авторских курсов для IT-специалистов разного уровня от Junior до Senior. Практически на каждом нашем курсе есть вступительное тестирование для наших студентов, плюс более 650 преподавателей-практиков из крупнейших компаний. Мы учимся друг у друга, советуемся, помогаем, делимся опытом и обсуждаем новости как в преподавании, так и в IT.

Вакансия: преподаватель онлайн-курса «Kotlin QA Engineer» (интересные темы по программе курса и нагрузку можно выбирать).

Эта вакансия будет интересна разработчикам и инженерам по тестированию на Kotlin c практическим опытом в разработке на Kotlin от 1 года. Можно без опыта преподавания. Мы с удовольствием поможем Вам освоить Best Practices преподавания: для этого у нас есть вводный курс по преподаванию и пробные уроки с методистом.

Преподаватель раскрывает тему урока с помощью теории и примеров из практики.

Условия:
удаленное сотрудничество, занятость part-time.
стандартное занятие длится 1,5 часа с 20:00 до 21:30 по МСК.
уроки проводятся в онлайн формате в Zoom.
на занятиях используется презентация с теорией и практические примеры, чтобы раскрыть тему урока.
наши методисты помогают освоить лучшие инструменты и практики преподавания.

Еще Вы сможете:
внести свой вклад в развитие IT
структурировать свой опыт и знания.
развивать личный бренд.
прокачать софт-скиллы.
получать от 4000 до 6000 руб. за один вебинар (полтора часа) + отдельно оплачивается проверка ДЗ и другие активности, в которых можно по желанию участвовать.

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

Подробнее в telegram: @ElenaAlias
Какие коллекции есть в Kotlin?

Коллекция
— это объект, содержащий в себе набор значений одного или различных типов, а также позволяющий к этим значениям обращаться и извлекать. Другими словами — это контейнер, в который вы можете помещать то, что вам нужно, а затем каким-либо образом с ним взаимодействовать. В Kotlin есть три типа коллекций:

List (список). Упорядоченная коллекция, в которой к элементам можно обращаться по их индексам. Идентичные элементы (дубликаты) могут встречаться в списке более одного раза. Примером списка является предложение: это группа слов, их порядок важен, и они могут повторяться.

Set (множество/набор). Неупорядоченная коллекция без повторяющихся значений. Примером множества является алфавит.

Map (словарь/ассоциативный список). Набор из пар "ключ-значение". Ключи уникальны и каждый из них соответствует ровно одному значению. В коллекции могут присутствовать повторяющиеся значения, но не повторяющиеся ключи. Пример — ID сотрудников и их должностей. Map не является наследником интерфейса Collection.

Два типа интерфейсов, на основе которых создаются коллекции:

1. Неизменяемый (read-only) — дают доступ только для чтения (Set, List, Map, Collection).

2. Изменяемый (mutable) — расширяет предыдущий интерфейс и дополнительно даёт доступ к операциям добавления, удаления и обновления элементов коллекции (
MutableSet, MutableList, MutableMap, MutableCollection).
Все, что вам нужно знать о Kotlin Multiplatform

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

Читать статью
Стань частью Android-комьюнити Surf

В канале Surf Android Team разработчики приложений «Лабиринт», «Магнит», «Ригла» и других делятся лучшими практиками и больными шишками из опыта работы с Kotlin, Java и нейросетями.

Вот подборка полезных постов из канала:
➡️ Как сделать Lottie-анимации
➡️ Дорожная карта Junior Android-разработчика
➡️ Как реализовать автовставку кода из SMS через SMS User Consent API

Surf активно расширяет Android-комьюнити и ждёт вас в канале, чтобы делиться интересными кейсами и быть на одной волне актуальных технологий.

🟢 Подписывайтесь по ссылке → @surf_android
Please open Telegram to view this post
VIEW IN TELEGRAM
Промежуточные (intermediate) и терминальные (terminal) операции в Sequences

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

Операции над Sequence можно разделить на две категории: промежуточные (intermediate) и терминальные (terminal).

Промежуточные операции (intermediate) — это операции, которые возвращают новую Sequence.

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

filter(predicate: (T) -> Boolean): фильтрует элементы по заданному условию и возвращает новую Sequence

map(transform: (T) -> R): преобразует каждый элемент в новый элемент типа R и возвращает новую Sequence

sortedBy(selector: (T) -> R?): сортирует элементы по заданному ключу и возвращает новую Sequence

Терминальные операции (terminal) — это операции, которые выполняются немедленно и возвращают результат (не Sequence).

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

toList(): преобразует Sequence в список

toSet(): преобразует Sequence в множество

count(): возвращает количество элементов в Sequence

forEach(action: (T) -> Unit): выполняет действие для каждого элемента Sequence

ВАЖНО: вычисления запускаются только при вызове терминальной функции (до этого момента никаких вычислений не производится).
Kotlin: взгляд изнутри — преимущества, недостатки и особенности

Всем привет! На связи Сергей Керенцев, Android-разработчик Студии Олега Чулакова на проектах Сбера.

В данной статье мы углубимся в мир Kotlin, рассмотрим его основные преимущества, недостатки и особенности. Мы обойдем такие важные аспекты, как безопасность работы с null-значениями, гибкость типизации с помощью Generics, возможности расширения функциональности с помощью extension-функций, inline-функции, а также многое другое.

Давайте начнем наше увлекательное путешествие в мир Kotlin и раскроем его потенциал!

Читать статью
Kotlin Multiplatform в ОС Аврора

В данной статье описана работа ОС Аврора с технологией Kotlin Multiplatform. Рассматривается метод подключения модуля Kotlin Multiplatform к приложению на Qt/QML. Для демонстрации было портировано уже существующие демо приложение "KMM RSS Reader". Проведены тесты производительности.

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