Как стать автором
Обновить
85.41
Рейтинг
Сначала показывать

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

Блог компании Циан Разработка мобильных приложений *Разработка под Android *Аналитика мобильных приложений *

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

Читать далее
Всего голосов 4: ↑4 и ↓0 +4
Просмотры 1.5K
Комментарии 2

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

Блог компании Циан Программирование *Разработка мобильных приложений *Разработка под Android *

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

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

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

Блог компании Циан Программирование *Разработка мобильных приложений *Разработка под Android *

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

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

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

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

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

Блог компании Циан Программирование *Разработка мобильных приложений *Разработка под Android *

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

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

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

Блог компании Циан SaaS / S+S *Управление продуктом *

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

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

Как мы сделали фильтр «бабушкин ремонт»

Блог компании Циан Машинное обучение *

Найти и выбрать квартиру в современном мире — что может быть проще? Берёшь смартфон, скачиваешь приложение и находишь подходящий вариант. Так же просто разместить объявление о продаже или аренде недвижимости. Пользователи смотрят десятки квартир в поисках подходящей — качество ремонта для них очень важно. Вот было бы классно, если бы существовал фильтр, который может правдиво оценить новизну ремонта и отсортировать…

Меня зовут Ирина Говорова, и сейчас я расскажу, как во время моей стажировки в Циан наша команда разработала фильтр «бабушкин ремонт», способный распознавать и классифицировать фотографии помещений.

Читать далее
Всего голосов 45: ↑44 и ↓1 +43
Просмотры 20K
Комментарии 62

Сочетание Shift-Left и «Традиционной» модели тестирования в будние дни QA

Блог компании Циан Тестирование веб-сервисов *

В этом материале будет кратко рассказано, почему Shift-Left – это не всегда хорошо и почему не стоит забывать о традиционной модели тестирования. Рассмотрим паттерны поведения QA при тестировании обычных задач и как постепенно стать продуктивным тестировщиком, не утопая в регрессах и бесконечных проверках одного и того же.

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

Время менять шапки: ускорение мобильной поисковой выдачи Циан

Блог компании Циан JavaScript *Клиентская оптимизация *

Однажды мы заметили, что поисковая выдача в мобильной версии Циан замедлилась: плохо работала на стороне браузера, грузилось много ресурсов, приложение долго открывалось. Естественно, это не радовало пользователей и сказывалось на метриках. В мае 2021-го Google анонсировал изменения: с августа он станет учитывать метрики Core Web Vitals в ранжировании поисковой выдачи. Мы стали искать, в чём может быть наша проблема. В этой статье расскажем, где же проблема крылась, и как мы её решили.

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

Лайфхаки для Growth Hacking

Блог компании Циан Growth Hacking *Управление продуктом *

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

Читать далее
Всего голосов 8: ↑8 и ↓0 +8
Просмотры 1.4K
Комментарии 2

Хочу жить в такой же: как мы научились искать квартиры по фотографиям

Блог компании Циан Обработка изображений *Машинное обучение *Искусственный интеллект Микросервисы *

Привет, Хабр!

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

В статье поговорим о том, как мы решили задачу с помощью алгоритмов глубокого обучения, и расскажем, что там под капотом этой функции и как мы подружили EfficientNet с FAISS. В работе над статьей мне помогал Владимир Филипенко (@vovaf709): он изложил самые основы, чтобы текст мог понять и неспециалист.

Итак, начнём
Всего голосов 12: ↑12 и ↓0 +12
Просмотры 2.9K
Комментарии 13

Main Loop (Главный цикл) в Android Часть 3. Другие главные циклы

Блог компании Циан Программирование *Разработка игр *Разработка под Android *

Основой любого приложения является его главный поток. На нем происходят все самые важные вещи: создаются другие потоки, меняется UI. Важнейшей его частью является цикл. Так как поток главный, то и его цикл тоже главный - в простонародье Main Loop.

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

Это третья и финальная часть разбора главного цикла в Android. В первой части мы разобрались с тем, что такое главный цикл и как он работает. Во второй, как это работает в Android SDK в Java слое. В этой части мы посмотрим на особенности Looper в C++, поверхностно пробежимся по Flutter, Chrome и React Native. А еще есть игры — в них вообще все с ног на голову.

Читать далее
Всего голосов 18: ↑18 и ↓0 +18
Просмотры 5.2K
Комментарии 1

Main Loop (Главный цикл) в Android Часть 2. Android SDK

Блог компании Циан Программирование *Разработка под Android *

Основой любого приложения является его главный поток. На нем происходят все самые важные вещи: создаются другие потоки, меняется UI. Важнейшей его частью является цикл. Так как поток главный, то и его цикл тоже главный - в простонародье Main Loop.

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

