tgoop.com »
United States »
Библиотека мобильного разработчика | Android, iOS, Swift, Retrofit, Moshi, Chuck » Telegram Web
🧩 Айтишный кроссворд
Держите кроссворд — зашифровали 6 понятий, часто используемых среди разработчиков.
1. Полезная фишечка.
2. Файлы и библиотеки, которые нужно использовать вместе, чтобы ускорить процесс загрузки страниц.
3. Перенос кода из разработки на рабочий сервер.
4. Готовый набор инструментов для разработки.
5. Полезная встреча айтишников.
6. Айтишник над айтишниками.
Попробуйте угадать!
Пишите ответы в комментариях 👇
Библиотека мобильного разработчика #междусобойчик
Держите кроссворд — зашифровали 6 понятий, часто используемых среди разработчиков.
1. Полезная фишечка.
2. Файлы и библиотеки, которые нужно использовать вместе, чтобы ускорить процесс загрузки страниц.
3. Перенос кода из разработки на рабочий сервер.
4. Готовый набор инструментов для разработки.
5. Полезная встреча айтишников.
6. Айтишник над айтишниками.
Попробуйте угадать!
Пишите ответы в комментариях 👇
Библиотека мобильного разработчика #междусобойчик
📱 Приготовили для вас дайджест по актуальному из мира iOS, Android и кроссплатформы.
🔹 Соединяем две точки с помощью отрезков прямых линий и закругленных углов в SwiftUI
🔹 Разработка под Apple Vision Pro
🔹 Ликбез по разрешениям в Android
🔹 Создаём многомодульную библиотеку на Android: как же собрать fat-aar?
🔹 Полезные библиотеки для React-приложений в 2025 году: на что обратить внимание
Библиотека мобильного разработчика #свежак
🔹 Соединяем две точки с помощью отрезков прямых линий и закругленных углов в SwiftUI
🔹 Разработка под Apple Vision Pro
🔹 Ликбез по разрешениям в Android
🔹 Создаём многомодульную библиотеку на Android: как же собрать fat-aar?
🔹 Полезные библиотеки для React-приложений в 2025 году: на что обратить внимание
Библиотека мобильного разработчика #свежак
👾 Это база: 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.Библиотека мобильного разработчика #буст
Forwarded from Библиотека девопса | DevOps, SRE, Sysadmin
☸️ CKAD 2025. Самый свежий гайд по сдаче сертификации Certified Kubernetes Application Developer
CKAD стал более строгим к деталям — без системной подготовки можно завалить даже на банальных заданиях. Если хочется разобраться, что важно для получения сертификации — эта статья сэкономит часы.
➡️ Читать статью
🐸 Библиотека devops'a
CKAD стал более строгим к деталям — без системной подготовки можно завалить даже на банальных заданиях. Если хочется разобраться, что важно для получения сертификации — эта статья сэкономит часы.
Please open Telegram to view this post
VIEW IN TELEGRAM
📱 Размещение UI-компонентов в пределах отступов Safe Area
Безопасная область (safe area) — это часть экрана, которую не загораживают элементы системного UI, такие как строка состояния, панель навигации, динамический остров и пр.
По умолчанию SwiftUI гарантирует, что представления будут размещены в этой безопасной области, чтобы сохранить видимость и доступность. Однако бывают случаи, когда разработчикам требуется больше контроля над тем, как представления взаимодействуют с этими границами.
👉 Читать статью
Библиотека мобильного разработчика #свежак
Безопасная область (safe area) — это часть экрана, которую не загораживают элементы системного UI, такие как строка состояния, панель навигации, динамический остров и пр.
По умолчанию SwiftUI гарантирует, что представления будут размещены в этой безопасной области, чтобы сохранить видимость и доступность. Однако бывают случаи, когда разработчикам требуется больше контроля над тем, как представления взаимодействуют с этими границами.
👉 Читать статью
Библиотека мобильного разработчика #свежак
👨💻 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 с помощью
Проблема: сложные иерархии ограничений приводят к тому, что проходы компоновки резко увеличивают нагрузку на процессор.
Решение: активируйте/деактивируйте ограничения массово, а не добавляйте/удаляйте их по отдельности:
Бонус: используйте UIStackView для более простых макетов и меньшего количества ограничений.
3️⃣ Сокращайте динамическую диспетчеризацию с помощью
Хак Swift: помечайте классы как
Зачем: динамическая диспетчеризация (например, переопределение методов) увеличивает накладные расходы во время выполнения.
4️⃣ Кешируйте дорогостоящие операции.
Пример: хранение декодированных изображений, ответов сети или вычисленных значений:
Пример использования: избегайте повторения тяжелых задач, таких как декодирование изображений или разбор JSON.
5️⃣ Используйте
Когда: рендеринг сложных теней, трансформаций или анимаций.
Как: растеризуйте статичные слои в bitmap изображение один раз:
6️⃣ Выгружайте работы в фоновые потоки.
Золотое правило: держите основной поток свободным для обновления пользовательского интерфейса.
Избегайте: блокирования основного потока синхронными вызовами или тяжелыми вычислениями.
7️⃣ Используйте
Проблема: неправильная ширина меток заставляет выполнять лишние проходы по макету.
Исправление: установите preferredMaxLayoutWidth, чтобы избежать двусмысленных ограничений:
Результат: более быстрая прокрутка
8️⃣ Выбирайте
Почему:
9️⃣ Минимизировать
Издержки: кастомное рисование требует больших затрат процессора.
Альтернатива: используйте предварительно отрисованные изображения или свойства слоя (например,
🔟 Лениво загружайте невидимое содержимое.
Стратегия: отложите загрузку внеэкранных представлений, данных или медиа.
Применяйте: для тяжелых объектов, баз данных или SDK сторонних разработчиков.
Библиотека мобильного разработчика #свежак
Вот 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 сторонних разработчиков.
Библиотека мобильного разработчика #свежак
👨💻📈 Исследование IT-аудитории Proglib 2025: зарплаты, технологии, профессии
Кто такой современный разработчик в 2025 году? Актуальное исследование портрета IT-специалистов: зарплаты, технологии, специализации и демография разработчиков.
👉 Читать статью
Библиотека мобильного разработчика #свежак
Кто такой современный разработчик в 2025 году? Актуальное исследование портрета IT-специалистов: зарплаты, технологии, специализации и демография разработчиков.
👉 Читать статью
Библиотека мобильного разработчика #свежак
👨💻 Shader Ripple Effect Playground — библиотека шейдерных AGSL эффектов
Shader Ripple Effect Playground — библиотека шейдерных AGSL эффектов для Android. Есть эффект пульсации, реагирующий на касание, непрерывная волновая анимация с настраиваемыми параметрами, переход раскрытия содержимого с эффектом пульсации — все с настрйоками. Полная совместимость с любым элементом пользовательского интерфейса Jetpack Compose, простая интеграция с минимальным количеством кода.
⚙️ Shader Ripple Effect Playground на GitHub
Библиотека мобильного разработчика #буст
Shader Ripple Effect Playground — библиотека шейдерных AGSL эффектов для Android. Есть эффект пульсации, реагирующий на касание, непрерывная волновая анимация с настраиваемыми параметрами, переход раскрытия содержимого с эффектом пульсации — все с настрйоками. Полная совместимость с любым элементом пользовательского интерфейса Jetpack Compose, простая интеграция с минимальным количеством кода.
⚙️ Shader Ripple Effect Playground на GitHub
Библиотека мобильного разработчика #буст
🎧 Подкасты и видео о мобильной разработке
Собрали лучшее о мобильной разработке. Включаем и смотрим по пути на работу.
🎯 Дивный мир Swift Concurrency
🎯 Разработка под Apple Vision Pro
🎯 Мапим данные из domain в ui модуль в многомодульном проекте
Библиотека мобильного разработчика #буст
Собрали лучшее о мобильной разработке. Включаем и смотрим по пути на работу.
🎯 Дивный мир Swift Concurrency
🎯 Разработка под Apple Vision Pro
🎯 Мапим данные из domain в ui модуль в многомодульном проекте
Библиотека мобильного разработчика #буст
Forwarded from IT Job Hub | Работа и вакансии в IT
Работа на зарубежные компании кажется идеальным вариантом: высокий доход, финансовая стабильность, свободный график.
Но реально ли получить такую работу, если ты живешь в другой стране и какие подводные камни мы разобрали в первой части статьи.
Что вы узнаете:
Если давно задумывались о переходе на валютную удаленку, но не знали, с чего начать — этот гайд для вас
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡ Команды дня: cброс коммитов
Предположим, вы сделали коммит в своём проекте. Однако после проверки вы понимаете, что вам нужно скорректировать или полностью отменить последний коммит. Для таких случаев Git предоставляет следующие команды:
🔹 Soft reset
Эта команда позволяет вернуться к последнему коммиту, сохранив все изменения в области подготовки. Проще говоря, с помощью этой команды можно легко отменить коммит, сохранив изменения в коде. Это удобно, когда вам нужно пересмотреть последний коммит, возможно, добавить больше изменений перед повторным коммитом.
🔹 Mixed reset
Это поведение по умолчанию, когда вы используете
🔹 Hard reset
Напоследок давайте поговорим о команде
Библиотека мобильного разработчика #буст
Предположим, вы сделали коммит в своём проекте. Однако после проверки вы понимаете, что вам нужно скорректировать или полностью отменить последний коммит. Для таких случаев 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
, пути назад уже не будет. Поэтому используйте его с особой осторожностью, только если хотите навсегда удалить последний коммит и все его изменения.Библиотека мобильного разработчика #буст
Forwarded from Библиотека тестировщика | QA, тестирование, quality assurance, manual testing, autotesting, ручное тестирование, автотесты
Приватность, скорость, расширенные функции — что выбрать? Разбираем популярные форки браузеров и их преимущества.
Что в статье:
Браузер — это не просто окно в интернет, а инструмент, который должен соответствовать вашим требованиям. Делитесь своим опытом в комментариях!
Прочитать подробнее статью
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Деньги или любимое дело?
Вопрос о выборе между работой, которая не приносит удовольствия, но обеспечивает высокий доход, и любимым делом с низкой зарплатой волнует многих. Каждый из нас сталкивается с этой дилеммой, и порой решение оказывается непростым.
Что важнее для вас: финансовая стабильность или удовлетворение от работы. Какой путь выберете вы? Голосуйте и пишите своё мнение в комментариях 💬
❤️ — работать не нелюбимой работе и много зарабатывать
🤝 — на любимой работе за маленькую зп
Библиотека мобильного разработчика #междусобойчик
Вопрос о выборе между работой, которая не приносит удовольствия, но обеспечивает высокий доход, и любимым делом с низкой зарплатой волнует многих. Каждый из нас сталкивается с этой дилеммой, и порой решение оказывается непростым.
Что важнее для вас: финансовая стабильность или удовлетворение от работы. Какой путь выберете вы? Голосуйте и пишите своё мнение в комментариях 💬
❤️ — работать не нелюбимой работе и много зарабатывать
🤝 — на любимой работе за маленькую зп
Библиотека мобильного разработчика #междусобойчик
📱 Приготовили для вас дайджест по актуальному из мира iOS, Android и кроссплатформы.
🔹 Настраиваем работу с iOS-проектами в Zed
🔹 Расследуем дело асинхронного программирования с Леонидом Каневским
🔹 Хакнуть Qt: как мы запускали Picture-in-Picture в навигаторе 2ГИС
🔹 Как мы ускоряли Android-сборку «селлера»
🔹 Автоматизация версионирования в Kotlin Multiplatform: Решение для Android и iOS
Библиотека мобильного разработчика #свежак
🔹 Настраиваем работу с iOS-проектами в Zed
🔹 Расследуем дело асинхронного программирования с Леонидом Каневским
🔹 Хакнуть Qt: как мы запускали Picture-in-Picture в навигаторе 2ГИС
🔹 Как мы ускоряли Android-сборку «селлера»
🔹 Автоматизация версионирования в Kotlin Multiplatform: Решение для Android и iOS
Библиотека мобильного разработчика #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
🚰 Топ-7 утечек памяти Android
Утечки памяти — тихие убийцы производительности приложений. Даже в 2025 году, когда Jetpack Compose доминирует в разработке пользовательских интерфейсов и появляются новые модные инструменты, эти ошибки все еще преследуют разработчиков.
Автор статьи разберет 7 наиболее распространенных виновников и вооружит вас проверенными в бою решениями.
👉 Читать статью
Библиотека мобильного разработчика #свежак
Утечки памяти — тихие убийцы производительности приложений. Даже в 2025 году, когда Jetpack Compose доминирует в разработке пользовательских интерфейсов и появляются новые модные инструменты, эти ошибки все еще преследуют разработчиков.
Автор статьи разберет 7 наиболее распространенных виновников и вооружит вас проверенными в бою решениями.
👉 Читать статью
Библиотека мобильного разработчика #свежак
🗓️ Апрель будет насыщен конференциями и профильными тусовками разного масштаба.
🔹 Gamedev CityFest
• Когда: 5 апреля
• Где: Новосибирск
• Формат: офлайн
• Участие: платное
Конференция будет интересна разработчикам игр: как профессионалам направления, так и новичкам, издателям, гейм-дизайнерам, художникам, продюсерам, рекрутерам и другим специалистам индустрии. Участников ждёт три потока докладов, воркшоп и дискуссионная панель на актуальные темы.
🔹 HolyJS 2025 Spring
• Когда: 7-8 апреля
• Где: Москва
• Формат: онлайн и офлайн
• Участие: платное
Спикеры на конференции разберут JS-разработку с разных ракурсов: веб-технологии, Node.js, графика и анимации, web3, блокчейн. Будут разобраны реальные кейсы и подняты вопросы безопасности. Участники обменяются опытом, обсудят обновление языка JavaScript, поговорят о фреймворках и инструментах, а также поучаствуют в дискуссиях со спикерами.
👉 Читать полностью
Библиотека мобильного разработчика #свежак
🔹 Gamedev CityFest
• Когда: 5 апреля
• Где: Новосибирск
• Формат: офлайн
• Участие: платное
Конференция будет интересна разработчикам игр: как профессионалам направления, так и новичкам, издателям, гейм-дизайнерам, художникам, продюсерам, рекрутерам и другим специалистам индустрии. Участников ждёт три потока докладов, воркшоп и дискуссионная панель на актуальные темы.
🔹 HolyJS 2025 Spring
• Когда: 7-8 апреля
• Где: Москва
• Формат: онлайн и офлайн
• Участие: платное
Спикеры на конференции разберут JS-разработку с разных ракурсов: веб-технологии, Node.js, графика и анимации, web3, блокчейн. Будут разобраны реальные кейсы и подняты вопросы безопасности. Участники обменяются опытом, обсудят обновление языка JavaScript, поговорят о фреймворках и инструментах, а также поучаствуют в дискуссиях со спикерами.
👉 Читать полностью
Библиотека мобильного разработчика #свежак