tgoop.com »
United States »
Библиотека мобильного разработчика | Android, iOS, Swift, Retrofit, Moshi, Chuck » Telegram Web
Если ты еще не почувствовал, как изменился IT-рынок, то скоро почувствуешь на своей шкуре. Вакансий стало в разы меньше, требования выросли до небес, а конкуренция превратилась в кровавую баню. Рассказываем, как лихорадит рынок труда в IT.
#MadeInProglib
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱6❤2
Пора узнать, на чём живёт Android Studio и Xcode в 2025.
Расскажите в комментариях, какой у вас ноутбук или ПК:
Интересно, сколько у нас счастливчиков с M-чипами и кто до сих пор держится на стареньком i5
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
PostgresNIO — неблокирующий event-driven клиент Swift для PostgreSQL, построенный на SwiftNIO.
Фичи:
#буст #iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
💥 Октябрь — месяц апгрейда!
До конца этого месяца действует скидка 40% на все курсы Proglib Academy(кроме AI-агентов, ML для старта и математики) .
Под акцию попал и наш хит — курс «Алгоритмы и структуры данных».
👨💻 Он подойдёт джунам, мидлам и всем, кто хочет писать код осознанно, а не наугад.
👨🏫 Преподаватели — инженеры из Яндекса и ВШЭ.
🎓 Сертификат по итогам обучения — в портфолио.
➖ 47 видеоуроков и 150 практических задач;
➖ поддержка преподавателей и чат;
➖ доступ к материалам на 12 месяцев.
Полная программа курса тут 👈
👉 Остальные курсы
До конца этого месяца действует скидка 40% на все курсы Proglib Academy
Под акцию попал и наш хит — курс «Алгоритмы и структуры данных».
👨💻 Он подойдёт джунам, мидлам и всем, кто хочет писать код осознанно, а не наугад.
👨🏫 Преподаватели — инженеры из Яндекса и ВШЭ.
🎓 Сертификат по итогам обучения — в портфолио.
➖ 47 видеоуроков и 150 практических задач;
➖ поддержка преподавателей и чат;
➖ доступ к материалам на 12 месяцев.
Полная программа курса тут 👈
👉 Остальные курсы
❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
В чем основная ошибка и почему UI может не обновляться?
Anonymous Quiz
47%
Изменение @Published свойства не в главном потоке
5%
Weak self в Task не используется
14%
@StateObject создается внутри View
4%
Отсутствует обработка ошибок
29%
Посмотреть ответ
👍2
Добавление кастомных изображений в ваше приложение может значительно улучшить и персонализировать пользовательский опыт, а также повысить вовлеченность пользователей.
В этой статье рассматриваются две новые возможности генерации изображений с помощью Firebase AI Logic: специализированные функции редактирования Imagen, которые в настоящее время находятся в стадии предварительной версии, и общедоступный Gemini 2.5 Flash Image (также известный как «Nano Banana»), предназначенный для создания контекстных или диалоговых изображений.
#свежак #Android
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Приходилось ли когда-нибудь развивать библиотечный проект и публиковать из него артефакты? Команде Александра пришлось, когда появилась своя дизайн-система и разные переиспользуемые части приложения. Поначалу все были довольны, но со временем оказалось, что довольно трудно следить за тем, чтобы не сломать неаккуратными изменениями другие проекты.
В конце концов, им надоело бороться с ломающими изменениями вручную и захотелось немного магии: чтобы версии сами поднимались, да еще и показывали, сломали мы что-то или нет.
Александр рассказал о том, как научить Gradle анализировать изменения в API и автоматически поднимать версии артефактов с соблюдением семантического версионирования. Заодно он показал некоторые приемам в Gradle, которые помогут писать плагины.
Доклад будет полезен и тем, кто разрабатывает библиотеки и хочет реализовать аналогичное решение, и тем, кому интересно поучиться писать Gradle-плагины.
#буст #Android
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁7😢3
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Что выведет код?
Anonymous Quiz
56%
Result: 11 Cache value: 7
8%
Result: 10 Cache value: 7
18%
Result: 11 Cache value: 8
18%
Ошибка компиляции
❤3
Please open Telegram to view this post
VIEW IN TELEGRAM
😁4
Представь: ты опытный разработчик, знаешь стек как свои пять пальцев. Отправляешь резюме — а в ответ тишина. Проблема не в тебе — просто ATS не увидела нужные ключевые слова или не смогла распарсить твое красивое резюме с инфографикой.
Рассказываем, как устроены эти системы, какие из них используют российские и зарубежные IT-компании, и главное — как адаптировать резюме, чтобы робот тебя пропустил.
#MadeInProglib
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
if age >= 18 {
driveCar()
} else {
doNotDrive()
}Этот код хорошо работает - но можете ли вы предложить небольшое улучшение рефакторинга, чтобы сделать его еще лучше?
age >= 18 ? driveCar() : doNotDrive()
#буст #JuniorKit #Swift
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱6❤2😢2🤔1
Приготовили для вас дайджест по актуальному из мира 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(_ title: String) -> some View {
VStack(alignment: .leading, spacing: 4) {
Text(title)
.font(.title3)
.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👍8
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
