iOS Разработчик — от 4000 до 8000 $, удалёнка
Flutter-разработчик — до 3 200 $, удалёнка
iOS-разработчик — гибрид (Москва)
React Native разработчик — гибрид (Москва)
iOS-разработчик — гибрид (Новосибирск, Томск)
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍2
Проблема:
При быстром скролле лента тормозит, а видео подгружаются с задержкой. Как сделать плавную работу?
Решение:
// Настройка PagingSource
class VideoPagingSource : PagingSource<Int, Video>() {
override suspend fun load(params: LoadParams<Int>): LoadResult<Int, Video> {
val page = params.key ?: 0
return try {
val response = api.getVideos(page)
LoadResult.Page(
data = response.videos,
prevKey = if (page == 0) null else page - 1,
nextKey = if (response.isLastPage) null else page + 1
)
} catch (e: Exception) {
LoadResult.Error(e)
}
}
}
func loadMoreVideosIfNeeded(currentIndex: Int) {
if currentIndex == videos.count - 2 { // Предзагрузка при приближении к концу
loadNextPage()
}
}
val videoViews = mutableListOf<VideoView>().apply {
repeat(3) { add(VideoView(context)) } // Только 3 плеера в памяти
}
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤1
Обфускация — важная часть защиты Android-приложений. Однако даже R8 или ProGuard не гарантируют высокой устойчивости к тому что ваш код не взломают. Стандартная настройка обфускации довольно простая и нацелена на уменьшение размера сборки, а не повышение защиты от взлома.
В этой статье автор разбирает как происходит обфускация в стандартной конфигурации, как можно её сделать сложнее для разбора, а по итогу и уникальной для каждой сборки.
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤3
ProgressUI — это пакет SwiftUI, реализующий легко настраиваемый круговой индикатор прогресса. Он поддерживает динамическое окрашивание в зависимости от уровня прогресса, а также предлагает несколько вариантов размеров.
Благодаря плавной анимации, этот индикатор идеально подходит для отображения процессов, состояний загрузки или индикаторов состояния в приложениях для iOS, macOS, watchOS, visionOS и tvOS.
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5
🥵 Устали от статей, где эйчары рассказывают, как на самом деле выглядит рынок труда в ИТ?
Мы тоже! Поэтому решили узнать правду и представить ее всем айтишникам — но нам нужен ваш голос. Опрос займет 3 минуты, а пользы — вагон для всего сообщества.
Результаты этого исследования помогут понять, как специалистам искать работу в 2025-м (а компаниям — специалистов).
👉 Если вы готовы сделать свой вклад в исследование — велком: https://clc.to/VGgyNA
Мы тоже! Поэтому решили узнать правду и представить ее всем айтишникам — но нам нужен ваш голос. Опрос займет 3 минуты, а пользы — вагон для всего сообщества.
Результаты этого исследования помогут понять, как специалистам искать работу в 2025-м (а компаниям — специалистов).
👉 Если вы готовы сделать свой вклад в исследование — велком: https://clc.to/VGgyNA
Собрали лучшее о мобильной разработке. Включаем и смотрим по пути на работу.
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
Отложенная инициализация свойств — это механизм, который позволяет отложить инициализацию переменных до момента их первого использования.
Этот вариант позволяет экономить ресурсы, т.к. избегает необходимости создания объектов при инициализации класса.
Модификатор
lateinit
говорит о том, что данная переменная будет инициализирована позже. При этом инициализировать свойство можно из любого места, откуда она видна.Правила использования модификатора
lateinit
:lateinit
может использоваться только с var свойствами класса;lateinit
может быть применен только к свойствам, объявленным внутри тела класса (но не в основном конструкторе), а также к переменным на верхнем уровне и локальным переменным;lateinit
свойства могут иметь любой тип, кроме примитивных типов (таких как Int, Long, Double и т.д.);lateinit
свойства не могут быть nullable (т.е. обязательно должно быть объявлены без знака вопроса);lateinit
свойства не могут быть проинициализированы сразу при их объявлении;lateinit
свойства должны быть инициализированы до первого обращения к ним, иначе будет выброшено исключение UninitializedPropertyAccessException
;lateinit
для переменных, определенных внутри локальных областей видимости (например, внутри функций);lateinit
у свойства не должно быть пользовательских геттеров и сеттеров.Для проверки факта инициализации переменной вызывайте метод
isInitialized()
. Функцию следует использовать экономно — не следует добавлять эту проверку к каждой переменной с отложенной инициализацией. Если вы используете isInitialized()
слишком часто, то скорее всего вам лучше использовать тип с поддержкой null.lateinit var catName: String
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
catName = "Barsik"
if (::catName.isInitialized) {
Log.d("Kot", "Hi, $catName")
}
}
А вы используете lateinit в своих проектах?
#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7😁2❤1
Знакомая ситуация? Вы исправили баг в
feature-branch
, но нужно срочно добавить этот фикс в main
без мержа всей ветки.Вот как это работает:
git cherry-pick <hash-коммита> # переносит указанный коммит в текущую ветку
Пример использования:
1. Нашли коммит с нужным исправлением:
git log feature-branch --oneline # копируем хеш коммита
2. Переключились на
main
и применили его:git checkout main
git cherry-pick abc1234
Вы уже использовали cherry-pick? Делитесь кейсами в комментариях
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9
Фокусировка в Jetpack Compose — это не просто перемещение курсора между элементами. За этим процессом стоит сложная система нод, модификаторов и алгоритмов, которые определяют, какой элемент должен получить фокус в каждый момент времени.
В этой статье автор разберёт основы: что такое фокус, как он работает, какие модификаторы и инструменты предоставляет Jetpack Compose, а также как использовать их для построения удобных интерфейсов.
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
Как показывает практика, это актуальная дилемма как для заказчиков, так и для начинающих разработчиков, которые хотят приобрести наиболее полезный опыт для дальнейшей карьеры.
Кроссплатформенные приложения дешевле, работают сразу на двух платформах, а дизайн и разработка занимают меньше времени.
Нативные приложения дороже, зато обеспечивают лучший пользовательский опыт и подходят для крупных и долгосрочных проектов.
Что вы предпочитаете для мобильной разработки? Голосуйте и пишите своё мнение в комментариях
❤️ — нативная разработка
👍 — кроссплатформенная
#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
❤32👍11
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3❤2
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Что выведет код?
Anonymous Quiz
34%
true, true, true, false
53%
true, false, true, false
10%
true, true, false, false
3%
false, false, true, true
❤5👾2
Senior Flutter Developer — от 3 000 до 6 000 €, офис (Кипр)
Разработчик React Native — до 160 000 ₽, гибрид (Калининград)
Senior Android-разработчик в Mobile-Core — гибрид (Москва)
Kotlin / Flutter expert (проектная занятость) — удалёнка
Стажёр-разработчик IOS, Ozon Tech — гибрид
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2❤1
This media is not supported in your browser
VIEW IN TELEGRAM
Робот Android — любимый маскот пользователей и разработчиков Android. И предыдущие версии конструктора таких ботов были очень популярны — в Google в этом году переделали конструктор ботов с нуля, используя новейшие технологии, поддерживаемые Gemini.
Недавно компания выпустила новое приложение с открытым исходным кодом, Androidify, с помощью которого можно научиться создавать мощный опыт на базе ИИ на Android с использованием новейших технологий.
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍3
Автор доклада расскажет, как с помощью анализа кода и ряда оптимизаций удалось ускорить работу компонентов iOS-приложения в 5–10 раз и как это повлияло на основные метрики скорости приложения.
Также автор обсудит идеи, стратегии и трюки, которые сделали возможным это улучшение, начиная с диагностики проблемы и заканчивая реализацией самых эффективных решений.
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
😱 Вся правда об увольнениях в IT в 2025-м
Пока все молчат о том, что происходит на рынке, мы решили выяснить реальную картину. Без прикрас и корпоративного пиара.
Но для этого нам нужна ваша помощь! Мы собираем данные от разработчиков, тестировщиков, менеджеров и всех, кто работает в ИТ, чтобы создать честное исследование о:
— реальных причинах массовых увольнений
— судьбе тех, кто остался за бортом IT-рынка
— том, сколько времени сейчас нужно на поиск работы
Почему это важно? Потому что сила в правде. Зная реальную ситуацию, вы сможете лучше понимать тренды рынка и планировать карьеру.
⚡️Пройдите опрос и помогите всему сообществу: https://clc.to/yJ5krg
Пока все молчат о том, что происходит на рынке, мы решили выяснить реальную картину. Без прикрас и корпоративного пиара.
Но для этого нам нужна ваша помощь! Мы собираем данные от разработчиков, тестировщиков, менеджеров и всех, кто работает в ИТ, чтобы создать честное исследование о:
— реальных причинах массовых увольнений
— судьбе тех, кто остался за бортом IT-рынка
— том, сколько времени сейчас нужно на поиск работы
Почему это важно? Потому что сила в правде. Зная реальную ситуацию, вы сможете лучше понимать тренды рынка и планировать карьеру.
⚡️Пройдите опрос и помогите всему сообществу: https://clc.to/yJ5krg
😁3❤1