Как стать автором
Обновить
49.54
Циан
В топ-30 лучших ИТ-компаний рейтинга Хабр.Карьера
Сначала показывать

Поиск лишних Component Dependencies с помощью Dagger SPI

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

Многие из Android-разработчиков для Dependency Injection используют Dagger или его «обёртку» Hilt. Но не многие из них используют Dagger SPI. Этот механизм предоставляет нам доступ к графу зависимостей, что позволяет нам добавить свои проверки графа и не только. В этой статье я хочу рассмотреть работу с Dagger SPI на примере поиска неиспользуемых Component Dependencies. После прочтения статьи вы сможете находить их, или при желании сможете писать свои проверки графа зависимостей. Ну или что вам там в голову взбредёт. 

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

Используем UI-тесты для поиска утечек

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

Утечки памяти — штука неприятная. Они могут приводить к снижению производительности, а в некоторых случаях и к падению приложения. Поэтому их определённо стоит находить и исправлять. Проблема в том, что если вы достаточно хорошо проработали архитектуру вашего проекта или у вас опытные разработчики, то утечки будут появляться редко. Даже очень редко. Как следствие, ручной поиск утечек, на который надо потратить кучу времени, почти всегда будет с нулевым результатом. Чтобы избежать лишней траты времени, представляю вам простой и довольно очевидный способ — встраивание поиска утечек памяти в UI-тесты.

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

Кто и в каких задачах быстрее? Coroutines, RxJava, Executor?

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

Вы когда-нибудь задумывались, какой из фреймворков для многопоточки самый быстрый? Я вроде и знал ответ, но задумывался периодически. В определённый момент сама судьба просто-напросто заставила меня взять и проверить. Так что если вам тоже всегда было это интересно, то я постарался протестировать, сравнить и предоставить результаты для вас. 

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

Оптимизация поиска объявлений по датам бронирования посуточной аренды

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

Всем привет! Меня зовут Азамат, я backend-разработчик в Циан, занимаюсь поисковыми сервисами. В статье я расскажу, как мы в команде оптимизировали поиск объявлений по датам бронирования в разделе посуточной аренды. Как мы решили проблему роста потребления cpu, ускорили сам поиск и удешевили железо.

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

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

Как создать модули со всей обвязкой под проект, аки Танос пальцем щёлкнув?

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

При разработке новой фичи приходится тратить время на создание однотипных файлов, в которых мы будем писать логику. Рутина, от которой хочется избавиться. В статье я расскажу про свой плагин  Group File Template (GFT) для создания классов из подготовленных заранее шаблонов. Настолько гибко, что подойдёт не только Android-разработчику.

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

Как устроены продуктовые процессы в Циан

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

Рассказываем о внутренних процессах и корпоративной культуре Циан.

Как держать всех в контексте и не скатиться в бюрократию? Почему неудобные вопросы – залог эффективности? Что такое командообразование, и зачем оно нужно? В этой статье расскажем, как работает Циан изнутри. И почему именно так, а не как-то по-другому.

Читать далее
Всего голосов 7: ↑3 и ↓4 -1
Комментарии 5

Прости, Rosetta, мы должны расстаться

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

С релизом Xcode 14.3 Apple убирает поддержку Rosetta и почти прямым текстом говорит разработчикам, что откладывать адаптацию своих проектов под Apple Silicon дальше уже некуда. Сегодня я поделюсь историей про то, с какими сложностями мы столкнулись в нашем основном приложении Циан, и какое стороннее решение помогло нам избавиться от Rosetta.

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

Многомодульный BDSM. Бутылочные горлышки среди модулей

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

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

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

Как мы попробовали Yatagan

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

У нас в проекте с незапамятных времён для DI используется Dagger. И в целом он нас всем устраивает. Ну, разве что кроме одного маленького пунктика — скорость сборки с kapt. Он прилично увеличивает время сборки. Казалось бы, смирись, страдай, прими ситуацию. Но относительно недавно Yandex представили библиотеку для Dependency Injection. Имя ей Yatagan. У неё есть две важных особенности — она спроектирована быть похожей на Dagger по API, и одна из её целей — меньше влиять на время сборки. Меньшее время сборки — это всегда хорошо, а значит, стоит её как минимум попробовать. 

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