Это вторая часть цикла статей по разбору главного цикла в Android. В первой части мы разобрались с тем, что такое главный цикл и как он работает. В этой же части давайте разберемся как Main Loop работает в Android SDK. Разбираться будем в контексте Android SDK версии 30.

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

Играющий тренер в ИТ: запретить нельзя допустить

Блог компании Циан Управление разработкой *Управление персоналом *

«Играющий тренер» – термин, пришедший в IT из мира спорта. Он подразумевает, что руководитель одновременно занимается как управленческими задачами (планирование, контроль), так и решает вполне рядовые (пишет код, настраивает сервера и т.д.). Считается, что совмещать эти роли нельзя, но в жизни, как и в палитре, есть куча оттенков между «можно» и «нельзя». Под катом будет мой жизненный опыт в роли этого самого играющего тренера, я расскажу о плюсах и минусах, а также попробую подвести некий итог своего опыта в этой роли.

Читать далее
Всего голосов 18: ↑16 и ↓2 +14
Просмотры 5K
Комментарии 23

Main Loop (Главный цикл) в Android Часть 1. Пишем свой цикл

Блог компании Циан Программирование *Разработка под Android *

Основой любого приложения является его главный поток. На нем происходят все самые важные вещи: создаются другие потоки, меняется UI. Важнейшей его частью является цикл. Так как поток главный, то и его цикл тоже главный - в простонародье Main Loop.

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

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

Читать далее
Всего голосов 19: ↑18 и ↓1 +17
Просмотры 13K
Комментарии 6

Quick, Nimble. На несколько тестов больше

Блог компании Циан Разработка под iOS *Тестирование мобильных приложений *
Tutorial

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

Поехали!
Всего голосов 4: ↑4 и ↓0 +4
Просмотры 1.1K
Комментарии 0

Темные века разработки программного обеспечения

Блог компании Циан Программирование *Проектирование и рефакторинг *
Перевод

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

Но ситуация не была безнадёжной.
Всего голосов 19: ↑17 и ↓2 +15
Просмотры 9.3K
Комментарии 1

Оптимизируем отображение 10 000 объектов на карте

Блог компании Циан Программирование *Разработка под Android *Обработка изображений *

В приложении ЦИАН размещены десятки тысяч объявлений о недвижимости. Нашим пользователям важно видеть географическое расположение этих объявлений на карте. Самым популярным способом отображения оказался вариант, когда каждое объявление показано отдельной точкой. Внутри команды такой вариант мы назвали «Горошек на карте».

Проблема в том, что объявлений очень много: в одной только Москве более 10 000. Из-за этого наша карта работала не очень стабильно: при зуме и движении были тормоза, дёргалась и лагала картинка. С этим нужно было что-то делать. Чтобы разобраться в причинах проблем и найти решения, мы засучили рукава и начали копаться в используемых механизмах. Под катом подробно опишем весь путь оптимизации карт в Android-приложении: от постановки задачи до результата.

Читать далее
Всего голосов 30: ↑30 и ↓0 +30
Просмотры 8.4K
Комментарии 18

UI-тесты в iOS: укрощение строптивого

Блог компании Циан Разработка под iOS *Тестирование мобильных приложений *

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

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

Поехали!
Всего голосов 15: ↑15 и ↓0 +15
Просмотры 5.7K
Комментарии 4

Тесты в iOS: хороший, плохой, …

Блог компании Циан Разработка под iOS *Тестирование мобильных приложений *

Привет! Меня зовут Андрей Михайлов, я работаю iOS-разработчиком в Циан и отвечаю за внедрение модульного тестирования в процесс разработки. Сегодня я немного расскажу о том, какими свойствами должны обладать хорошие автоматизированные тесты, чем хорошие тесты отличаются от плохих, и для чего на самом деле стоит их писать (не только чтобы находить баги в коде). Это первая статья в серии, посвященной тестированию, она сфокусирована на теории и будет полезна не только iOS-разработчикам.

Добро пожаловать под кат!

Читать далее
Всего голосов 13: ↑13 и ↓0 +13
Просмотры 7.7K
Комментарии 14

Циан.Митап: «MLOps или безопасный воспроизводимый ML для бизнеса»

Блог компании Циан Машинное обучение *

Всем привет!

1 июля в 17:00 приглашаем вас на митап про построение MLOps процессов и обеспечение воспроизводимости ML решений в продакшн.

Вместе с экспертами из Циан, Lamoda, Озон, Одноклассники, МегаФон поделимся опытом развития MLOps платформ, обсудим распространенные фреймворки для управления экспериментами, подходы к выкатке моделей в продакшн, автоматизации переобучения и мониторинга качества моделей. Отдельно затронем тему работы нейросеток (для CV и не только) в продакшн.

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

Информация

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