Приготовили для вас дайджест по актуальному из мира iOS, Android.
Знакома ситуация, когда кнопка не работает, приложение виснет, анимации тормозят, но при этом нет никаких ошибок на экране? Можно часами играть в детектива, гадая по UI и строя догадки, что пошло не так. А можно за несколько минут найти настоящего преступника — ведь iOS щедро оставляет улики в виде логов. Нужно лишь знать, где их искать. Секрет — в грамотном выборе способа, как собрать доказательства.
Эффекты глитча (глюка, сбоя) — неотъемлемая часть научно-фантастических фильмов и киберпанк-игр. В этой статье мы увидим, как легко реализовать этот эффект в Jetpack Compose.
Когда пользователь открывает приложение, нажимает на кнопку — и ничего не происходит несколько секунд, Android начинает считать, что “приложение не отвечает”. Через 5 секунд на главном потоке система показывает диалог: “Приложение не отвечает. Закрыть?” Это и есть ANR (Application Not Responding).
Это плановый, «прикладной» апдейт, который делает анализатор умнее, CLI — ощутимо быстрее, pub — точнее в разрешении зависимостей, а также приносит официальный MCP-сервер для интеграции Dart/Flutter с ИИ-ассистентами. В статье — только существенное, с примерами и пошаговыми рекомендациями
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Основной конструктор не может в себе содержать какую-либо логику по инициализации свойств (исполняемый код). Он предназначен исключительно для объявления свойств и присвоения им полученных значений. Поэтому вся логика может быть помещена в блок инициализации — блок кода, обязательно выполняемый при создании объекта независимо от того, с помощью какого конструктора этот объект создаётся. Помечается он словом init.
class Person(val name: String, var age: Int) {
var id: Int = 0
// require выдает ошибку с указанным текстом, если условие в левой части false
init {
require(name.isNotBlank(), { "У человека должно быть имя!" })
require(age > -1, { "Возраст не может быть отрицательным." })
}
constructor(name: String, age: Int, id: Int) : this(name, age) {
if (id > 0) this.id = id * 2
}
}По сути блок инициализации — это способ настроить переменные или значения, а также проверить, что были переданы допустимые параметры. Код в блоке инициализации выполняется сразу после создания экземпляра класса, т.е. сразу после вызова основного конструктора. В классе может быть один или несколько блоков инициализации и выполняться они будут последовательно.
class Person(val name: String, var age: Int) {
// сначала вызывается основной конструктор и создаются свойства класса
// далее вызывается первый блок инициализации
init {
...
}
// после первого вызывается второй блок инициализации
init {
...
}
// и т.д.
}Блок инициализации может быть добавлен, даже если у класса нет основного конструктора. В этом случае его код будет выполнен раньше кода вторичных конструкторов.
#буст #MiddlePath #Kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
🧠 Готовишься к собесам, а ноутбук еле тянет IDE?
Самое время прокачать скиллы и апгрейднуть железо!
Proglib Academy разыгрывает MacBook Pro 14 (M3 Pro, 36 GB, 1 TB SSD) 💻
Купи любой наш курс до 15 ноября → пройди 2 недели обучения → напиши куратору #розыгрыш. Всё, ты в игре!
📚 Среди курсов:
▫️ Алгоритмы и структуры данных — топ для подготовки к собесам в Яндекс и FAANG.
▫️ Архитектуры и шаблоны проектирования — чтобы думать как senior.
▫️ Python, математика для DS, основы IT и другие направления.
👉 Принять участие
Самое время прокачать скиллы и апгрейднуть железо!
Proglib Academy разыгрывает MacBook Pro 14 (M3 Pro, 36 GB, 1 TB SSD) 💻
Купи любой наш курс до 15 ноября → пройди 2 недели обучения → напиши куратору #розыгрыш. Всё, ты в игре!
📚 Среди курсов:
▫️ Алгоритмы и структуры данных — топ для подготовки к собесам в Яндекс и FAANG.
▫️ Архитектуры и шаблоны проектирования — чтобы думать как senior.
▫️ Python, математика для DS, основы IT и другие направления.
👉 Принять участие
В проектах на SwiftUI тело
View может быстро разрастись: десятки вложенных VStack/HStack, логика отображения, стили — всё в одном месте. Вот три практики, которые помогут сделать код более понятным, гибким и удобным в сопровождении.
Если часть интерфейса имеет собственное назначение — вынеси её в отдельный
struct-View:struct ArticleRow: View {
let article: Article
var body: some View {
HStack { … }
}
}Затем:
ForEach(articles, id: \.url) { article in
ArticleRow(article: article)
}Это делает главный
View более “обзорным” и облегчает повторное использование. Когда видишь дублирования стилей, вынеси их:
struct CardStyle: ViewModifier {
func body(content: Content) -> some View {
content
.padding()
.background(Color(.secondarySystemBackground))
.cornerRadius(8)
}
}
extension View {
func cardStyle() -> some View {
modifier(CardStyle())
}
}Теперь:
ArticleRow(article: article)
.cardStyle()
Так ты централизуешь “язык дизайна” и можешь менять стиль в одном месте.
Если повторяются шаблоны (например, “заголовок секции”), можно сделать расширение:
extension View {
func sectionHeader(_ noscript: String) -> some View {
VStack(alignment: .leading, spacing: 4) {
Text(noscript)
.font(.noscript3)
.bold()
self
}
}
}Пример:
VStack {
ForEach(articles, id: \.url) { article in
ArticleRow(article: article)
}
}
.sectionHeader("Articles")Такие расширения уменьшают вложенность и делают код декларативнее.
Если вы не уверены, стоит ли что-то извлекать, спросите:
Есть ли у этого элемента пользовательского интерфейса чёткое назначение и возможность повторного использования?
View или ViewModifier.Цель состоит не в том, чтобы сократить количество строк кода, а в том, чтобы повысить ясность и возможность повторного использования для улучшения архитектуры SwiftUI.
#АрхитектурныйКод #SeniorView #Swift
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3🤝1
Каждый разработчик хоть раз видел этот шедевр:
// incerment i
i += 1
или
// TODO: fix later
который висит в коде уже третий год.
Одни считают, что комментарии — это добро и забота о команде. Другие уверены — если код требует пояснений, значит, его надо переписать.
А ты как думаешь?
❤️ — Пишу комментарии, я не зверь
👍 — Код должен говорить сам за себя
🤝 — Комментарии? Только TODO и сарказм
#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍10
Middle iOS Developer — от 300 000₽, удалёнка
Flutter разработчик (Middle) — от 1600 до 2240 $, удалёнка
Разработчик мобильных приложений Android/iOS — гибрид (Москва)
iOS-разработчик в Мессенджер — гибрид (Москва, Санкт-Петербург)
Senior Flutter Developer — до 350 000 ₽, гибрид (Москва, Санкт-Петербург)
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Доклад о том, как в Яндексе развивают SDK для рекламной монетизации. Решением пользуются тысячи приложений, и команде важна стабильная работа продукта.
В докладе спикер:
• Рассказал, почему работают с разными видами тестов и какие используют.
• Объяснил, как погружаются в байт-код и анализируют стек-трейсы, чтобы искать ошибки.
• Рассмотрел инструменты мониторинга — как следят за метриками, какие оповещения для них используют.
• Поделился опытом, как безопасно внедрять новые функции.
• Показал, как сокращают количество ошибок.
• Особое внимание уделил различиям между разработкой SDK и мобильных приложений и рассказал, как они влияют на решения.
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Please open Telegram to view this post
VIEW IN TELEGRAM
😁8
⚡️ Команда дня:
Хочешь понять, какие зависимости твоего проекта устарели — и стоит ли их обновлять? Вот команда, которая быстро всё покажет:
📌 Что делает:
— Проверяет все пакеты в
— Показывает текущие, доступные и последние версии библиотек
— Помогает понять, где можно безопасно обновиться
Пример вывода:
👀 Полезно, когда:
— Готовишь проект к релизу и хочешь убедиться, что всё актуально
— Нужно проверить, не тянет ли зависимость старые версии других пакетов
— Хочешь поддерживать проект «в форме» 💪
💡 Совет:
Чтобы обновить всё возможное, просто выполни:
А вы как часто обновляете зависимости в своих проектах?💬
🐸 Библиотека мобильного разработчика
#буст #MiddlePath
flutter pub outdatedХочешь понять, какие зависимости твоего проекта устарели — и стоит ли их обновлять? Вот команда, которая быстро всё покажет:
flutter pub outdated
— Проверяет все пакеты в
pubspec.yaml— Показывает текущие, доступные и последние версии библиотек
— Помогает понять, где можно безопасно обновиться
Пример вывода:
Package Current Upgradable Resolvable Latest
http 1.2.0 1.3.0 1.3.0 1.3.0
provider 6.0.0 6.1.0 6.1.0 7.0.0
— Готовишь проект к релизу и хочешь убедиться, что всё актуально
— Нужно проверить, не тянет ли зависимость старые версии других пакетов
— Хочешь поддерживать проект «в форме» 💪
Чтобы обновить всё возможное, просто выполни:
flutter pub upgrade --major-versions
А вы как часто обновляете зависимости в своих проектах?
#буст #MiddlePath
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🥱1
🎁 Конкурс от Proglib Academy!
Кстати, если кто-то ещё не в курсе — у нас тут раздают MacBook Pro 14.
Да-да, не шутка, настоящий, железный, с M3 Pro
Но! Чтобы успеть пройти 2 недели обучения к 15 ноября, курс нужно взять до конца октября — и сейчас на всё скидка 40%.
Чтобы поучаствовать, нужно:
1️⃣ Покупаешь любой курс до конца октября;
2️⃣ Проходишь 2 недели обучения к 15 ноября;
3️⃣ Написать куратору в чат #розыгрыш.
До 15 ноября, потом всё — поезд (и макбук) уйдёт.
👉 Участвовать в розыгрыше
Кстати, если кто-то ещё не в курсе — у нас тут раздают MacBook Pro 14.
Да-да, не шутка, настоящий, железный, с M3 Pro
Но! Чтобы успеть пройти 2 недели обучения к 15 ноября, курс нужно взять до конца октября — и сейчас на всё скидка 40%.
Чтобы поучаствовать, нужно:
1️⃣ Покупаешь любой курс до конца октября;
2️⃣ Проходишь 2 недели обучения к 15 ноября;
3️⃣ Написать куратору в чат #розыгрыш.
До 15 ноября, потом всё — поезд (и макбук) уйдёт.
👉 Участвовать в розыгрыше
Apple неожиданно открыла язык Swift для Android. Теперь разработчики смогут создавать приложения не только для iOS, но и для Android, используя один и тот же язык программирования. Новый инструмент под названием Swift SDK for Android позволяет перекомпилировать код в Kotlin или Java, то есть в те языки, на которых традиционно работает Android.
Это означает, что программисты, привыкшие к экосистеме Apple, теперь могут писать кроссплатформенные приложения без необходимости изучать другую технологию. Для крупных студий и независимых разработчиков это потенциально огромная экономия времени и бюджета.
Эксперты называют шаг символическим. Apple впервые официально делает свой язык разработки доступным за пределами собственных платформ. Многие отмечают ироничность момента: если бы компания пошла на это десять лет назад, Swift мог бы стать стандартом в мобильной разработке, обогнав Kotlin.
Пока SDK находится в ночных сборках, но уже доступен для тестирования. Разработчики сообщают, что первые примеры приложений на Swift под Android уже запускаются без ошибок.
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9😁3👏2
Kinetics привносит естественное ощущение реальной физики в ваши анимации SwiftUI. Разработанный на основе Swift 6 с строгим соблюдением принципов многопоточности, он предоставляет современную и безопасную основу для создания анимаций, которая реагируют на действия пользователя, учитывают границы и выглядят реалистично.
#буст #iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Почему иногда вылетает ошибка и список не обновляется?
Anonymous Quiz
20%
Неправильное использование notifyDataSetChanged()
9%
Отсутствие проверки на пустую строку
6%
Проблема с жизненным циклом ViewModel
32%
Изменение mutableList из UI потока без уведомления адаптера
33%
Посмотреть ответ
❤2🌚1
Все мы видели, что во многих крупных приложениях есть возможность зарегистрироваться через Google аккаунт, и многим программистам хотелось бы реализовать это в своём приложении. Это несложно!
В этой статье автор рассмотрит весь код и пошаговую инструкцию.
👉 Читать статью
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Хотите сделать ваше приложение доступным для всех пользователей? Этот промпт поможет реализовать полноценную поддержку accessibility.
Implement comprehensive accessibility features for a mobile app that includes:
— Add proper content denoscriptions for all UI elements
— Implement logical focus order and navigation
— Support screen readers (TalkBack/VoiceOver)
— Ensure sufficient color contrast and text sizing
— Add accessibility labels and hints
— Support voice control and switch access
— Test with accessibility services enabled
— Добавьте
Implement custom accessibility actions для сложных UI компонентов— Добавьте
Add haptic feedback for key interactions для невизуального взаимодействия— Добавьте
Support dynamic font sizing without breaking layouts для адаптивности текста#буст #MiddlePath
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
🎃 Хэллоуин в Proglib Academy: скидки, призы и... немного паники
Сегодня 31 октября, и это не просто время тыкв и призраков, это ПОСЛЕДНИЙ ДЕНЬ, когда ты можешь выиграть макбук!
→ Купи любой курс со скидкой 40% 💸
→ Начни обучение, чтобы пройти 2 недели к 15 ноября 🎓
→ Напиши куратору #розыгрыш ✍️
Всё! Теперь ты в игре.
👉 Сейчас или никогда!
Сегодня 31 октября, и это не просто время тыкв и призраков, это ПОСЛЕДНИЙ ДЕНЬ, когда ты можешь выиграть макбук!
→ Купи любой курс со скидкой 40% 💸
→ Начни обучение, чтобы пройти 2 недели к 15 ноября 🎓
→ Напиши куратору #розыгрыш ✍️
Всё! Теперь ты в игре.
👉 Сейчас или никогда!
Please open Telegram to view this post
VIEW IN TELEGRAM
2😁13
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁10