🚀 Яндекс открыл регистрацию на Yandex Cup — чемпионат по программированию с финалом в Стамбуле и призовым фондом 12 млн ₽!
📱 Направление «Мобильная разработка» ждёт iOS- и Android-разработчиков. Будет 5 призовых мест:
🥇 500 000 ₽
🥈 400 000 ₽
🥉 300 000 ₽
🏅 200 000 ₽
🏅 100 000 ₽
📅 Важно:
⏺️ 20–29 октября — пробный тур (знакомство с задачами)
⏺️ 2 ноября — квалификация (отбор 180 финалистов)
⏺️ 5–7 декабря — офлайн-финал в Стамбуле 🎉
👨💻 Финалисты получат шанс пройти собеседование в Яндекс по упрощённой схеме.
Для специалистов — это возможность посоревноваться с лучшими программистами со всего мира и проверить свои навыки мобильной разработки.
🔗 Регистрируйтесь до 29 октября
Успейте заявить о себе! 💡
📱 Направление «Мобильная разработка» ждёт iOS- и Android-разработчиков. Будет 5 призовых мест:
🥇 500 000 ₽
🥈 400 000 ₽
🥉 300 000 ₽
🏅 200 000 ₽
🏅 100 000 ₽
📅 Важно:
👨💻 Финалисты получат шанс пройти собеседование в Яндекс по упрощённой схеме.
Для специалистов — это возможность посоревноваться с лучшими программистами со всего мира и проверить свои навыки мобильной разработки.
🔗 Регистрируйтесь до 29 октября
Успейте заявить о себе! 💡
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🤯4🔥2❤1
❗️ Все новые функции пока экспериментальные — их использование требует аннотаций или специальных флагов компилятора.
val Any.isHelloString: Boolean
get() {
contract { returns(true) implies (this@isHelloString is String) }
return "hello" == this
}
fun decode(encoded: String?): String? {
contract { (encoded != null) implies (returnsNotNull()) }
if (encoded == null) return null
return java.net.URLDecoder.decode(encoded, "UTF-8")
}Документация
fun <T> T.alsoIf(
condition: Boolean,
block: (T) -> Unit,
): T {
contract {
// Объявляет, что лямбда будет вызвана не более одного раза
callsInPlace(block, InvocationKind.AT_MOST_ONCE)
// Объявляет, что условие считается истинным внутри лямбды
condition holdsIn block
}
if (condition) block(this)
return this
}
fun <T, F : Failure> Result<T, F>.isHttpError(): Boolean {
contract {
returns(true) implies (this@isHttpError is Result.Failed<Failure.HttpError>)
}
return this is Result.Failed && this.failure is Failure.HttpError
}✨ Зачем это нужно
Контракты помогают компилятору и IDE лучше понимать поведение функций и условий в коде. Это значит: меньше лишних !!, меньше кастов типов, больше подсказок от IDE и меньше багов на рантайме. По сути, вы даёте компилятору «дополнительные знания», и он становится умнее при анализе вашего кода.
#kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍47🔥9
Forwarded from Android Broadcast
🔥 Вышел JUnit 6 с поддержкой Kotlin
Прошло более 8 лет с релиза JUnit 5 (10 сентября 2017 года) и вот новая мажорная версия популярного фреймворка для написания Unit тестов в Java
Ключевые изменения в новой версии:
👉 Поддержка Java 17 и Kotlin 2.2+
👉 Переход на аннотации JSpecify
🏝 Поддержка корутин из Kotlin
👉 Поддержка Java Flight Recorder (JFR) из коробки
👉 Поддержка отмены выполнения теста
👉 Удалено deprecated API
👉
#тестирование #kotlin
Прошло более 8 лет с релиза JUnit 5 (10 сентября 2017 года) и вот новая мажорная версия популярного фреймворка для написания Unit тестов в Java
Ключевые изменения в новой версии:
👉 Поддержка Java 17 и Kotlin 2.2+
👉 Переход на аннотации JSpecify
👉 Поддержка Java Flight Recorder (JFR) из коробки
👉 Поддержка отмены выполнения теста
👉 Удалено deprecated API
👉
--fail-fast режим для запуска тестов из терминала#тестирование #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥42👍7
Используете Amper от JetBrains ?
Anonymous Poll
60%
Что это?
32%
Не использую
1%
Использую
2%
Попробовал(а). Не зашло
1%
Другой вариант
4%
Не участвую
👍5
#kotlin #kmp #xcode
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥26🎉6👍3
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥9👍4🤔2
🎉 Вышел Koin Annotations 2.2 - привычный DI с кодогенраций на базе Koin с проверкой графа во время компиляции кода
Основные изменения:
💉 Совместимость с JSR-330 - набор API для работы с DI в java (Dagger тоже поддерживает его). Переход между DI фреймворками с поддержкой JSR-330 станет проще. Например, с Dagger или Hilt 😁
💉 Популярные Scope прямо из коробки:
💉 Умная конфигурация: можно пометить модуль аннотацией
💉 Встроенный в фреймворк мониторинг скорости работы компонентов, используя интеграцию с Kotzilla Platform. Добавляете аннотацию @Monitor и автоматически расставятся все трейсинги вызовов методов
🚀 Улучшили скорость работы процессора кода, уменьшили расход памяти, сделали больше проверок при работе процессора. Вообщем поработали по всем направлениям для улучшения работы
Koin Annotations - это хорошая альтернатива тем, кто хочет уйти с Dagger или Hilt, либо нужна поддержка KMP, а переписывать весь код не хочется. С версией 2.2 становится только лучше и проще миграция. Но всё также от кодогенерации не уйти, а значит влияние на время сборки проекта.
#kotlin #koin #kmp #java
Основные изменения:
@ActivityScope, @ActivityRetainedScope, @FragmentScope, @ViewModelScope. Что-то еще больше пахнет Dagger Hilt@Configuration, а объект помеченный @KoinApplication найдет их при компиляции и включит в граф. Работает в многомодульных проектах@Module
@Configuration
class DatabaseModule {
@Singleton fun database() = ...
}
@KoinApplication
object ProductionApp
fun main() {
// Функция startKoin() сгенерируется
ProductionApp.startKoin()
}
@Monitor
@Single
class UserService(private val repository: UserRepository)
🚀 Улучшили скорость работы процессора кода, уменьшили расход памяти, сделали больше проверок при работе процессора. Вообщем поработали по всем направлениям для улучшения работы
Koin Annotations - это хорошая альтернатива тем, кто хочет уйти с Dagger или Hilt, либо нужна поддержка KMP, а переписывать весь код не хочется. С версией 2.2 становится только лучше и проще миграция. Но всё также от кодогенерации не уйти, а значит влияние на время сборки проекта.
#kotlin #koin #kmp #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍27❤1
Koog, фреймворк для разработки агентов на Kotlin от JetBrains, обзавёлся возможность коммуникации между Агентами, для создания мультиагенстких систем. Делается это с помощью протокола A2A (Agent2Agent)
Пример реализации на
#ai #agent
Please open Telegram to view this post
VIEW IN TELEGRAM
👍24🔥8🤔1
Forwarded from Aurora Developers
Kotlin Multiplatform снова расширяет свои возможности. Опубликован проект Aurora KInterop выводящий на новый уровень поддержку KMP в ОС Аврора.
Проект Aurora KInterop позволяет взаимодействовать Kotlin с операционной системой Аврора для выполнения различных платформа зависимых задач. В проекте 16 независимых друг от друга библиотек Kotlin Multiplatform для различных задач.
👉 Battery Info.
👉 Camera Info.
👉 Connectivity Info.
👉 Device Info.
👉 Local Notification.
👉 Location Info.
👉 Package Info.
👉 Path Info.
👉 Sensors Info.
👉 Share Data.
👉 Shared Pref.
👉 Shared Pref Secure.
👉 Theme Info.
👉 Uri Launcher.
👉 Vibration.
👉 WakeLock.
В документации можно найти подробное описание библиотек проекта, способы их подключения, примеры использования и демонстрационное приложение которые наглядно показывает работу всех 16-ти библиотек проекта. Приложение опубликовано и доступно для самостоятельного изучения.
🔗 https://omprussia.gitlab.io/kmp/docs
Мы продолжаем развивать поддержку Kotlin Multiplatform в операционной системе Аврора. Новый проект значительно расширяет способы использования KMP в ОС Аврора. Проекты открыты, будем рады вашим issue и мерж-реквестам.
🔗 https://gitlab.com/omprussia/kmp
@aurora_devs
Проект Aurora KInterop позволяет взаимодействовать Kotlin с операционной системой Аврора для выполнения различных платформа зависимых задач. В проекте 16 независимых друг от друга библиотек Kotlin Multiplatform для различных задач.
👉 Battery Info.
👉 Camera Info.
👉 Connectivity Info.
👉 Device Info.
👉 Local Notification.
👉 Location Info.
👉 Package Info.
👉 Path Info.
👉 Sensors Info.
👉 Share Data.
👉 Shared Pref.
👉 Shared Pref Secure.
👉 Theme Info.
👉 Uri Launcher.
👉 Vibration.
👉 WakeLock.
В документации можно найти подробное описание библиотек проекта, способы их подключения, примеры использования и демонстрационное приложение которые наглядно показывает работу всех 16-ти библиотек проекта. Приложение опубликовано и доступно для самостоятельного изучения.
Мы продолжаем развивать поддержку Kotlin Multiplatform в операционной системе Аврора. Новый проект значительно расширяет способы использования KMP в ОС Аврора. Проекты открыты, будем рады вашим issue и мерж-реквестам.
@aurora_devs
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔33🔥28👍9🤯1
Forwarded from Kotlin Adept Notes (Alex Panov)
Материалы для углублённого изучения KMP
По мотивам вчерашнего собеса хочу посоветовать классные доклады, которые помогут вам глубже разобраться в принципах работы Kotlin Multiplatform и Kotlin Native, а также лучше понять нюансы интеропа со Swift-кодом.
На английском:
🔘 ЖЦ объектов в Kotlin/Native
🔘 Процесс компиляции в Kotlin/Native, отличия статических и динамических фреймворков
🔘 Проблемы текущего интеропа и возможные пути улучшения
🔘 Разница между Kotlin и Swift concurrency
🔘 Принцип работы Swift Export
На русском:
🔘 Совместная работа Kotlin/Native GC и ARC в Swift
🔘 iOS Memory Management
#KMP
По мотивам вчерашнего собеса хочу посоветовать классные доклады, которые помогут вам глубже разобраться в принципах работы Kotlin Multiplatform и Kotlin Native, а также лучше понять нюансы интеропа со Swift-кодом.
На английском:
На русском:
#KMP
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥23❤3👍1🤔1
👉 Новый формат описания стратегии агента - non-graph API. Теперь всё можно делать напрямую в Kotlin без работы с графами
👉 Улучшения сохранения и восстановления состояния без потери контекста
👉 Улучшения Tool API
👉 AIAgentService - способ управления несколькими агентами
#kotlin #ии #ai
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍2
Если коротко - использовать non-graph (функциональные) стратегии стоит в тех случаях, когда приоритетом является простота, скорость прототипирования и отсутствие необходимости в сложной инфраструктуре:
👉 Задача ограничена и хорошо определена
👉 Важно быстро создать и протестировать идею
👉 Нет требований к сохранению состояния и отказоустойчивости
👉 Не требуется сложная визуализация и наблюдаемость
🔗 Альтернативная ссылка
#kotlin #ai #ии
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍3
Media is too big
VIEW IN TELEGRAM
0:00 Обзор Kotlin 2.2.20 и 2.2.21
0:31 Проверка полноты с учётом потока данных (Dataflow-based exhaustiveness checks)
2:42 Возвраты в телах выражений
3:50 Улучшенные контракты Kotlin
6:23 Другие изменения: обобщённые типы в блоках catch и invokedynamic-выражения
7:11 Обновления общего API для атомарных операций
9:05 Новая функция копирования массивов
10:15 Kotlin/Wasm в статусе Beta и отладка в браузере
11:57 Экспорт в Swift доступен по умолчанию (экспериментально)
14:21 Меньший размер бинарных файлов
15:12 Обновления документации
15:30 В релизе есть и другие изменения!
#kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2❤1
Forwarded from Android Broadcast
Совсем скоро пройдет осенней Mobius, который традиционно собирает ведущих экспертов из топовых компаний русскоязычного мобильного сообщества
Я выбрал для вас доклады, которые точно заслуживают внимания 👇
🏗 AntiSOLID - набор антиприципов, которые помогут вам писать живой, поддерживаемый и вменяемый код. Альтернатива SOLID
👉 Между offline и online: магия согласованного кеша
🛡 Сценарии атак мобильных приложений глазами хакера - всем рекомендую послушать и пообщаться со спикером, чтобы лучше понять как взламывают приложения и думать прозащиту
Доклады — лишь часть атмосферы Mobius. Вас ждут стенды партнёров с активностями, живое общение с экспертами и множество новых знакомств, которые могут круто повлиять на карьеру.
Оффлайн-формат однозначно стоит того, чтобы быть там лично!
Забрать свой билет можно здесь. С промокодом
BROADCAST он будет на 15% дешевле.Реклама. ООО «Джуг Ру Груп». ИНН 7801341446
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
Розыгрыш книг "Kotlin Multiplatform на практике" от Анны Жарковой @prettygeeknotes с автографом автора 🔥 Книга позволяет погрузиться в KMP с нуля и расскажет как мигрировать уже существующие проекты!
Для участия в розыгрыше надо подписаться на каналы🔨 @compose_broadcast и 🏝 @kotlin_broadcast и нажать "Участвую!"
К сожалению, с прошлым розыгрышем произошёл сбой и надо участвовать заново
Для участия в розыгрыше надо подписаться на каналы
К сожалению, с прошлым розыгрышем произошёл сбой и надо участвовать заново
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍2