Как стать автором
Обновить
5
0
Артём Суханов @Stakancheck

Мобильный разработчик

Отправить сообщение

Как я делаю build больших Android/iOS проектов со 128 GB памяти на старом Mac

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров3.1K

Наверняка вы не раз сталкивались с проблемой нехватки памяти на вашем ПК при билде проектов? Недавно мне стало не хватать основной памяти на диске, где установлена система MacOS. Решением проблемы послужило приобретение внешнего SSD диска. Как же настроить работу билдов Android и iOS на внешнем диске и перенести все проекты и приложения? Об этом и пойдет речь в этой статье. Приятного чтения!

Читать далее
Всего голосов 5: ↑3 и ↓2+1
Комментарии22

Room для Kotlin Multiplatform. Пробуем нативное решение

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров6.5K

Всем привет! На связи Анна Жаркова, руководитель группы мобильной разработки в компании Usetech. В начале мая Google нас порадовали релизами нескольких библиотек для локальных хранилищ. Наконец, в приложения Kotlin Multiplatform можно полноценно использовать Room (версия 2.7.0-alpha01 и выше).
И сегодня мы опробуем работу с данной библиотекой на примере небольшого приложения Todo, написанного на KMP с использованием Compose Multiplatform.


Кроме Room, в проекте используется библиотека Lifecycle-viewmodel для KMP. И Koin для DI и гармонии.

Читать дальше →
Всего голосов 8: ↑8 и ↓0+8
Комментарии11

Как работает NDA в разработке приложений? + шаблон НДА

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров1.8K

Текущий информационный мир полон не только возможностей, но и ограничений. Если вы работает в B2B и B2G, то не раз встречались с NDA от заказчика. Я расскажу о своем опыте в сфере аутсорсинг‑разработки: как выгодно пользоваться этим документом.

Читать далее
Всего голосов 2: ↑1 и ↓1+2
Комментарии4

Это всё, что останется после меня: проблемы наследования кода и передачи прав на него

Уровень сложностиПростой
Время на прочтение14 мин
Количество просмотров1.8K

Привет, Хабр. Меня зовут Ирина, и я предлагаю поговорить о том, какие права у нас есть на наш код и об их передаче. Мы рассмотрим, что такое код с точки зрения законодательства РФ; о том, как мы можем передать права на код; что такое наследование кода и как его можно унаследовать.

Читать далее
Всего голосов 15: ↑12 и ↓3+18
Комментарии1

Осознанная оптимизация Compose

Уровень сложностиСредний
Время на прочтение29 мин
Количество просмотров47K

Привет, меня зовут Андрей Богомолов, я Android-разработчик в команде Платформа приложения Ozon Seller.

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

Наша команда Ozon Seller также столкнулась с этой проблемой. Мы решили собрать воедино все советы и наработки по написанию оптимизированного Compose-кода. Активное применение этих советов при оптимизации существующих экранов и написании новых существенно улучшило наши метрики: длительность лага по отношению к длительности скролла (hitch rate; чем меньше, тем лучше) экранов со списками упала в среднем с 15-19 % до 5-7 % (на 90-м перцентиле). Все эти советы и наработки мы описали в этой статье. Она будет полезна и начинающим, и опытным разработчикам, в ней подробно описаны оптимизации и механизмы Compose, а также рассказано про слабо задокументированных особенности и исправления ошибок, которые есть в других статьях. Давайте же начнём.

Читать далее
Всего голосов 37: ↑37 и ↓0+37
Комментарии15

Figma to Frontend: как мы автоматически синхронизируем дизайн и код

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров26K

Меня зовут Анастасия Кабалкина, я Head of design в VK Tech. В этой статье расскажу, как мы синхронизировали треть нашей дизайн-системы за счет автоматической генерации дизайн-токенов и компонентов.

Читать далее
Всего голосов 39: ↑36 и ↓3+41
Комментарии11

Как создавать анимации в Jetpack Compose

Время на прочтение25 мин
Количество просмотров25K

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

Читать далее
Всего голосов 17: ↑17 и ↓0+17
Комментарии1

Откуда возникает TransactionTooLargeException, если я ничего такого не делал?

Время на прочтение9 мин
Количество просмотров8.3K

