Сегодня большинство компаний разрабатывают мобильные приложения, поэтому умение работать с ними становится почти обязательным скиллом. Мобильное приложение — это не просто веб в миниатюре, это отдельный мир со своей архитектурой, устройствами, операционными системами и ограничениями.
В статье автор расскажет об основных особенностях мобильных платформ, с которыми тестировщики сталкиваются на практике.
#свежак #Android
Please open Telegram to view this post
VIEW IN TELEGRAM
👾 Compose Stability Analyzer — аналитика стабильности композабл в Android Studio
Compose Stability Analyzer анализирует стабильность ваших композабл функций Jetpack Compose в режиме реального времени непосредственно в Android Studio или IntelliJ. Он помогает понять, почему компонуемая функция стабильна или нестабильна, и предоставляет подробную информацию благодаря трассировке и журналированию рекомпозиции.
Кроме того, вы можете отслеживать причину, по которой ваша компонуемая функция запускает рекомпозицию, с помощью аннотации
💻 Compose Stability Analyzer на GitHub
🔸 Курс «Специалист по ИИ»
🔸 Получить консультацию менеджера
🔸 Сайт Академии 🔸 Сайт Proglib
🐸 Библиотека мобильного разработчика
#буст #Android
Compose Stability Analyzer анализирует стабильность ваших композабл функций Jetpack Compose в режиме реального времени непосредственно в Android Studio или IntelliJ. Он помогает понять, почему компонуемая функция стабильна или нестабильна, и предоставляет подробную информацию благодаря трассировке и журналированию рекомпозиции.
Кроме того, вы можете отслеживать причину, по которой ваша компонуемая функция запускает рекомпозицию, с помощью аннотации
TraceRecomposition и экспортировать отчёты о стабильности и совместимости с помощью тасков Gradle для просмотра изменений.🔸 Курс «Специалист по ИИ»
🔸 Получить консультацию менеджера
🔸 Сайт Академии 🔸 Сайт Proglib
#буст #Android
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰1
Please open Telegram to view this post
VIEW IN TELEGRAM
Почему происходит ошибка "index out of range"?
Anonymous Quiz
8%
Неправильное использование weak self
35%
Race condition между обновлением данных и прокруткой
4%
Проблема с асинхронной загрузкой данных
35%
Данные обновляются, но таблица еще не обновила индексы
18%
Посмотреть ответ
This media is not supported in your browser
VIEW IN TELEGRAM
🤖 AI сейчас на пике — и математика снова в центре внимания.
Одна из топовых экспертов, кто сегодня участвует на AIJ, преподаёт у нас.
Мария Тихонова — PhD по Computer Science, руководитель направления в SberAI и доцент ВШЭ. Она работает с LLM каждый день и объясняет математику так, как она реально применяется в AI.
🔥 Экспресс-курс «Математика для DS» — 8 недель, чтобы закрыть пробелы и уверенно проходить собесы.
🎁 До 30 ноября:
→ скидка 40%
→ курс «Школьная математика» в подарок при оплате
→ бесплатный тест на знание основ математики
👉 Записаться на курс
«На конференции AIJ только и разговоров, что о AI и математике. Ведь в основе генеративных моделей Gen AI лежит фундаментальная математика.»
Одна из топовых экспертов, кто сегодня участвует на AIJ, преподаёт у нас.
Мария Тихонова — PhD по Computer Science, руководитель направления в SberAI и доцент ВШЭ. Она работает с LLM каждый день и объясняет математику так, как она реально применяется в AI.
🔥 Экспресс-курс «Математика для DS» — 8 недель, чтобы закрыть пробелы и уверенно проходить собесы.
🎁 До 30 ноября:
→ скидка 40%
→ курс «Школьная математика» в подарок при оплате
→ бесплатный тест на знание основ математики
👉 Записаться на курс
Доклад Юрия Петрова на конференции CrossConf 2025. Доклад посвящен возможностям портирования Flutter-приложений на различные платформы, включая нестандартные устройства.
Юрий рассказывает, что Flutter поддерживает не только стандартные платформы (iOS, Android, Web, Windows, macOS, Linux), но и множество других систем: Aurora OS, Huawei HarmonyOS, Tizen (Samsung TV), WebOS, Raspberry Pi и даже Yocto Project для встраиваемых устройств.
👉 Читать статью
🔸 Курс «Основы IT для непрограммистов»
🔸 Получить консультацию менеджера
🔸 Сайт Академии 🔸 Сайт Proglib
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1🥱1
Optional (необязательный) означает, что переменная или данные могут быть равны нулю, и вы обрабатываете эти нулевые значения с помощью некоторых ключевых слов Swift.
Если вы обнаруживали
nil и развертывали его с помощью optional для обработки, это значит, что вы знакомы с таким типом переменных.Давайте рассмотрим сложные аспекты
optional в Swift, которые всех сбивают с толку.? против !Есть два способа сделать переменную optional с помощью
? и !, но каждый из них имеет разное значение.Когда вы делаете любую переменную необязательной (optional) с помощью
?, это означает, что вам также придётся обрабатывать значение nil.var name: String?
if let name = name {
print("Hello, \(name)")
} else {
print("No name found.")
}
Здесь мы использовали
if-let для обработки имени. Если имя равно nil, выполняется блок else; в противном случае выполняется блок if.Когда вы создаёте переменную с помощью
!, это означает, что вам не нужно обрабатывать значение nil.var userId: String!
print(userId.count)
Код выполняется успешно, но если значение равно нулю, приложение аварийно завершает работу.
Примечание. Используйте
!, если вы уверены, что заданное значение не будет равно нулю, даже если оно объявлено как optional.С помощью цепочки необязательных переменных (?) вы можете безопасно выполнить код с необязательной переменной.
let size = user?.name.count
Этот код работает нормально, даже если имя равно нулю. Всё выражение возвращает
nil, но не приводит к крешу.Необязательная цепочка (Optional Chaining) не остановит выполнение программы, если значение равно нулю. Взгляните на этот пример:
user?.logout()
print("Done!")
Если
user равен нулю, функция выхода из системы не будет вызвана, но приведенный ниже код будет выполнен.if let — не всегда лучший выборif-let полезен для управления нулевыми значениями, но иногда он может сделать код более сложным и запутанным.if let name = data?.name {
if let city = data?.address?.city {
print("\(name) lives in \(city)")
}
}Это затрудняет чтение вложенного кода.
Лучший способ:
guard let name = data?.name,
let city = data?.address?.city else {
return
}
print("\(name) lives in \(city)")
Еще лучший способ:
let city = data?.address?.city ?? "Unknown City"
??)Вы уже знакомы с таким кодом:
var name: String? = "Jayant"
Переменная
name имеет строковое значение или может быть равна нулю.Но видели ли вы что-то подобное?
let value: String?? = "Jayant"
Это называется Double Optional (
??). Читается как Optional(optional("Jayant")).Основной вариант использования — когда вы возвращаете необязательный параметр из функции и присваиваете эту функцию любой переменной, которая также возвращает optional параметр.
func getName() -> String? {
return nil
}
let name: String?? = getName()Здесь функция
getName() возвращает String?, а при назначении имени вы пишете String??, что означает optional, содержащую другую optional строку.Взгляните на этот код:
var names: [String]? = []
На первый взгляд кажется, что это просто пустой массив, но на самом деле это optional массив, содержащий внутри себя пустой массив.
Необязательный массив может находиться в различных состояниях.
var names: [String]? = nil // it's not an array
var names: [String]? = [] // Array exists, but it’s empty
var names: [String]? = ["Jayant", "Neha"] // Array with values
Давайте посмотрим, что произойдет, если вы это проверите:
var names: [String]? = []
if names != nil {
print("Array exists")
}
// output ---> Array exists
Как видите, массив существует и пуст.
🔹 Курс «Основы IT для непрограммистов»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#буст #JuniorKit #Swift
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉 Большая распродажа Proglib Academy — минус 40% на всё!
📚 Выбирай свой курс:
▫️ «Экспресс-курс по математике для DS» — получи фундамент для построения успешной карьеры в Data Science
▫️ «Математика для DS» — для тех, кто хочет уверенно работать с данными;
▫️ «Основы Python» — чтобы начать писать код с нуля;
▫️ «Алгоритмы и структуры данных» — для будущих инженеров;
▫️ «Специалист по ИИ» или «AI-агенты», или «Машинное обучение» — для тех, кто хочет прокачаться в ИИ.
▫️ «Архитектуры и шаблоны проектирования» — чтобы писать гибкий, масштабируемый код как мидл+ разработчик.
▫️ «Основы IT для непрограммистов» — для тех, кто хочет понимать, как устроены технологии, не будучи разработчиком.
🎁 Бонусы ноября:
▫️ Розыгрыш MacBook Pro 14 — купи любой курс и пройди 2 недели обучения до 30 ноября.
▫️ Бесплатный тест по математике — за 5 минут покажет, какие темы стоит подтянуть перед DS.
👉 Выбрать курс со скидкой
📚 Выбирай свой курс:
▫️ «Экспресс-курс по математике для DS» — получи фундамент для построения успешной карьеры в Data Science
▫️ «Математика для DS» — для тех, кто хочет уверенно работать с данными;
▫️ «Основы Python» — чтобы начать писать код с нуля;
▫️ «Алгоритмы и структуры данных» — для будущих инженеров;
▫️ «Специалист по ИИ» или «AI-агенты», или «Машинное обучение» — для тех, кто хочет прокачаться в ИИ.
▫️ «Архитектуры и шаблоны проектирования» — чтобы писать гибкий, масштабируемый код как мидл+ разработчик.
▫️ «Основы IT для непрограммистов» — для тех, кто хочет понимать, как устроены технологии, не будучи разработчиком.
🎁 Бонусы ноября:
▫️ Розыгрыш MacBook Pro 14 — купи любой курс и пройди 2 недели обучения до 30 ноября.
▫️ Бесплатный тест по математике — за 5 минут покажет, какие темы стоит подтянуть перед DS.
👉 Выбрать курс со скидкой
Please open Telegram to view this post
VIEW IN TELEGRAM
💯2😁1
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
😁1