У вас закончился пробный период!
Для полного доступа к функционалу, пожалуйста, оплатите премиум подписку
MO
Библиотека мобильного разработчика | Android, iOS, Swift, Retrofit, Moshi, Chuck
https://t.me/mobileproglib
Возраст канала
Создан
Язык
Русский
18.48%
Вовлеченность по реакциям средняя за неделю
6.22%
Вовлеченность по просмотрам средняя за неделю

Все самое полезное для мобильного разработчика в одном канале.

По рекламе: @proglib_adv

Сообщения Статистика
Репосты и цитирования
Сети публикаций
Сателлиты
Контакты
История
Топ категорий
Здесь будут отображены главные категории публикаций.
Топ упоминаний
Здесь будут отображены наиболее частые упоминания людей, организаций и мест.
Найдено 239 результатов
❓ Tabs vs Spaces

Для пытливых разработчиков до сих пор остается актуальным вопрос использования табуляции и пробелов для форматирования кода. Могут ли они быть взаимозаменяемы: например, 2 пробела на табуляцию или 4?

Но единого стандарта нет, поэтому иногда между разработчиками возникает непонимание. Кроме того, различные IDE и их компиляторы обрабатывают табуляцию также по-своему.

Решением вопроса обычно становится соглашение о правилах форматирования в рамках проекта или языка программирования в целом

А что думаете вы? Табы или пробелы? Голосуйте и пишите свое мнение в комментариях 💬

❤️ — 14 ТБ кода? А могло бы быть 5ТБ, если бы там были табы, а не пробелы.
👍 — Ваши табы неясно показываются и отъедают место на экране, лучше пробелы.

🐸 Библиотека мобильного разработчика

#междусобойчик
26.04.2025, 16:03
t.me/mobileproglib/5787
#мем
26.04.2025, 12:02
t.me/mobileproglib/5786
⚡️ Команда дня: удаление Git-ветки

Чтобы удалить ветку в Git, можно использовать команду git branch -d или git branch -D. Опция -d предназначена для безопасного удаления: удаление ветки произойдёт только в том случае, если было проведено слияние (merge) с текущей веткой. Опция -D предназначена для принудительного удаления, при котором ветка будет удалена независимо от того, полностью она слилась или нет. Вот команды:

➡️ Безопасное удаление (проверяет слияние):

git branch -d branchName


➡️ Принудительное удаление (не проверяет слияние):

git branch -D branchName


💡 Знали о такой штуке?

Библиотека мобильного разработчика

#буст
25.04.2025, 21:03
t.me/mobileproglib/5785
💃 Как Swift и Kotlin выглядят в стиле Гибли

Мы не могли пройти мимо нашумевшего тренда и попросили ИИ перенести наши любимые языки программирования во вселенную Миядзаки.

Как вам образ? Расскажите в комментариях ⬇️

😜 Еще больше персонажей из мира айти в стиле Гибли — в нашем канале @proglib
25.04.2025, 10:34
t.me/mobileproglib/5783
🤖 Как работает Robolectric и почему это важно знать

Представьте, что можно тестировать android-код без эмулятора, запуская тесты за секунды вместо минут. Именно это обещает Robolectric — библиотека, которую либо любят, либо ненавидят, но точно не игнорируют.

За кажущейся простотой «просто добавь зависимость» скрывается удивительная магия модификации байткода, о которой не рассказывают в статьях. Предлагаю разобраться, как на самом деле работает магия Robolectric и почему эти знания пригодятся любому android-разработчику.

👉 Читать статью

🐸 Библиотека мобильного разработчика

#буст
24.04.2025, 10:10
t.me/mobileproglib/5782
#мем
23.04.2025, 21:11
t.me/mobileproglib/5781
🗓 Инструмент недели: ToastKit

ToastKit — это легкий и полностью настраиваемый Swift-пакет, который поможет вам отображать информационные сообщения (тосты) в вашем приложении.

Он прост в использовании, поддерживает различные встроенные стили, такие как success, warning, info, error, отображение SF Symbols и иконок и т.п., а также позволяет полностью настраивать их под ваши нужды.

💻 ToastKit на GitHub

🐸 Библиотека мобильного разработчика

#буст
23.04.2025, 15:15
t.me/mobileproglib/5780
🌍💻 Сравнение найма IT-специалистов в Западной и Восточной Европе

Рынок IT-специалистов в Европе является одним из самых динамичных и конкурентных в мире. Западная и Восточная Европа представляют собой два уникальных «региона» с разными экономическими, культурными и образовательными особенностями, которые влияют на процессы найма IT-специалистов.

Цель данной статьи — провести сравнительный анализ подходов к найму IT-специалистов в этих европейских зонах, выделить ключевые различия и сходства.

👉 Читать статью

🐸 Библиотека мобильного разработчика

#cвежак
23.04.2025, 03:32
t.me/mobileproglib/5778
⬇️ How to: Заставить RecyclerView плавно скроллиться (даже с тяжелыми элементами)

Проблема:

При быстром скролле списка с картинками или сложной разметкой начинаются тормоза. Как это исправить?

Решение:

1️⃣ Используйте RecyclerView.setHasFixedSize(true)

recyclerView.setHasFixedSize(true) // Если все элементы одинакового размера

Это избавит RecyclerView от лишних расчетов при скролле.

2️⃣ Оптимизируйте onBindViewHolder

// Загружайте изображения асинхронно (Glide/Picasso)
Glide.with(context)
.load(items[position].imageUrl)
.into(holder.imageView)

// Избегайте тяжелых операций здесь!
}

3️⃣ Добавьте DiffUtil для умных обновлений

val diffResult = DiffUtil.calculateDiff(callback)
diffResult.dispatchUpdatesTo(adapter)

Это предотвратит мерцание и перерисовку всех элементов.

Бонус:

🔵 Для сложной анимации используйте RecyclerView.ItemAnimator = null (если не нужна стандартная анимация).

🔵 Включите логирование пропущенных кадров: recyclerView.setItemViewCacheSize(20).

Результат:

➡️ Список будет скроллиться как масло, даже на слабых устройствах.

🐸 Библиотека мобильного разработчика #буст
22.04.2025, 10:10
t.me/mobileproglib/5777
👨‍💻 Топ-вакансий для мобильных разработчиков за неделю

IOS-разработчик — от 250 000 до 450 000 ₽, гибрид (Москва)

Android-разработчик (Погода) — от 250 000 до 450 000 ₽, гибрид (Москва, Санкт-Петербург, Минск)

Разработчик ядра iOS / системный программист / iOS Kernel Developer — от 500 000 ₽, удалёнка

Flutter Developer — от 150 000 до 300 000 ₽, удалёнка

Мобильный разработчик (React Native) — от 200 000 ₽, гибрид

➡️ Еще больше топовых вакансий — в нашем канале Mobile jobs

🐸 Библиотека мобильного разработчика

#свежак
21.04.2025, 20:59
t.me/mobileproglib/5776
Когда сроки горят, а разработчиков не хватает

Нехватка квалифицированных разработчиков, срывы дедлайнов и перегруз команды — эти проблемы знакомы большинству IT-руководителей. В условиях растущей конкуренции найти баланс между качеством реализации, сроками и бюджетом становится всё сложнее, особенно когда проект требует редких компетенций или быстрого масштабирования.

Решение проблемы — задействовать дополнительные ресурсы на аутсорсе или аутстаффе. Например, обратиться в Proglib. Да-да, мы запустили свою студию веб-разработки!

Что мы предлагаем:

• Опытные специалисты для аутстаффа (frontend, backend, DevOps, UI/UX, PM, BA) 

• Полноценная разработка проектов под ключ 

• Гибкое масштабирование команды под потребности клиента 

• Прозрачная коммуникация и регулярная отчетность

Для каждого проекта формируется индивидуальная команда, исходя из конкретных потребностей заказчика.

Заполните форму, чтобы ускорить свою разработку 👉 https://forms.yandex.ru/u/67e548a4eb614622efa0bcb2/
21.04.2025, 19:56
t.me/mobileproglib/5775
#мем
20.04.2025, 16:05
t.me/mobileproglib/5769
👶 Объясни как пятилетке: Что такое фрагменты (Fragments) в Android?

Задача: Расскажи, что такое Fragment и зачем он нужен, так, чтобы понял даже пятилетний ребенок.

Пример:
«Фрагмент — это как кусочек пазла в твоём приложении. Один кусочек может показывать список мультиков, другой — сам мультик, а вместе они собираются в одну большую картинку на экране телефона!»

А теперь ваша очередь! Напишите в комментариях своё объяснение — самое простое и понятное победит 👇

🐸 Библиотека мобильного разработчика

#междусобойчик
20.04.2025, 12:17
t.me/mobileproglib/5768
#мем
19.04.2025, 12:01
t.me/mobileproglib/5767
💼🚫 Собес провален? 8 советов, как извлечь пользу из каждого отказа

Отказы на собеседованиях — явление крайне неприятное и даже демотивирующее. Особенно если вы действительно готовились к интервью, вложили много усилий и личного времени в подготовку.

Однако отказ — это всего лишь один из этапов в поиске работы и не стоит воспринимать его как конец света.

Читать статью

🐸 Библиотека программиста
18.04.2025, 21:22
t.me/mobileproglib/5766
🔥 5 горячих клавиш VS Code, которые ускорят вашу работу

1️⃣ Создать структуру документа

! и Tab

Это сочетание клавиш за секунду создаёт базовую структуру кода или вложенные теги.





Document





2️⃣ Быстро добавить комментарий

Windows — Ctrl + /
macOS — Command + /

Чтобы добавить комментарий, нужно перейти в начало строки и дописать туда два слеша. Это медленно. Быстрее нажать в любом месте строки Ctrl + /, и строка закомментируется, если она ещё не. А если уже да, то комментарий исчезнет.

3️⃣ Перейти к строке под номером

Windows — Ctrl + G
macOS — Control + G

Иногда отладчики внезапно сообщают, что на строке 953 случилась непоправимая инфернальная ошибка вселенной. Чтобы не выискивать вручную, не листать и не тратить на это время, нажмите Ctrl + G, введите номер строки и спокойно спасайте вселенную.

4️⃣ Поменять строку местами с соседними

Windows — Alt + ↑ / ↓
macOS Option + ↑ / ↓

Случается такое, что ваш алгоритм — не алгоритм. Всё пошло не так, а вместо числа 42 вывелось сообщение «Данные удалены». Кому-то для этого нужно переписать весь код, но иногда бывает достаточно поменять строки местами и всё заработает.

5️⃣ Дублировать строку

Windows Shift + Alt + ↓ / ↑
macOS Shift + Option + ↓ / ↑

Это для тех, кто не хочет копировать и вcтавлять несколько раз одно и то же.

👉 Узнать больше

🐸 Библиотека мобильного разработчика #буст
18.04.2025, 10:04
t.me/mobileproglib/5765
⚡️ Metro — новый фреймворк внедрения зависимостей для Android

Metro — это фреймворк для внедрения зависимостей во время компиляции, во многом вдохновленный Dagger, Anvil и Kotlin-Inject. Он стремится объединить их лучшие функции в одно целостное решение, добавив несколько новых и реализуя их в виде плагина компилятора.

Сообщество Kotlin давно хотело создать библиотеку, объединяющую различные инструменты и функции. Хотя для этих задач есть отдельные решения, пока нет единого, которое связало бы их вместе, устранило ограничения и добавило новые возможности. Metro — это попытка дать такой ответ.

👉 Подробнее в статье

🐸 Библиотека мобильного разработчика #свежак
17.04.2025, 22:29
t.me/mobileproglib/5764
📝 Промт для оптимизация производительности

Промпт:

Проанализируй этот код на предмет проблем с производительностью. Предложи способы повышения эффективности, обращая внимание на временную сложность, сложность пространства и использование ресурсов. Дай краткое объяснение каждому предложению: [вставьте код здесь]

Почему это важно:

Оптимизация производительности может позволить ускорить работу приложений и улучшить впечатления пользователей.

⚡️ Как вы обычно оптимизируете производительность? Делитесь в комментариях!

Библиотека мобильного разработчика #буст
17.04.2025, 10:14
t.me/mobileproglib/5763
#мем
16.04.2025, 21:05
t.me/mobileproglib/5762
iOS Developer-ы, тут?

Из чего же сделаны наши SafeBoard’исты? Из сотен строк кода, написанных между парами. Из горящих глаз при обсуждении новой архитектуры. Из решений, которые делают тебя сильнее.

Стажировка SafeBoard в Kaspersky — отличная возможность прокачать свои хард скиллы. Приходи, если хочешь научиться:

● Проектировать, разрабатывать и отлаживать приложения для iOS;
● Разрабатывать и ревьюить архитектуру;
● Анализировать требования и проектную документацию;
● Разбираться в чужом коде.

У нас гибкий график, крутая команда и атмосфера, где каждый день ты становишься лучше. В офисе для тебя будет спортзал, сауна, игровые комнаты. А еще стажировка оплачивается 😎.

✅ Для студентов вузов Москвы и МО (любой курс, кроме выпускного), Школы 21
✅ Готовность работать от 20 часов в неделю.

Хочешь узнать, из чего ты сделан? Подай заявку сегодня, чтобы быстрее получить оффер: https://kas.pr/1krn?erid=2W5zFJrVWuN

Реклама. Рекламодатель АО «Лаборатория Касперского» ИНН 7713140469
16.04.2025, 17:59
t.me/mobileproglib/5761
🌐 How to: работать с Room Database в Android

Как это работает

Room — это ORM-библиотека для Android, которая упрощает работу с SQLite. Она автоматически генерирует boilerplate-код для операций с БД, проверяет SQL-запросы на этапе компиляции и предоставляет удобные абстракции:

- @Entity — определяет таблицу в БД.

- @Dao (Data Access Object) — содержит методы для запросов (вставка, обновление, выборка).

- @Database — главный класс, который связывает сущности и DAO.

Если названия полей в классе и таблице не совпадают, используйте @ColumnInfo:
@Entity(tableName = "users")
data class User( @PrimaryKey val id: Int,
@ColumnInfo(name = "user_name") val name: String
)

Как начать

1.Добавьте зависимости в build.gradle (Module):
implementation "androidx.room:room-runtime:2.6.0"
kapt "androidx.room:room-compiler:2.6.0" // для Kotlin

2.Создайте Entity, Dao и Database:
@Dao
interface UserDao { @Query("SELECT * FROM users")
fun getAll(): List

@Insert
fun insert(user: User)
}

@Database(entities = [User::class], version = 1)
abstract class AppDatabase : RoomDatabase() {
abstract fun userDao(): UserDao
}

3.Инициализируйте БД в приложении:
val db = Room.databaseBuilder(
context, AppDatabase::class.java, "my-database"
).build()


Лучшие практики

➡️ Миграции БД: Если меняете структуру таблиц, увеличивайте version и добавляйте миграцию:
val migration = object : Migration(1, 2) {
override fun migrate(database: SupportSQLiteDatabase) { database.execSQL("ALTER TABLE users ADD COLUMN age INTEGER")
}
}

➡️ Асинхронные запросы: Room поддерживает Kotlin Coroutines и RxJava. Пример с Flow:
@Query("SELECT * FROM users")
fun getAllFlow(): Flow>

Где применять

🔵 Кеширование данных из API.

🔵 Оффлайн-режим в приложениях.

🔵 Сложные запросы с JOIN и вложенными объектами.

Используете Room? Делитесь лайфхаками в комментах!

Библиотека мобильного разработчика #буст
16.04.2025, 11:15
t.me/mobileproglib/5760
🎉🐙🐱 20 лет Git: все такой же необычный, все такой же великолепный

Легендарному Git стукнуло 20! Вспоминаем, как проект, который Линус Торвальдс называл «тупым менеджером контента», стал незаменимым инструментом для всех, кто хоть раз писал код или даже просто хранил файлы.

👉 Читать статью

🐸 Библиотека мобильного разработчика
15.04.2025, 21:04
t.me/mobileproglib/5759
🚀 A/B-тестирование в Android-разработке: гайд для middle+ разрабов

A/B-тестирование — это не только инструмент для продуктовых команд. Это суперспособность и для Android-разработчиков.

В этой статье автор рассказывает, как опытные инженеры могут проектировать, реализовывать и грамотно завершать эксперименты, которые действительно влияют на продукт, не захламляя кодовую базу. От Firebase Remote Config до паттернов чистой архитектуры — всё, чтобы делать более умные и осознанные Android-приложения.

👉 Читать статью

🐸 Библиотека мобильного разработчика

#свежак
15.04.2025, 10:02
t.me/mobileproglib/5758
⌨️ Топ-вакансий для мобильных разработчиков за неделю

Middle iOS developer — от 150 000 до 250 000 ₽, гибрид

Мобильный разработчик (React Native) — от 200 000 ₽, гибрид

Flutter Developer — от 1500 до 2500 $

IOS-разработчик (Senior) — от $2500

iOS-разработчик WebView iGaming App — от $2500

➡️ Еще больше топовых вакансий — в нашем канале Mobile jobs
14.04.2025, 21:02
t.me/mobileproglib/5757
👩‍💻 Docker - лучший обучающий канал по Devops.

С помощью картинок и коротких видео даже новички начнут применять продвинутые инструменты разработки и использовать Docker.

Стоит подписаться: t.me/DevopsDocker

Реклама. ИП Хоруженко Егор Сергеевич, ИПП 550149218060. Erid 2VtzqufQb3P
14.04.2025, 18:02
t.me/mobileproglib/5754
❓ Что такое Null safety, nullable и non-nullable типы?

🔵 Null safety — это концепция безопасности, которая предотвращает некоторые из наиболее распространенных ошибок в программировании, связанных с использованием null-значений. В Kotlin эта концепция реализуется за счет строгой типизации и системы Nullable/Non-nullable типов данных.

➡️ Nullable типы — это типы, которые могут содержать значение null. Non-nullable типы — это типы, которые не могут содержать значение null и всегда должны иметь некоторое значение.

В Kotlin переменные по умолчанию являются non-nullable — это означает, что они не могут принимать значение null. Если переменная может принимать значение null, то ее нужно объявить с использованием знака вопроса (?). При использовании Nullable переменной в коде Kotlin не допустит обращение к ней без предварительной проверки на null-значение.

➡️ Также Kotlin предоставляет множество функций для безопасной работы с nullable-значениями, таких как операторы elvis?:, безопасный вызов?. и другие.

📌 В целом, концепция Null safety помогает разработчикам избежать ошибок связанных с null-значениями, уменьшает количество ошибок в работе приложения и упрощает разработку и поддержку кода.

🐸 Библиотека мобильного разработчика #буст
14.04.2025, 10:00
t.me/mobileproglib/5751
🚀 A/B-тестирование в Android-разработке: гайд для middle+ разрабов

A/B-тестирование — это не только инструмент для продуктовых команд. Это суперспособность и для Android-разработчиков.

В этой статье автор рассказывает, как опытные инженеры могут проектировать, реализовывать и грамотно завершать эксперименты, которые действительно влияют на продукт, не захламляя кодовую базу. От Firebase Remote Config до паттернов чистой архитектуры — всё, чтобы делать более умные и осознанные Android-приложения.

👉 Читать статью

🐸 Библиотека мобильного разработчика

#свежак
13.04.2025, 22:45
t.me/mobileproglib/5750
🚀 A/B-тестирование в Android-разработке: гайд для middle+ разрабов

A/B-тестирование — это не только инструмент для продуктовых команд. Это суперспособность и для Android-разработчиков.

В этой статье автор рассказывает, как опытные инженеры могут проектировать, реализовывать и грамотно завершать эксперименты, которые действительно влияют на продукт, не захламляя кодовую базу. От Firebase Remote Config до паттернов чистой архитектуры — всё, чтобы делать более умные и осознанные Android-приложения.

👉Читать статью
🐸Библиотека мобильного разработчика #свежак
13.04.2025, 22:41
t.me/mobileproglib/5749
👨‍💻 Тимлид — должен кодить или только управлять

Часто в IT-индустрии возникает вопрос о роли тимлида: должен ли он писать код или же его основная задача — управление командой?

С одной стороны, техническая экспертиза может помочь в принятии более обоснованных решений и поддержке команды. С другой стороны, слишком глубокое погружение в код может отвлекать от стратегического планирования и управления проектом.

Как вы считаете, какова идеальная роль тимлида? Должен ли он быть «игроком на поле» или как тренер сосредоточиться на управлении? Голосуйте и пишите своё мнение в комментариях 💬

❤️ — Тимлид — менеджер, а потому работа с кодом является отвлечением от основных обязанностей.

🤝 — Тимлид — это лидер команды, её непосредственный участник, а значит, должен участвовать во всей жизни команды, в том числе и в работе с кодом.

Библиотека мобильного разработчика