Какие параметры компьютера влияют на скорость сборки Gradle проекта

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

Как вы думаете, какие характеристики сильнее влияют на скорость сборки вашего проекта: частота CPU или частота оперативной памяти? Количество ядер CPU или количество оперативной памяти? Влияет ли скорость постоянной памяти на скорость сборки? Однажды у меня в голове возникли такие вопросы, и я решил найти на них ответы. Лучший способ для этого — провести тесты. Поэтому представляю вам их результаты и попытаюсь их объяснить в меру своих знаний. Если хотите узнать, что больше всего влияет на скорость сборки, ну или, может быть, хотите обновить компьютер для сборки, но не знаете, во что лучше вложится, то добро пожаловать в статью.

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

Kotlin Symbol Processing. От теории до практики

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

Я расскажу в этой статье о Kotlin Symbol Processing, также известном как KSP.

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

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

Как мы в Циан выбирали сервис мониторинга соцсетей

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

Привет! Меня зовут Полина, я присматриваю за соцсетями в клиентской службе Циан. Три последних года мы мониторили соцсети с помощью одного из старейших сервисов — YouScan. Этой весной YouScan уведомил всех, что уходит с российского рынка. В этой статье расскажу, как мы нашли ему замену среди российских систем.

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

Управленческие метрики в IT в Циан: полезные, вредные, наши

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

Я часто слышу, что метрики — не для IT: не в строчках же кода считать эффективность. Но мы в Циан уже несколько лет используем метрики в оценке разработки и знаем, как их использовать во благо.

Меня зовут Алексей Чеканов, я CTO в Циан. Я расскажу, что такое хорошие и плохие метрики, в чём можно измерять эффективность IT.

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

WebView: забыть нельзя интегрировать

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

При разработке мобильного приложения iOS или Android рано или поздно может встать вопрос: «Реализовать фичу на WebView или же нативно?». В некоторых случаях ответ лежит на поверхности, но, к сожалению, так бывает не всегда. А если очень велик соблазн предоставить пользователям новый функционал поскорее — это может склонить к неправильному решению, с которым впоследствии предстоит что-то сделать.

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

Поехали!
Всего голосов 14: ↑14 и ↓0 +14
Комментарии 12

Как работа с ресурсами вызывает микрофризы

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

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

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

Читать далее
Всего голосов 23: ↑22 и ↓1 +21
Комментарии 9

Аналитика в декларативном стиле с поддержкой многомодульности

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

С приходом Compose в голове всё чаще всплывают мысли, что же ещё можно написать в декларативном стиле. И как мне кажется, на эту роль хорошо подходит аналитика, точнее, описание её событий. В среде разработчиков тема аналитики нечасто всплывает в обсуждениях. Отправка аналитики не является целью фичи, а лишь обязательной дополнительной частью. Сама отправка — задача довольно тривиальная и поэтому воспринимается обычно как «обязаловка», а не как интересный процесс, в котором можно блеснуть своими знаниями архитектуры. Тем не менее, если сложить время всех задач по отправке аналитики, то получится довольно приличное количество часов. Поэтому хочется, чтобы работа с этой частью была максимально комфортной. В этом и поможет декларативный подход.

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

Многомодульный BDSM: как связать Gradle модули и как с ними общаться после этого?

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

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

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

Многомодульный BDSM: стоит ли внедрять Gradle модули и какие типы модулей бывают?

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

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

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

Надеюсь, к концу статьи вы станете на чуточку ближе к ответам на вопросы: «Каким образом вообще можно внедрить многомодульность в свой проект?», «Какие типы модулей есть?» и «Нужна ли многомодульность в моём проекте?»

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

Конвергенция в многомодульном приложении

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

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

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

Как аналитик при помощи простых инструментов может создать ключевую ценность для информационного SaaS-продукта

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

Всем привет! Меня зовут Саша и я занимаюсь продуктовой аналитикой в Циан. В этой статье я расскажу, как аналитик без привлечения ML может создать ключевую ценность для информационного SaaS-продукта.

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

Информация

Сайт
www.cian.ru
Дата регистрации
Дата основания
Численность
501–1 000 человек
Местоположение
Россия