Android-разработчиков часто спрашивают на технических собеседованиях, как запускать фрагменты, как передавать туда данные, почему нельзя класть много в аргументы, а много — это сколько, а что может пойти не так и т.д. Мы в Dodo тоже иногда такие вопросы задаём. Я думал, что понимал всё это, но оказалось, что довольно поверхностно. Всё изменилось, когда я столкнулся с частыми крашами TransactionTooLargeException в приложении Дринкит.

TransactionTooLargeException — это исключение из области IPC-вызовов (interprocess communication) и Android Binder. Но его можно получить в безобидной ситуации, когда, казалось бы, мы ничего такого не делали, и не пользовались IPC.

В этой статье предлагаю разобраться с этим крашем и поговорить про IPC-вызовы и Binder.

Читать далее
Всего голосов 19: ↑19 и ↓0+19
Комментарии4

Советы для профессионального использования RecyclerView. Часть 1

Время на прочтение3 мин
Количество просмотров11K

Советы для профессионального использования RecyclerView. Часть 1


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


Описанные здесь пункты упоминались в различных докладах и материалах на Google Devs.


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

Читать дальше →
Всего голосов 4: ↑4 и ↓0+4
Комментарии4

Свой Firebase за 7$ или практический опыт внедрения Appwrite как сервера для мобильного приложения

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров15K

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

Читать далее
Всего голосов 11: ↑11 и ↓0+11
Комментарии1

Bittorrent с нуля на Go

Время на прочтение15 мин
Количество просмотров22K


BitTorrent — протокол загрузки и распространения файлов через Интернет. В отличие от традиционных отношений клиент/сервер, когда загрузчики подключаются к центральному серверу (например, для просмотра фильма на Netflix или загрузки веб-страницы), участники сети BitTorrent, называемые одноранговыми узлами, загружают фрагменты файлов друг с друга. Это то, что делает BitTorrent одноранговым протоколом. Исследуем, как он работает, и создадим собственный клиент, который сможет находить одноранговые узлы и обмениваться с ними данными.

Читать дальше →
Всего голосов 50: ↑47 и ↓3+53
Комментарии9

Как Youtube и Instagram: интернационализация и локализация приложения на Python

Время на прочтение9 мин
Количество просмотров7.5K
Язык Python лежит в основе всемирно известных приложений, таких как Youtube, Instagram и Pinterest. Для продвижения на мировом рынке приложению необходима локализация, то есть адаптация к особенностям той или иной страны, и интернационализация – перевод контента. В статье мы поделимся опытом, как ускорить автоматизацию перевода и решить некоторые типичные проблемы в этой области.

Читать дальше →
Всего голосов 6: ↑6 и ↓0+6
Комментарии3

Как стать Android разработчиком в 2023

Время на прочтение6 мин
Количество просмотров99K

И так, давайте начнем с того, что должен знать и уметь человек, чтобы стать Android разработчиком? Скиллсет будем смотреть по вот этому Roadmap

Читать далее
Всего голосов 14: ↑12 и ↓2+14
Комментарии33

Как мы кикшеринг взломали

Время на прочтение4 мин
Количество просмотров40K

В этой статье я поведаю вам кейс о взломе одного из крупнейших сервисов шеринга самокатов путем подмены TLS сертификатов и использования Python и mitmproxy.

Читать далее
Всего голосов 62: ↑61 и ↓1+77
Комментарии35

Вычисление времени заката и рассвета по координатам Android устройства с помощью earthtools

Время на прочтение5 мин
Количество просмотров12K
Привет Хабр!

image

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

В дополнение, дабы облегчить работу, меня нагрузили аномальными математическими формулами, от которых в голове ничего не укладывалось. Итак, мною было принято решение искать альтернативу этим адским формулам.
Читать дальше →
Всего голосов 24: ↑13 и ↓11+2
Комментарии15

Андроид — кастомные View или ToggleButton 4x4

Время на прочтение5 мин
Количество просмотров16K
Рано или поздно любого начинающего андроид-разработчика перестает удовлетворять стандартный набор элементов управления. При этом имеется в виду как внешний вид, так и функциональность. И если с внешним видом все более или менее понятно, все достаточно легко кастомизируется, то функционала часто не хватает.

Когда (уже достаточно давно) в одном из своих проектов я столкнулся с необходимостью выбора в настройках одного из трех параметров, решение было очевидно — RadioButton. Но по ряду причин, типа экономии места на экране и некоторых других, возникло желание использовать нечто вроде ToggleButton. Поскольку стандартный Toggle имеет лишь два состояния, был использован костыль в виде программной обработки некоей циклично меняющейся переменной, в зависимости от которой менялись свойства стандартного элемента вроде обычной Button или ImageButton – уже даже не помню. Способ вполне работоспособный, однако не без греха. Первый и самый главный – нарушается Генеральная линия партии, призывающая к раздельному хранению ресурсов и программного кода. Ну и при большом количестве подобных элементов управления код теряет всю свою изящность и привлекательность. Инкапсуляция, опять же, жутко страдает. Посему было решено создать кастомный элемент.
Читать дальше →
Всего голосов 13: ↑12 и ↓1+11
Комментарии6

Как научиться чувствовать треки? Визуализация музыкальных частот в Моей волне

Время на прочтение6 мин
Количество просмотров17K
Разработчики всего мира потратили миллионы часов на создание визуализаций музыки в приложениях и плеерах. Наверняка многие из вас помнят анимации в старом-добром Winamp. Или разные скины JetAudio. Олды вообще скажут: «Погоди-ка, ты забыл про Atari Video Music, всего-то 1976-й был!» — и будут правы.

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



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

Меня зовут Андрей Бобков, я Android-разработчик, и в этом посте я расскажу, как при помощи высшей математики и цифрового анализа сигнала мы научили Мою волну чувствовать треки, которые вы слушаете, и визуализировать частоты.
Читать дальше →
Всего голосов 29: ↑27 и ↓2+35
Комментарии49

Технотекст: все номинанты, победители и немного тайны

Время на прочтение21 мин
Количество просмотров9.4K

Итак, все победители объявлены, ошибки исправлены, призы собраны и готовы ехать к победителям, автоответчик пишет послания, CD поставлен на паузу. Самое время подвести все итоги «Технотекста 2021», рассказать о тех, кто остановился в шаге от победы, перечислить самых-самых, оценить итоги и… объявить новый «Технотекст 2022». Впрочем, обо всём по порядку.

Читать далее
Всего голосов 76: ↑75 и ↓1+118
Комментарии39

Сегодня ночью мы успешно выполнили обновление вашего организма

Время на прочтение4 мин
Количество просмотров58K

Добрый день!

Мы рады представить вам новую версию, в которой много замечательных изменений! Вот только некоторые из них:

  • Убраны пальцы ног. Отдельные пальцы только тратили излишние ресурсы, теперь ступня просто заканчивается второй пяткой меньшего размера. Форма второй пятки примерно совпадает с формой пальцев прошлой версии для совместимости с обувью. В некоторых азиатских и греческих локалях, увы, ряд сандалий будет несовместим с новой версией. Пользователи этих локалей могли прочесть уведомления о необходимости обновить обувь за 2 недели до релиза в подразделе 14.22 оферты на нашем официальном сайте.
  • Исправлена ошибка в 6-й жаберной дуге, возвратный гортанный нерв больше не возвратный. В новой стабильной версии это прямой гортанный нерв.
  • RBP v1.0: добавлена возможность для разработчиков обращаться к нервной системе по API.

Также исправлено более сотни мелких ошибок, внесено несколько изменений в архитектуру для большего удобства пользователя, поддержки экологичности, стабильности развития, снижения углеродного следа и экономии невозобновляемых энергоресурсов. Часть обновлений связана с безопасностью, но мы не раскрываем эти данные на текущий момент.
Читать дальше →
Всего голосов 228: ↑214 и ↓14+253
Комментарии198

F-строки в Python мощнее, чем можно подумать

Время на прочтение5 мин
Количество просмотров134K

Форматированные строковые литералы, которые ещё называют f-строками (f-strings), появились довольно давно, в Python 3.6. Поэтому все знают о том, что это такое, и о том, как ими пользоваться. Правда, f-строки обладают кое-какими полезными возможностями, некоторыми особенностями, о которых кто-нибудь может и не знать. Разберёмся с некоторыми интересными возможностями f-строк, которые могут оказаться очень кстати в повседневной работе Python-программиста.

Читать далее
Всего голосов 73: ↑71 и ↓2+94
Комментарии25
1

Информация

В рейтинге
6 045-й
Откуда
Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Mobile Application Developer, UI/UX Designer
Junior
Git
SQL
Kotlin Multiplatform
Kotlin
Android Studio
Xcode
Java
REST