#междусобойчик
12.04.2025, 16:01
t.me/mobileproglib/5745
#мем
12.04.2025, 12:02
t.me/mobileproglib/5744
Сомневаетесь в своем прогрессе? Мы собрали 7 четких признаков того, что вы реально растете как разраб. Спойлер: дело не только в коде!

👉 Подробнее в статье
11.04.2025, 20:56
t.me/mobileproglib/5743
🎧 Подкасты и видео о мобильной разработке

Собрали лучшее о мобильной разработке. Включаем и смотрим по пути на работу.

🎯 Многомодульность — ответы на вопросы с экспертами

🎯 Профессия: cистемный аналитик

🎯Найди и исправь ошибки в коде — Задачи с собеседования

Библиотека мобильного разработчика #буст
11.04.2025, 10:03
t.me/mobileproglib/5742
🤔 Задача по Kotlin lists

Есть задание — лист элементов. Ваша задача вставить один оператор, чтобы получилось значение в комментариях, которое стоит после знака =.

listOf(1, 3, 3, 2, 4, 1)
//missed operator
.sum()
.let
{ println(it) }
//=15

Ответ:

В этой задаче нужно сложить сумму индексов.

.indices

Библиотека мобильного разработчика

#междусобойчик
10.04.2025, 21:53
t.me/mobileproglib/5741
🤔 Задача по Kotlin lists

Есть задание — лист элементов. Ваша задача вставить один оператор, чтобы получилось значение в комментариях, которое стоит после знака =.

listOf(1, 3, 3, 2, 4, 1)//missed operator.sum().let { println(it) }//=15

Ответ:

В этой задаче нужно сложить сумму индексов.

.indices

Библиотека мобильного разработчика

#междусобойчик
10.04.2025, 21:50
t.me/mobileproglib/5740
🤔 Задача по Kotlin lists

Есть задание — лист элементов. Ваша задача вставить один оператор, чтобы получилось значение в комментариях, которое стоит после знака =.

listOf(1, 3, 3, 2, 4, 1)//missed operator.sum().let { println(it) }//=15

Ответ:

listOf(1, 3, 3, 2, 4, 1) .indices .sum() .let { println(it) }//=15

В этой задаче нужно сложить сумму индексов.

Библиотека мобильного разработчика

#междусобойчик
10.04.2025, 21:05
t.me/mobileproglib/5739
👨‍💻 Как правильно организовать проект c модульной архитектурой

В iOS-приложениях модульная архитектура становится все более популярной, обеспечивая гибкость и масштабируемость проектов. Этот подход упрощает сопровождение и развитие приложений, особенно при увеличении кодовой базы и функциональности.

Модульная архитектура делит приложение на управляемые части, что позволяет многократно использовать код в других проектах и организовывать независимую разработку и тестирование функциональных блоков.

В этом материале автор расскажет про ключевые моменты модульной архитектуры в iOS-приложениях, инструментах для её внедрения и применения в проектах.

👉 Читать статью

Библиотека мобильного разработчика #буст
10.04.2025, 11:42
t.me/mobileproglib/5738
#мем
9.04.2025, 22:01
t.me/mobileproglib/5737
⚡ Команда дня: find + xargs

Хотите быстро найти и обработать все файлы определенного типа?
Вот однострочник, который поможет:

find . -name «*.js» -type f | xargs grep «TODO»

🎯 Что делает:
— Ищет все .js файлы в текущей директории и поддиректориях
— Находит все строки с «TODO» в этих файлах
— Выводит результаты с именами файлов

Добавьте -1 к grep, чтобы видеть только имена файлов:
find . -name «*.js» -type f | xargs grep -l «TODO»

👀 Не забудьте:
— Команда работает в терминале Unix-подобных систем
— Для Windows используйте Git Bash или WSL
— У PowerShell другой синтаксис для подобных операций

Библиотека мобильного разработчика #буст
9.04.2025, 10:48
t.me/mobileproglib/5736
💭 Облачная среда разработки с AI-ассистентом: обзор GigaIDE Cloud в деталях

СберТех представил GigaIDE Cloud — первую российскую облачную среду разработки с ИИ, встроенную в GitVerse.

Что в статье:

🔜 Кому и зачем стоит попробовать GigaIDE Cloud

🔜 Как запускать проекты с шаблонов и работать с репозиториями

🔜 Как настраивается среда под себя (да, с расширениями от VS Code)

🔜 Как работает AI-ассистент GigaCode и в чём он реально помогает

Забудьте про настройку окружения и тяжёлый ноутбук — GigaIDE Cloud запускает проекты за секунды прямо в браузере.

Читай обзор, как это работает на практике 🔗
9.04.2025, 00:27
t.me/mobileproglib/5735
https://t.me/neuro_text/630
8.04.2025, 21:20
t.me/mobileproglib/5734
Мобильные разработчики!

Проголосуйте за наш канал, и в сторис мы опубликуем топ материалов, которые должен прочитать каждый мобильный разработчик.

➡️Поддержать канал: https://t.me/boost/mobileproglib
8.04.2025, 17:25
t.me/mobileproglib/5733
💻 How to: Mutating

Вы можете использовать ключевое слово mutating, чтобы разрешить изменение свойств структуры в методе, пометив этот конкретный метод mutating.

Например:

struct Fruit {
var type: Stringmutating func convertToBanana() {
self.type = «Banana»
}}
var fruit = Fruit(type: «Apple»)
fruit.convertToBanana()
print(fruit.type)
// prints «Banana»

По умолчанию это невозможно для типов значений (структур и перечислений), но возможно для ссылочных типов (классов).

Библиотека мобильного разработчика #буст
8.04.2025, 10:03
t.me/mobileproglib/5732
🧱⛏️ Чекни свой крафт: 8 признаков, что разработчик слишком залип в Minecraft

Думаешь, что твоя продуктивность падает из-за багов в коде? А может, все дело в том, что ты мысленно фармишь крипперов, пока твой PM объясняет задачу? Пройди наш тест и узнай, насколько глубоко ты провалился в пиксельную кроличью нору!

Пройти тест

Библиотека мобильного разработчика

#междусобойчик
7.04.2025, 21:07
t.me/mobileproglib/5731
💻 Конкатенация против интерполяции текста в SwiftUI

SwiftUI позволяет нам объединять несколько представлений текста в одно представление с помощью оператора плюс (+). Это позволяет нам применять разные стили к отдельным частям текста.

Конкатенация и интерполяция — два подхода, которые могут показаться схожими, но на самом деле имеют свои уникальные особенности и преимущества.

👉 Читать статью

Библиотека мобильного разработчика

#свежак
7.04.2025, 14:01
t.me/mobileproglib/5730
🔥 Мобильные разработчики, нужен ваш совет!

Пилим крутую подборку ноутов для кодеров в 2025-м и хотим собрать реальный фидбек от тех, кто в теме!

Какой ноут спасает вас в кодинге и почему?

Расскажите все:

▪️ Что за зверь (модель, начинка)

▪️ Где жмет и где радует в ежедневной работе

▪️ На какие фишки смотреть при выборе

