Идеальная серия статей для Android разработчиков, которые решили попробовать написать что-то на бэкенде с использованием Ktor.
📌Структура Ktor проекта
📌Хранение логов
📌Работа с in-memory базой
📌Миграция данных
📌Генерация документации со Swagger
📌Запуск джобов по расписанию
📌Сравнение мобильной и бэкенд разработки: архитектура, DI, тестирование
📌Структура Ktor проекта
📌Хранение логов
📌Работа с in-memory базой
📌Миграция данных
📌Генерация документации со Swagger
📌Запуск джобов по расписанию
📌Сравнение мобильной и бэкенд разработки: архитектура, DI, тестирование
Marco Gomiero
Structuring a Ktor project
SERIES: Building a backend with Ktor
Part 1: Structuring a Ktor project Part 2: How to persist Ktor logs Part 3: How to use an in-memory database for testing on Ktor Part 4: How to handle database migrations with Liquibase on Ktor Part 5 Generate API documentation…
Part 1: Structuring a Ktor project Part 2: How to persist Ktor logs Part 3: How to use an in-memory database for testing on Ktor Part 4: How to handle database migrations with Liquibase on Ktor Part 5 Generate API documentation…
📆Каждый день я стараюсь публиковать хотя бы один классный и полезный материал про Android разработку. За месяц их набегает несколько десятков, и ориентироваться в них не всегда легко. Чтобы облегчить вам задачу, я периодически публикую дайджест самых популярных постов, разбитых на категории.
📰Новости Kotlin и JetBrains
Релиз Kotlin 1.7.0
Детали обновления роадмапа Kotlin
Новый экспериментальный UI для IntelliJ IDEA
😛Языки
Роман Елизаров: Language Design in the Real World
Как работает Project Loom в Java
🧱Архитектурные подходы
Какие типы модулей встречаются в многомодульных проектах
Server-Driven UI от Альфы
Что нового в Koin 3.2
🎁Прочее
Как устроиться Staff Android инженером
Ферма девайсов от Uber
🕵️♀️Кстати, у меня есть еще один канал, на который стоит подписаться тем, кто хочет расти в управление командой – TechLead Good Reads. Держите несколько интересных материалов оттуда на закуску!
Как устроена инженерная культура в Facebook
Как SkyEng решал проблему некомпетентных тимлидов
15 ментальных моделей для принятий лучших решений
Как проводить крутые и полезные собеседования без кода
Если дайджест вам понравился – ставьте ❤️, 👍 и 🔥. Благодаря этому я пойму, что собирал его не зря! А если у вас будут конкретные предложения по его улучшению – смело пишите в комментарии!
#digest
📰Новости Kotlin и JetBrains
Релиз Kotlin 1.7.0
Детали обновления роадмапа Kotlin
Новый экспериментальный UI для IntelliJ IDEA
😛Языки
Роман Елизаров: Language Design in the Real World
Как работает Project Loom в Java
🧱Архитектурные подходы
Какие типы модулей встречаются в многомодульных проектах
Server-Driven UI от Альфы
Что нового в Koin 3.2
🎁Прочее
Как устроиться Staff Android инженером
Ферма девайсов от Uber
🕵️♀️Кстати, у меня есть еще один канал, на который стоит подписаться тем, кто хочет расти в управление командой – TechLead Good Reads. Держите несколько интересных материалов оттуда на закуску!
Как устроена инженерная культура в Facebook
Как SkyEng решал проблему некомпетентных тимлидов
15 ментальных моделей для принятий лучших решений
Как проводить крутые и полезные собеседования без кода
Если дайджест вам понравился – ставьте ❤️, 👍 и 🔥. Благодаря этому я пойму, что собирал его не зря! А если у вас будут конкретные предложения по его улучшению – смело пишите в комментарии!
#digest
Telegram
Android Good Reads
Вышел Kotlin 1.7.0!
- K2 компилятор стал доступен для JVM проектов и показывает 2.2 ускорение компиляции
- Новая инкрементальная компиляция в Gradle, которая существенно ускоряет билд
- Underscore operator for type arguments
- Стабилизированы opt-in аннотации…
- K2 компилятор стал доступен для JVM проектов и показывает 2.2 ускорение компиляции
- Новая инкрементальная компиляция в Gradle, которая существенно ускоряет билд
- Underscore operator for type arguments
- Стабилизированы opt-in аннотации…
Рефакторинг крупного проекта – всегда интересная история. Яндекс Музыка рассказывает, как они подошли к переписыванию ядра приложения, как прорабатывали его архитектуру и постепенно раскатывали на пользователей.
Хабр
Рефакторинг приложения с десятилетним легаси за три месяца. Опыт Яндекс Музыки
Однажды ты просыпаешься и понимаешь: избыточность компонентов и рассинхронизация в твоём приложении начинают вредить пользователям. Однажды ты смотришь на написанное давным-давно ядро, плачешь...
Подборка советов по тому, как упростить свои рутинные задачи в Android Studio. Вот некоторые из них:
🙈Убрать из индексации автоматически генерируемые файлы
📝Начать использовать Scratches для быстрой проверки идей
🔀Научиться редактировать сразу несколько строк кода
📚Использовать историю буфера обмена
🕖Пользоваться локальной историей файла для отката последних изменений
🙈Убрать из индексации автоматически генерируемые файлы
📝Начать использовать Scratches для быстрой проверки идей
🔀Научиться редактировать сразу несколько строк кода
📚Использовать историю буфера обмена
🕖Пользоваться локальной историей файла для отката последних изменений
adambennett.dev
Things you can do in Android Studio
A disorganised list of the features in Android Studio/IntelliJ that keep me productive
Статья про использование подгружаемых с сервера Lua скриптов в Android приложении, с интеропом в обе стороны.
Medium
Enable Lua Scripting On Android App
Enable remote scripting control over an Android App
В Java планируют завезти новый Classfile Processing API, который упростит доступ к чтению и записи классфайлов, в том числе с учетом того, что их формат каждые полгода дорабатывается и меняется.
В версии 1.2.0-beta03 библиотеки Compose Animation добавили много новых easing functions для анимаций. Держите подробную статью про то, как они работают и как реализовать свою кастомную функцию.
Medium
Easing in to Easing Curves in Jetpack Compose 🎢
Learn how to create and use custom easing functions in Compose
Вышла первая стабильная версия Koin Annotations, работающая поверх KSP. Получилась более легковесная альтернатива Koin DSL.
blog.cloud-inject.io
Blog - Koin - Cloud-Inject.io
Keep yourself informed about the latest developments in the Koin framework and Cloud-Inject Observability Dev platform directly from the creators.
В Kotlin 1.7.0 добавили возможность генерировать билд репорты после каждой сборки проекта. Они содержат подробную информацию о том, из каких этапов состояла компиляция, какой этап сколько времени занимал, и какие проблемы были обнаружены по пути. Фича супер-полезна в тех случаях, когда сборка кажется медленной, но вы не знаете, куда конкретно копать.
Вышел релиз kotlinx-datetime 0.4.0. Главное нововведение – появление класса
LocalTime,
который позволяет удобно работать со временем в рамках одного дня.GitHub
Release v0.4.0 · Kotlin/kotlinx-datetime
Add the LocalTime class for representing time-of-day (#57). Thank you, @bishiboosh!
Provide LocalTime#toSecondOfDay, LocalTime.fromSecondOfDay, and various other functions for compact representatio...
Provide LocalTime#toSecondOfDay, LocalTime.fromSecondOfDay, and various other functions for compact representatio...
Команда Касперского делится своим опытом использования Baseline profiles для оптимизации перфоманса. Помимо итоговых результатов, статья дает хороший обзор принципов работы этих профилей.
Хабр
Улучшаем производительность android-приложения с помощью Baseline profiles
Производительность важна для формирования положительного пользовательского опыта использования приложения, поэтому разработчики стремятся ускорить работу своих программ. Для приложений в области...
Когда вы дизайните новую библиотеку, архитектуру приложения или просто интерфейс класса, всегда надо пытаться представить, как его потенциальные пользователи могут косячить с его использованием. В статье разбираются примеры того, как хорошие библиотеки оказывались вредными из-за того, что не учитывали тенденцию людей ошибаться, и различные подходы к тому, как сделать ваш дизайн устойчивым к ошибкам.
Dan Lew Codes
Maintaining Software Correctness
This article is a write-up of a talk I gave at MinneBar 2022. Instead of reading this, you could also watch the recording or view the slides.
The title of this talk is "maintaining software correctness." But what exactly do I mean by “correctness”? Let me…
The title of this talk is "maintaining software correctness." But what exactly do I mean by “correctness”? Let me…
Про постепенный рефакторинг приложения с Fragments на Compose с top-down подходом, при котором на Compose переводятся сначала контейнеры, а уже потом – отдельные компоненты.
Medium
Load Fragments in Jetpack Compose: Beyond What Google Taught
An experience from unworkable solutions to a solution that can load, pop, and restore fragments as needed.
Челленджи Android-разработчика: для джуна, мидла, сеньора
CTO FUNCORP Дима Васильев собрал топ-3 своих воспоминаний:
Джуном я получил первую серьезную задачу: обеспечить почти мгновенный показ ролика в приложении с любого места. С Faststart никто не работал, а реализация должна поддерживать старый тип отдачи контента. В итоге — видео у миллионов пользователей работает в 6 раз быстрее.
Дорос до миддла. Задача: улучшить алгоритм загрузки контента. Нужно написать с нуля логику кэширования, доскачивания и предзагрузки файлов. В итоге — число ретраев у пользователей снижается почти втрое.
В роли сеньора делал глубокую техническую аналитику, так как приложение монетизируется через рекламу. Android Vitals, Firebase, Fabric, Mixpanel не умели того, что нужно. Пишем свое и попутно оптимизируем: нативные крэши уменьшились в 10 раз, out of memory — в 15.
Если у тебя за плечами тоже есть сеньорские челленджи, обрати внимание на вакансию Android-разработчика от FUNCORP:
Senior Android Developer
CTO FUNCORP Дима Васильев собрал топ-3 своих воспоминаний:
Джуном я получил первую серьезную задачу: обеспечить почти мгновенный показ ролика в приложении с любого места. С Faststart никто не работал, а реализация должна поддерживать старый тип отдачи контента. В итоге — видео у миллионов пользователей работает в 6 раз быстрее.
Дорос до миддла. Задача: улучшить алгоритм загрузки контента. Нужно написать с нуля логику кэширования, доскачивания и предзагрузки файлов. В итоге — число ретраев у пользователей снижается почти втрое.
В роли сеньора делал глубокую техническую аналитику, так как приложение монетизируется через рекламу. Android Vitals, Firebase, Fabric, Mixpanel не умели того, что нужно. Пишем свое и попутно оптимизируем: нативные крэши уменьшились в 10 раз, out of memory — в 15.
Если у тебя за плечами тоже есть сеньорские челленджи, обрати внимание на вакансию Android-разработчика от FUNCORP:
Senior Android Developer
Сталкивались с тем, что информация о том, почему было принято то или иное архитектурное решение, со временем теряется? Держите подробную статью про Architecture Decision Records – практику записей и хранения ключевых архитектурных решений.
Medium
The Ultimate Guide to Architectural Decision Records
Introduction to ADRs with examples, templates, and managing tools
🔥 AvitoTech ищет Android-разработчиков…
…сразу в три команды кластера mobile!
Вот чем предстоит в них заниматься:
🏄♂️ Команда Speed: развивать системы сборки тестовый фреймворк, тестовый раннер, CI/CD-инфру и инструменты для автотестирования;
🎨 Команда Mobile Design System: работать над консистентностью UI, строить компонентную архитектуру, создавать элементы интерфейса и развивать backend-driven UI;
🏗 Команда Mobile Architecture: упрощать жизнь продуктовым разработчикам через создание гибкой, расширяемой архитектуры мобильных приложений.
Залетайте на сайт за подробностями: bit.ly/3zV9pl6
…сразу в три команды кластера mobile!
Вот чем предстоит в них заниматься:
🏄♂️ Команда Speed: развивать системы сборки тестовый фреймворк, тестовый раннер, CI/CD-инфру и инструменты для автотестирования;
🎨 Команда Mobile Design System: работать над консистентностью UI, строить компонентную архитектуру, создавать элементы интерфейса и развивать backend-driven UI;
🏗 Команда Mobile Architecture: упрощать жизнь продуктовым разработчикам через создание гибкой, расширяемой архитектуры мобильных приложений.
Залетайте на сайт за подробностями: bit.ly/3zV9pl6
avito.tech
Avito Cluster MOBILE
Присоединяйся к Avito Cluster Mobile. Развивай вместе с нами мобильную платформу в Авито, с помощью разработки и популяризации:общих архитектурных подходов, стандартов качества кода и поддержки общих платформенных библиотек.
Оффер в Яндекс за 2 дня 🚀
9-10 июля Яндекс проводит Weekend Offer для мобильных разработчиков, участники которого смогут присоединиться к командам Маркета, Еды, Такси и многих других сервисов.
Если у вас есть опыт коммерческой разработки на iOS, Android, Flutter от 3 лет — регистрируйтесь на сайте и решайте задачи предварительного этапа.
9 июля две онлайн-секции с кодом и уже на следующий день лучшие участники получат офферы от Яндекса.
9-10 июля Яндекс проводит Weekend Offer для мобильных разработчиков, участники которого смогут присоединиться к командам Маркета, Еды, Такси и многих других сервисов.
Если у вас есть опыт коммерческой разработки на iOS, Android, Flutter от 3 лет — регистрируйтесь на сайте и решайте задачи предварительного этапа.
9 июля две онлайн-секции с кодом и уже на следующий день лучшие участники получат офферы от Яндекса.
Оффер от Яндекса за выходные
9-10 июля Яндекс проводит Weekend Offer для мобильных разработчиков — мероприятие, на котором можно получить оффер от Яндекса за 2 дня.
Вышла библиотека Kotlin DataFrame, основная задача которой – удобный импорт структурированных данных из CSV/JSON и других форматов и предоставление DSL для операций над ними. Библиотека пригодится как тем, кто много работает с анализом данных, так и тем, кому просто пришлось разбирать большой и сложный JSON ответ от сервера.
The JetBrains Blog
Kotlin DataFrame Preview | The Kotlin Blog
TL;DR: We at the Kotlin team have developed a Kotlin library for data frames. Today we’re releasing its first public preview version. It provides a readable and powerful DSL for data wrangling and i/o
Один из необходимых скиллов для разработчика – умение учиться. Надеюсь, вы проходили тот самый курс “Learn how to learn” на Coursera, или читали книгу его автора, Барбары Оакли, “Думай как математик”. Если нет – обязательно положите себе это в бэклог, получите кучу пользы и удовольствия.
Еще один крутой способ прокачать этот навык – прийти на конференцию Podlodka Soft Skills Crew. В новом сезоне мы расскажем, как выстроить эффективный подход к самообучению – понять свои цели, построить план по их достижению, выбрать подходящие инструменты и встроить это в свою жизнь на уровне привычки. Все это присыпано воркшопами и разбором ваших собственных проблем, так что после конференции вы выйдете с планом, подходящим именно вам!
👉Конференция начинается 11 июля, залетайте с промокодом
Еще один крутой способ прокачать этот навык – прийти на конференцию Podlodka Soft Skills Crew. В новом сезоне мы расскажем, как выстроить эффективный подход к самообучению – понять свои цели, построить план по их достижению, выбрать подходящие инструменты и встроить это в свою жизнь на уровне привычки. Все это присыпано воркшопами и разбором ваших собственных проблем, так что после конференции вы выйдете с планом, подходящим именно вам!
👉Конференция начинается 11 июля, залетайте с промокодом
droidgr_learn2learn
!Coursera
Learning How to Learn: Powerful mental tools to help you master tough subjects
Unlock powerful learning techniques used by experts across disciplines. Discover how the brain learns, memory strategies, and ways to overcome procrastination. Enhance your skills with practical tips and research-backed methods. Available in multiple languages.
Вышел Kotlin 1.7.10. Это – хотфиксный релиз, исправляющий несколько мажорных проблем в 1.7.0. Полный список – тут.
GitHub
Release Kotlin 1.7.10 · JetBrains/kotlin
Changelog
Compiler
KT-52702 Invalid locals information when compiling kotlinx.collections.immutable with Kotlin 1.7.0-RC2
KT-52892 Disappeared specific builder inference resolution ambiguity error...
Compiler
KT-52702 Invalid locals information when compiling kotlinx.collections.immutable with Kotlin 1.7.0-RC2
KT-52892 Disappeared specific builder inference resolution ambiguity error...