▪️Как вам с ним живется

Топовые советы попадут в нашу статью!

Делитесь в комментах 👇 Сделаем годный гайд, который реально поможет коллегам!

Библиотека мобильного разработчика

#междусобойчик
6.04.2025, 19:40
t.me/mobileproglib/5729
😎 «Вайб-кодинг»: почему доверить свой проект ИИ – это кринж

Новый тренд среди разработчиков — «вайб-кодинг». Это когда ты не продумываешь архитектуру, не пишешь руками, а просто даёшь задание ИИ и ждёшь, что он всё сам сделает. Быстро, магически… и с кучей подводных камней.

Что в статье:

😗 Как «вайб-кодинг» реально работает (или не работает);

😗 Какие ошибки делают даже самые продвинутые модели;

😗 Почему проект, собранный ИИ, чаще всего выглядит как полуфабрикат.

Это не нытьё про «машины нас заменят», а здравый взгляд на технологии без розовых очков.

👉 Читайте статью, обсуждайте, спорьте
5.04.2025, 20:27
t.me/mobileproglib/5727
Самые догадливые, пишите ответ в комментах 👇

Библиотека мобильного разработчика #междусобойчик
5.04.2025, 16:01
t.me/mobileproglib/5726
#мем
5.04.2025, 14:04
t.me/mobileproglib/5725
♾ 17 формул, которые изменили мир

Математика в действии — как уравнения, придуманные века назад, сегодня управляют интернетом, медициной, космосом и вашими финансами.

➡️ Что внутри статьи:
— Как египтяне строили пирамиды с помощью математики
— Почему Wi-Fi и JPEG невозможны без преобразования Фурье
— Что объединяет кота Шредингера и квантовые компьютеры
— Как формула Гаусса управляет фондовыми рынками
— И при чём тут Джеймс Гарфилд и i² = –1

🔗 Читайте статью

🔵 Начинайте свой путь в программировании и прокачивайте свои навыки с нашим курсом «Основы программирования на Python»

Proglib Academy
4.04.2025, 21:12
t.me/mobileproglib/5724
⛓️ Распутываем легаси-код на Android проекте

Попадая на новый проект с долгой историей, вас неизбежно ждёт легаси-код. Возможно, проект прошёл через несколько команд, и теперь он в ваших руках. Бывает, что на проекте уже нет контекст-овнера, а на любой вопрос тимлид отвечает: «Так исторически сложилось».

Приложение может тормозить, состояние определяться десятками мутабельных переменных. Фризы, утечки памяти, файлы на сотни, а то и тысячи строк кода. Год-обжекты. Знакомо?

Автор даёт несколько советов, которые помогут разобраться в происходящем и распутать спагетти-код.

👉 Читать статью

Библиотека мобильного разработчика #свежак
4.04.2025, 10:01
t.me/mobileproglib/5723
⚔️ Микросервисы vs. Монолит

В мире разработки программного обеспечения выбор архитектурного подхода — это один из самых важных и стратегических шагов.

На одной стороне баррикад стоят микросервисы, обещающие гибкость, масштабируемость и независимость команд. На другой — монолитные приложения, которые, несмотря на свою кажущуюся устарелость, продолжают привлекать разработчиков своей простотой и целостностью.

Какой подход лучше? Микросервисы действительно обеспечивают более быструю разработку и развёртывание, или же монолиты всё ещё имеют свои преимущества в стабильности и управляемости?

❤️ — Микросервисы
🤝 — Монолит

Библиотека мобильного разработчика #междусобойчик
3.04.2025, 21:05
t.me/mobileproglib/5722
💻 How to: реализовать кастомный делегат

Чтобы написать кастомный делегат, нужно определить класс, который реализует интерфейс ReadOnlyProperty для делегата val или ReadWriteProperty для делегата var.

Классы, реализующие ReadOnlyProperty и ReadWriteProperty, содержат два метода:

• getValue(thisRef: T, property: KProperty<*>): R, который должен возвращать значение свойства.

• setValue(thisRef: T, property: KProperty<*>, value: R), который должен устанавливать значение свойства.

Например, рассмотрим создание кастомного делегата для логирования изменения значения свойства:

class LoggingDelegate(private var value: T) : ReadWriteProperty {override fun getValue(thisRef: Any?, property: KProperty): T {println(«Getting value of ${property.name}: $value»)return value}override fun setValue(thisRef: Any?, property: KProperty, value: T) {println(«Setting value of ${property.name} to $value»)this.value = value}}

Здесь мы определяем класс LoggingDelegate, который реализует интерфейс ReadWriteProperty. Метод getValue выводит в консоль текущее значение свойства и возвращает его, а метод setValue выводит новое значение свойства в консоль и сохраняет его в переменной value.

Затем мы можем использовать наш кастомный делегат следующим образом:

class MyClass {var myProperty: Int by LoggingDelegate(0)}fun main() {val obj = MyClass()obj.myProperty = 42 // Setting value of myProperty to 42println(obj.myProperty) // Getting value of myProperty: 42}

Здесь мы создаем экземпляр класса MyClass, который содержит свойство myProperty, использующее наш кастомный делегат LoggingDelegate. При установке значения свойства или получении его значения будут вызываться соответствующие методы нашего делегата, и мы увидим соответствующие сообщения в консоли.

👉 Подробнее в статье

Библиотека мобильного разработчика #буст
3.04.2025, 12:29
t.me/mobileproglib/5721
#мем
2.04.2025, 21:07
t.me/mobileproglib/5720
📝 Промпт для идеального код ревью

Чтобы облегчить код ревью, используйте этот промпт для ChatGPT:

1. Проанализируй приведенный [язык] код на предмет признаков проблемного кода и предложи улучшения: [фрагмент кода].
2. Проверь [язык] код на предмет правильности логирования и мониторинга: [фрагмент кода].
3. Проанализируй [язык] код на предмет потенциальных проблем масштабируемости: [фрагмент кода].
4. Оцени тестовое покрытие этого [язык] кода: [фрагмент кода].
5. Оцени [язык] код на совместимость с [платформой или технологией]: [фрагмент кода].

⚡ Как вы обычно проводите код ревью? Делитесь в комментариях!

Библиотека мобильного разработчика #буст
2.04.2025, 10:01
t.me/mobileproglib/5719
🧐 Разбираемся: FAANG — не мечта, а капкан

Раньше работа в Google или Meta казалась вершиной айтишной карьеры. Сейчас — всё чаще звучат слова «стресс», «сокращения», «выгорание».

➡️ В статье разбираем

— Почему бывшие сотрудники бегут из FAANG
— Как изменилась культура внутри Big Tech
— Где теперь искать стабильность и уважение
— Реальные комментарии от действующих инженеров
— И что на самом деле стоит за блестящей обёрткой FAANG

Если вы всё ещё решаете LeetCode ради «заветной должности» — обязательно прочитайте нашу статью.

📎 Ссылка

🔵 Включайся в обучение и устраивайся куда хочешь, тебя ждет продвинутый этап нашего курса «Алгоритмы и структуры данных»
2.04.2025, 04:06
t.me/mobileproglib/5718
https://t.me/proglib_academy/2652
1.04.2025, 21:02
t.me/mobileproglib/5717
🎰 Инструмент недели: SDK для скретч-карт

Scratchify — это легкий и настраиваемый SDK для скретч-карт, созданный с использованием Jetpack Compose Multiplatform (поддерживает Android и iOS). Он позволяет создавать интерактивные скретч-поверхности, на которых пользователи могут соскрести верхний слой, чтобы открыть скрытый под ней контент. Идеально подходит для поощрений, скидок, сюрпризов и элементов геймификации в вашем приложении.

⚙️ Scratchify на GitHub

Библиотека мобильного разработчика #буст
1.04.2025, 14:02
t.me/mobileproglib/5716
🎰 Инструмент недели: SDK для скретч-карт

Scratchify — это легкий и настраиваемый SDK для скретч-карт, созданный с использованием Jetpack Compose Multiplatform (поддерживает Android и iOS). Он позволяет создавать интерактивные скретч-поверхности, на которых пользователи могут соскрести верхний слой, чтобы открыть скрытый под ней контент. Идеально подходит для поощрений, скидок, сюрпризов и элементов геймификации в вашем приложении.

⚙️ Scratchify на GitHub

Библиотека мобильного разработчика #буст
1.04.2025, 10:04
t.me/mobileproglib/5715
🎭 Dev Memes: 1 апреля, а баги всё те же

Сегодня день официально разрешённого троллинга — и мы не могли пройти мимо. Собрали подборку мемов для мобильного разработчика, которые вызывают лёгкое желание уволиться.

👉 Всё это — из нашего мемного канала «Библиотека IT-мемов»

Библиотека мобильного разработчика
1.04.2025, 10:03
t.me/mobileproglib/5709
🗓️ Апрель будет насыщен конференциями и профильными тусовками разного масштаба.

🔹 Gamedev CityFest

• Когда: 5 апреля
• Где: Новосибирск
• Формат: офлайн
• Участие: платное

Конференция будет интересна разработчикам игр: как профессионалам направления, так и новичкам, издателям, гейм-дизайнерам, художникам, продюсерам, рекрутерам и другим специалистам индустрии. Участников ждёт три потока докладов, воркшоп и дискуссионная панель на актуальные темы.

🔹 HolyJS 2025 Spring

• Когда: 7-8 апреля
• Где: Москва
• Формат: онлайн и офлайн
• Участие: платное

Спикеры на конференции разберут JS-разработку с разных ракурсов: веб-технологии, Node.js, графика и анимации, web3, блокчейн. Будут разобраны реальные кейсы и подняты вопросы безопасности. Участники обменяются опытом, обсудят обновление языка JavaScript, поговорят о фреймворках и инструментах, а также поучаствуют в дискуссиях со спикерами.

👉 Читать полностью

Библиотека мобильного разработчика #свежак
31.03.2025, 21:05
t.me/mobileproglib/5708
🚰 Топ-7 утечек памяти Android

Утечки памяти — тихие убийцы производительности приложений. Даже в 2025 году, когда Jetpack Compose доминирует в разработке пользовательских интерфейсов и появляются новые модные инструменты, эти ошибки все еще преследуют разработчиков.

Автор статьи разберет 7 наиболее распространенных виновников и вооружит вас проверенными в бою решениями.

👉 Читать статью

Библиотека мобильного разработчика #свежак
31.03.2025, 14:00
t.me/mobileproglib/5707
📝 Шпаргалка: автозамыкание (autoclosure) в Swift

Автозамыкание оборачивает аргумент функции в замыкание.

Когда вызывается autoclosure, оно возвращает значение выражения, завернутого внутрь.

Автозамыкание — это не что иное, как синтаксическое удобство для написания более чистого кода.

Иногда синтаксически удобно использовать autoclosure при работе с функцией, которая принимает аргумент замыкания.

Это происходит потому, что autoclosure позволяет не использовать фигурные скобки {}.

Это может сделать код более читабельным.

Однако помните, что Apple говорит об использовании автозамыканий :

Обычно принято вызывать функции, которые принимают autoclosure, но не принято реализовывать такого рода функции.

Вот пример того, как autoclosure упрощает код. В первом фрагменте используется обычное замыкание, а во втором — autoclosure. Посмотрите, как вызов функции I_will стал более читабельным во втором фрагменте:

func I_will(_ perform_action: () -> Void) {perform_action()}I_will({print(«Hello, world!»)})

func I_will(_ perform_action: @autoclosure () -> Void) {perform_action()}I_will(print(«Hello, world»))

Как видите, вызов функции I_will больше не требует использования фигурных скобок.

Библиотека мобильного разработчика #буст
31.03.2025, 12:59
t.me/mobileproglib/5706
📝 Шпаргалка: автозамыкание (autoclosure) в Swift

Автозамыкание оборачивает аргумент функции в замыкание.

Когда вызывается autoclosure, оно возвращает значение выражения, завернутого внутрь.

Автозамыкание — это не что иное, как синтаксическое удобство для написания более чистого кода.

Иногда синтаксически удобно использовать autoclosure при работе с функцией, которая принимает аргумент замыкания.

Это происходит потому, что autoclosure позволяет не использовать фигурные скобки {}.

Это может сделать код более читабельным.

Однако помните, что Apple говорит об использовании автозамыканий :

Обычно принято вызывать функции, которые принимают autoclosure, но не принято реализовывать такого рода функции.

Вот пример того, как autoclosure упрощает код. В первом фрагменте используется обычное замыкание, а во втором — autoclosure. Посмотрите, как вызов функции I_will стал более читабельным во втором фрагменте:

func I_will(_ perform_action: () -> Void) {perform_action()}I_will({print(«Hello, world!»)})

func I_will(_ perform_action: @autoclosure () -> Void) {perform_action()}I_will(print(«Hello, world»))

Как видите, вызов функции I_will больше не требует использования фигурных скобок.

Библиотека мобильного разработчика #буст
31.03.2025, 12:57
t.me/mobileproglib/5705
📝 Шпаргалка: автозамыкание (autoclosure) в Swift

Автозамыкание оборачивает аргумент функции в замыкание.

Когда вызывается autoclosure, оно возвращает значение выражения, завернутого внутрь.

Автозамыкание — это не что иное, как синтаксическое удобство для написания более чистого кода.

Иногда синтаксически удобно использовать autoclosure при работе с функцией, которая принимает аргумент замыкания.

Это происходит потому, что autoclosure позволяет не использовать фигурные скобки {}.

Это может сделать код более читабельным.

Однако помните, что Apple говорит об использовании автозамыканий :

Обычно принято вызывать функции, которые принимают autoclosure, но не принято реализовывать такого рода функции.

Вот пример того, как autoclosure упрощает код. В первом фрагменте используется обычное замыкание, а во втором — autoclosure. Посмотрите, как вызов функции I_will стал более читабельным во втором фрагменте:


func I_will(_ perform_action: () -> Void) {
perform_action()
}
I_will({
print(«Hello, world!»)
})


func I_will(_ perform_action: @autoclosure () -> Void) {
perform_action()
}
I_will(print(«Hello, world»))

Как видите, вызов функции I_will больше не требует использования фигурных скобок.

Библиотека мобильного разработчика #буст
31.03.2025, 12:55
t.me/mobileproglib/5704
🤔 Деньги или любимое дело?

Вопрос о выборе между работой, которая не приносит удовольствия, но обеспечивает высокий доход, и любимым делом с низкой зарплатой волнует многих. Каждый из нас сталкивается с этой дилеммой, и порой решение оказывается непростым.

Что важнее для вас: финансовая стабильность или удовлетворение от работы. Какой путь выберете вы? Голосуйте и пишите своё мнение в комментариях 💬

❤️ — работать не нелюбимой работе и много зарабатывать
🤝 — на любимой работе за маленькую зп

Библиотека мобильного разработчика #междусобойчик
29.03.2025, 17:39
t.me/mobileproglib/5702
#мем
29.03.2025, 12:03
t.me/mobileproglib/5701
🦊 Альтернативы Firefox: обзор 4 лучших форков для тех, кто разочаровался в Mozilla

Приватность, скорость, расширенные функции — что выбрать? Разбираем популярные форки браузеров и их преимущества.

Что в статье:

✔️ Обзор самых популярных форков браузеров

✔️ Их ключевые фишки, плюсы и минусы

✔️ Как выбрать оптимальный вариант под ваши задачи

Браузер — это не просто окно в интернет, а инструмент, который должен соответствовать вашим требованиям. Делитесь своим опытом в комментариях! 🚀

Прочитать подробнее статью 🔗

🐸 Библиотека тестировщика
28.03.2025, 22:28
t.me/mobileproglib/5700
⚡ Команды дня: cброс коммитов

Предположим, вы сделали коммит в своём проекте. Однако после проверки вы понимаете, что вам нужно скорректировать или полностью отменить последний коммит. Для таких случаев Git предоставляет следующие команды:

🔹 Soft reset

git reset --soft HEAD^

Эта команда позволяет вернуться к последнему коммиту, сохранив все изменения в области подготовки. Проще говоря, с помощью этой команды можно легко отменить коммит, сохранив изменения в коде. Это удобно, когда вам нужно пересмотреть последний коммит, возможно, добавить больше изменений перед повторным коммитом.

🔹 Mixed reset

git reset --mixed HEAD^

Это поведение по умолчанию, когда вы используете git reset HEAD^ без указания --soft или --hard. Он сбрасывает последний коммит и удаляет изменения из области подготовки. Однако эти изменения остаются в рабочей директории. Это полезно, когда вы хотите отменить последий коммит и внести изменения с нуля, сохранив изменения в рабочей директории перед повторным коммитом.

🔹 Hard reset

git reset --hard HEAD^

Напоследок давайте поговорим о команде git reset --hard HEAD^. Она полностью стирает последний коммит вместе со всеми связанными с ним изменениями из вашей истории Git. Когда вы используете флаг --hard, пути назад уже не будет. Поэтому используйте его с особой осторожностью, только если хотите навсегда удалить последний коммит и все его изменения.

Библиотека мобильного разработчика #буст
28.03.2025, 10:07
t.me/mobileproglib/5699
💵💻🌍 Как выйти на валютную удаленку и зарабатывать больше

Работа на зарубежные компании кажется идеальным вариантом: высокий доход, финансовая стабильность, свободный график.

Но реально ли получить такую работу, если ты живешь в другой стране и какие подводные камни мы разобрали в первой части статьи.

Что вы узнаете:

🔘 Плюсы и минусы работы на иностранные компании

🔘 Ключевые требования к кандидатам

🔘 Сложности, с которыми можно столкнуться

Если давно задумывались о переходе на валютную удаленку, но не знали, с чего начать — этот гайд для вас 🔗
28.03.2025, 02:58
t.me/mobileproglib/5698
https://t.me/proglib_jobs/89
27.03.2025, 21:21
t.me/mobileproglib/5697
https://t.me/proglib_jobs/89
27.03.2025, 21:06
t.me/mobileproglib/5696
🎧 Подкасты и видео о мобильной разработке

Собрали лучшее о мобильной разработке. Включаем и смотрим по пути на работу.

🎯 Дивный мир Swift Concurrency

🎯 Разработка под Apple Vision Pro

🎯 Мапим данные из domain в ui модуль в многомодульном проекте

Библиотека мобильного разработчика #буст
27.03.2025, 10:40
t.me/mobileproglib/5695
#мем
26.03.2025, 21:04
t.me/mobileproglib/5694
Чемпионат для подростков по 14 направлениям от «Алабуга Политех»☺️

Программирование и Битва роботов, Экономика и Юриспруденция, 3D моделирование и Английский язык и многое другое, чтобы каждый нашел свою дисциплину.

Для участия тебе нужно☺️
☺️Оставь заявку на сайте😀
☺️Пройди заочный этап на HR-платформе: Business Cats до 1,0 по «Общению» и «Аналитике» для оплаты дороги туда и обратно😀
☺️Приезжай на чемпионат😀

Мы предлагаем тебе☺️
☺️Общий призовой фонд турнира составляет 450 000 рублей😀
☺️Проживание и дорога бесплатно😀
☺️Возможность поступить в «Алабуга Политех»😀

Участвуй в турнире от образовательного центра мирового уровня и получай призы и преимущество в поступлении☺️

Реклама. ООО "Медиа ГУРУ", ИНН 7725710297. Erid 2VtzqvpAdnG
26.03.2025, 18:01
t.me/mobileproglib/5693
👨‍💻 Shader Ripple Effect Playground — библиотека шейдерных AGSL эффектов

Shader Ripple Effect Playground — библиотека шейдерных AGSL эффектов для Android. Есть эффект пульсации, реагирующий на касание, непрерывная волновая анимация с настраиваемыми параметрами, переход раскрытия содержимого с эффектом пульсации — все с настрйоками. Полная совместимость с любым элементом пользовательского интерфейса Jetpack Compose, простая интеграция с минимальным количеством кода.

⚙️ Shader Ripple Effect Playground на GitHub

Библиотека мобильного разработчика #буст
26.03.2025, 12:04
t.me/mobileproglib/5692
👨‍💻📈 Исследование IT-аудитории Proglib 2025: зарплаты, технологии, профессии

Кто такой современный разработчик в 2025 году? Актуальное исследование портрета IT-специалистов: зарплаты, технологии, специализации и демография разработчиков.

👉 Читать статью

Библиотека мобильного разработчика #свежак
25.03.2025, 15:42
t.me/mobileproglib/5691
1_FEDOR_H_1.mp4
12–13 апреля проводим Weekend Offer Mobile

Устроиться в Яндекс за выходные — реально. Ищем крутых Android- и iOS-разработчиков с опытом работы от 3 лет, готовых работать в офисном или гибридном режиме в России.

Подавайте заявку до 9 апреля — и всего за 2 дня пройдите все технические собеседования. После сможете пообщаться с нанимающими командами и выбрать ту, которая покажется самой интересной. Если всё сложится хорошо, сразу же пришлём вам офер.

Узнать подробности и зарегистрироваться.

Реклама. ООО "Яндекс". ИНН 7736207543
25.03.2025, 12:00
t.me/mobileproglib/5690
👨‍💻 How to: оптимизировать производительность iOS-приложения

Вот 10 практических хаков для повышения производительности iOS-приложения, проверенных на производственных проектах.

1️⃣ Безжалостно профилируйте с помощью инструментов.

Инструменты: в Xcode есть Time Profiler, Allocations и Energy Log (Xcode -> Open Developer Tool -> Instruments).

Что делать: выявляйте узкие места, анализируя использование процессора, памяти и энергии. Например, используйте Time Profiler, чтобы выявить неэффективные циклы или чрезмерную нагрузку на DispatchQueue.

Профессиональный совет: отсортируйте трейсы по «тяжелому весу», чтобы найти самые затратные функции.

Почему это важно: 80% проблем с производительностью связаны с 20% вашего кода.

2️⃣ Оптимизируйте Auto Layout с помощью isActive.

Проблема: сложные иерархии ограничений приводят к тому, что проходы компоновки резко увеличивают нагрузку на процессор.

Решение: активируйте/деактивируйте ограничения массово, а не добавляйте/удаляйте их по отдельности:

NSLayoutConstraint.activate([ view.topAnchor.constraint(equalTo: parent.topAnchor), view.leadingAnchor.constraint(equalTo: parent.leadingAnchor) ])

Бонус: используйте UIStackView для более простых макетов и меньшего количества ограничений.

3️⃣ Сокращайте динамическую диспетчеризацию с помощью final и private.

Хак Swift: помечайте классы как final, а методы как private, чтобы обеспечить оптимизацию компилятора:

final class NetworkManager { private func fetchData() { ... } // Static dispatch for faster execution }

Зачем: динамическая диспетчеризация (например, переопределение методов) увеличивает накладные расходы во время выполнения.

4️⃣ Кешируйте дорогостоящие операции.

Пример: хранение декодированных изображений, ответов сети или вычисленных значений:

let imageCache = NSCache() ​func loadImage(url: URL) -> UIImage? { if let cachedImage = imageCache.object(forKey: url.absoluteString as NSString) { return cachedImage } // Decode and cache... }

Пример использования: избегайте повторения тяжелых задач, таких как декодирование изображений или разбор JSON.

5️⃣ Используйте CALayer.shouldRasterize для сложных представлений.

Когда: рендеринг сложных теней, трансформаций или анимаций.

Как: растеризуйте статичные слои в bitmap изображение один раз:

layer.shouldRasterize = true layer.rasterizationScale = UIScreen.main.scale

6️⃣ Выгружайте работы в фоновые потоки.

Золотое правило: держите основной поток свободным для обновления пользовательского интерфейса.

DispatchQueue.global(qos: .userInitiated).async { let processedData = parseLargeJSON() DispatchQueue.main.async { self.updateUI(with: processedData) } }

Избегайте: блокирования основного потока синхронными вызовами или тяжелыми вычислениями.

7️⃣ Используйте UILabel.preferredMaxLayoutWidth для ячеек.

Проблема: неправильная ширина меток заставляет выполнять лишние проходы по макету.

Исправление: установите preferredMaxLayoutWidth, чтобы избежать двусмысленных ограничений:

label.preferredMaxLayoutWidth = UIScreen.main.bounds.width — 32

Результат: более быстрая прокрутка UITableView/UICollectionView.

8️⃣ Выбирайте UIImage(named:) вместо UIImage(contentsOfFile:).

Почему: UIImage(named:) автоматически кэширует изображения в памяти, а contentsOfFile: — нет.

Лучше всего подходит для: часто используемых ресурсов (иконок, графики пользовательского интерфейса).

9️⃣ Минимизировать drawRect: переопределения.

Издержки: кастомное рисование требует больших затрат процессора.

Альтернатива: используйте предварительно отрисованные изображения или свойства слоя (например, cornerRadius, borderWidth).

🔟 Лениво загружайте невидимое содержимое.

Стратегия: отложите загрузку внеэкранных представлений, данных или медиа.

lazy var analyticsManager: AnalyticsManager = { return AnalyticsManager() // Initialize only when first accessed }()

Применяйте: для тяжелых объектов, баз данных или SDK сторонних разработчиков.

Библиотека мобильного разработчика #свежак
25.03.2025, 10:10
t.me/mobileproglib/5689
📱 Размещение UI-компонентов в пределах отступов Safe Area

Безопасная область (safe area) — это часть экрана, которую не загораживают элементы системного UI, такие как строка состояния, панель навигации, динамический остров и пр.

По умолчанию SwiftUI гарантирует, что представления будут размещены в этой безопасной области, чтобы сохранить видимость и доступность. Однако бывают случаи, когда разработчикам требуется больше контроля над тем, как представления взаимодействуют с этими границами.

👉 Читать статью

Библиотека мобильного разработчика #свежак
24.03.2025, 21:03
t.me/mobileproglib/5688
☸️ CKAD 2025. Самый свежий гайд по сдаче сертификации Certified Kubernetes Application Developer

CKAD стал более строгим к деталям — без системной подготовки можно завалить даже на банальных заданиях. Если хочется разобраться, что важно для получения сертификации — эта статья сэкономит часы.

➡️ Читать статью

🐸Библиотека devops'a
24.03.2025, 14:01
t.me/mobileproglib/5687
👾 Это база: companion object (также Singleton)

Объекты можно объявлять внутри класса, при этом нет каких-либо ограничений по их количеству. Но только один объект можно пометить ключевым словом companion object в рамках одного класса.

Синглтон-свойство companion object достигается за счет того, что он создается внутри класса в качестве статического поля. Он будет инициализирован при первом обращении к нему или при создании первого экземпляра класса, в котором он объявлен.

Важно отметить, что companion object будет инициализирован первым, а затем уже будет создан экземпляр класса:

class MyClass {
init {
// Выполняется всегда после инициализации companion object
}
companion object {
init {
// Выполняется всегда перед блоком init содержащего класса
}}}
val myClass = MyClass()

Такому объекту можно не указывать свое имя, и обращаться к методам и свойствам объекта через имя содержащего его класса без явного указания имени объекта.

class SomeClass {
companion object {
fun create()
}
}
val someClass = SomeClass.create()

Компилируется в public static final class на Java. Работает подобно ключевому слову static в Java.

Библиотека мобильного разработчика #буст
24.03.2025, 11:10
t.me/mobileproglib/5686
Результаты поиска ограничены до 100 публикаций.
Некоторые возможности доступны только премиум пользователям.
Необходимо оплатить подписку, чтобы пользоваться этим функционалом.
Фильтр
Тип публикаций
Хронология похожих публикаций:
Сначала новые
Похожие публикации не найдены
Сообщения
Найти похожие аватары
Каналы 0
Высокий
Название
Подписчики
По вашему запросу ничего не подошло