Всем привет! Меня зовут Газимагомед, я занимаюсь разработкой внутреннего распределённого профайлера Vision в Ozon. В этой статье я раскрою понятие профиля, расскажу о том, что такое распределённый профайлинг, чем отличается автоматический сбор профилей от ручного. А также рассмотрим проблемы, возникающие при построении профайлера. Что ж, усаживайтесь поудобнее, мы начинаем.
Утечки памяти в мобильных приложениях: руководство для QA-инженеров
Меня зовут Ира и я руковожу отделом тестирования мобильной платформы: наш отдел занимается разработкой инструментов для автоматизации тестирования мобильных приложений Ozon и тестированием внутренних библиотек, которые используются в наших приложениях. Около года назад мы пытались понять, почему у одной из команд джоба с автотестами отваливается по тайм-ауту. К слову, это был проект мобильного приложения для продавцов, и на нем у нас для автоматизации тестирования используются нативные фреймворки: Kaspresso + Kotlin для Android и XCTest + Swift для iOS.
Одна из гипотез заключалась в том, что в приложении могут быть утечки памяти и что-то зависает. Спойлер: дело было не в этом. В общем, около года назад я проверяла, что к чему там у нас с памятью приложения, а сейчас поняла, что полученными знаниями можно и поделиться.
Эта статья будет полезна тем, кто только начинает изучать, что происходит со стабильностью мобильного приложения. Внутри статьи разберёмся с тем, как приложение работает с оперативной памятью; что такое утечки памяти и когда они возникают; как утечки влияют на стабильность работы приложения и как их находить.
Автостопом по дизайн-системе. Путеводитель с оглавлением
Эта статья поверхностна, как водная гладь, по которой скачет камушек-блинчик. Каждый прыг — развилка на Пути дизайн-системы.
- Делать свою или взять готовую? Прыг.
- Платформенная или универсальная? Прыг.
- Версионировать компоненты или всю библиотеку? Прыг...
И ещё много таких «прыгов».
Давайте подготовимся к сложному контенту. Закроем глаза, успокоимся и представим идеальную дизайн-систему. Представили? Умные компоненты, продуманные паттерны, подробная документация. Автоматическая генерация кода. Кайф? А то! Только такая дизайн-система оставит нас без работы.
Сидит себе бизнес, кормит нейросетевой движок дизайн-системы джобс-ту-би-данами да си-джи-эмами и на выходе получает готовые экраны. Ни дизайнеров, ни фронтов нанимать не нужно.
Остаться в живых (keepalive) feat. HTTP/2, Go & gRPC-Go
Привет, Хабр!) Меня зовут Ильяс. В этой статье мы разберём известную идею — keepalive в межсервисном взаимодействии, которая спасла уже не одну компанию в трудное время :). Но чтобы добавить интереса, мы разберём, какие проблемы в keepalive принесли современные технологии (ведь что может пойти не так с этой простой идеей?). Поэтому в статье мы рассмотрим механизмы, которые позволяют проверять стабильность соединения между клиентом и сервером в случае, когда обычные TCP keepalive из-за сложности архитектуры не могут определить состояние сервера.
Развиваем продукт «без проблем»
В своей прошлой статье я рассказывал о том, как использовать метрики при разработке продуктов. Статья получилась довольно насыщенная, но теоретическая.
В этой статье я хочу рассказать о том, как на практике применять эти подходы при развитии продуктов. Можно ли опираться только на метрики для приоритизации задач. Что делать, когда у пользователей нет проблем с текущим продуктом.
Как с помощью Jobs To be Done принимать продуктовые решения, и почему сейчас мы используем этот подход для работы над нашими продуктами.
Размер имеет значение. Как Ozon автоматизировал измерение товаров на складах
Сотрудники каждого склада, которые хотят выстроить логистические процессы оптимальным образом, должны знать фактические габариты и вес товаров, которые хранятся на его площадях. Совокупность габаритов и веса товара в Ozon называют объёмно-весовыми характеристиками (ОВХ).
Мы разработали, собрали и интегрировали в операционные процессы складов Ozon устройства для измерения габаритов и веса товаров. Об этом мы писали ранее. Но к идее создания своего решения пришли не сразу.
О, вы из Англии? Локализация Ozon Seller на iOS
Всем привет! Меня зовут Андрей, и я делаю iOS-приложение для продавцов Ozon Seller. Наша команда поставляет фичи, красит кнопки, работает над перформансом и всячески улучшает пользовательский опыт работы продавцов на Ozon.
Нашим приложением активно пользуются юзеры из разных стран, и поэтому день Х, когда мы решим добавить поддержку разных языков, был неизбежен. В этой статье я расскажу про стандартный процесс локализации iOS-приложения, про то, с какими трудностями мы столкнулись и как их решили. Разберём системный алгоритм определения языка и объясню, почему он нам не подошёл. Сделаем перевод приложения «на лету», а также посмотрим, как изменился наш флоу работы со строками.
Евгений DockerAuthPlugin’ович Онегин
Интересное начало, не так ли? Меня зовут Роман, и я младший инженер информационной безопасности Ozon. В этой статье я расскажу о проблеме отсутствия авторизации доступа к Docker daemon / Docker Engine API / командам Docker при работе с контейнерами в экосистеме Docker и как это можно решить при помощи 11 почти стихотворных строчек bash.
Говоря о стихотворчестве, первое, что приходит мне в голову, это уроки литературы, где моим самым любимым романом был «Евгений Онегин». В школе учитель литературы говорила нам: «Это вы сейчас это не понимаете... Уже потом, спустя год, пять или даже 20 лет, вы вновь прикоснётесь к книгам, которые, казалось бы, вы уже знаете вдоль и поперёк. И вот тогда вы поймёте всё то, что мы с вами тут обсуждаем, или даже откроете для себя что-то, о чем и не догадываетесь».
Выгорание: рассматривая золу под макроскопом
На просторах необъятного можно найти массу статей про выгорание. По этой теме проходят конференции, у многих есть личный опыт. Проблема актуальна и останется такой надолго, ведь первое «выгорание» — это не про вопрос «случится или нет», это про вопрос «когда» и «насколько сильно».
Я начал свой путь как разработчик и был им 15 лет, а сейчас руководитель группы разработки. Прошёл всю дорогу от младшего до ведущего и шагнул дальше. Пока я гнал по карьерному треку, я полноценно выгорал два раза, а потом решил, что хватит это терпеть. И не выгорел третий. Как получилось? Об этом и будет эта статья.
Context receivers — новые extension functions
Поговорим сегодня про context receivers — фиче Kotlin, про которую я узнал давно, но смог найти применение лишь пару месяцев назад. Расскажу о том, что такое context receivers, где их можно использовать, и, конечно же, про «успешный успех» — минус 60% самописного DI в OzonID SDK. Но обо всём по порядку.
Насмотренность в разработке: путь к чистому и качественному коду
В мире разработки программного обеспечения термин «Насмотренность» крайне редко встречается, в то время как дизайнеры постоянно всё насматривают 😅. Однако понятие насмотренности не менее важно для разработчиков, поскольку оно помогает понять, зачем и как нужно создавать красивый и чистый код.
Если вы только начинающий разработчик, вам будет полезно узнать как прокачивать насмотренность и что она дает.
Стажёры рулят или Почему не надо бояться доверять молодым сотрудникам
Боитесь стажёров? Не хотите тратить своё время на обучение начинающих специалистов? Задач много, а специалистов по ИБ мало?
Делюсь опытом построения стажёрского конвейера на базе SOC. Может, это решит ваши проблемы.
Многие российские современные IT-компании имеют стажёрские программы. Я знаком с несколькими примерами ИБ-стажировок в таких компаниях, но ничего близкого к описанной далее реализации не нашёл. Мне кажется, что всё просто и очевидно, но почему вы так не делаете? Не найдя ответа на вопрос, решил написать об очевидном, подкрепляя личным опытом.
Как дизайнеры помогают заменить GitLab: что из этого получилось
Привет! Меня зовут Валерия, я дизайнер внутренних сервисов в Ozon Tech. Наша команда занимается продуктами, которые коллеги используют для доступа к инфраструктуре Ozon, приоритизации задач, проведения регламентных работ, выкатки и управления релизами.
Сегодня речь пойдёт про последнее упомянутое решение — REpublic или релизный портал, который помогает нашим разработчикам выкатывать более тысячи релизов каждый день. Я расскажу, зачем мы начали его делать и с какими сложностями столкнулись.
Переделали всё, не разломав ничего, или Проект по информационной безопасности (взглядом PM)
Тихо скрипнула задвижка, дверь открылась, и вот они — специалисты информационной безопасности со своими задачами. Куда бежать? Кого спасать? Где лазейки? А поздно! Мы уже всё увидели, услышали и готовы действовать. Новость или само появление отдела информационной безопасности (или Cyber Security-направления) в большой, узнаваемой на рынке компании с хорошей репутацией, часто встречается сотрудниками компании очень неоднозначно.
В данной статье поделюсь своими «заметочками» и полученным опытом в изменении уже функционирующих процессов разработки в компании. Процессов, которыми пользуются абсолютно все в компании.
Камера как сканер штрих-кодов: проблемы, инструменты и эксперименты
Всем привет, меня зовут Никита, я старший разработчик в компании Озон и работаю над iOS-приложением «Пункт Озон».
«Пункт Озон» — это мобильное приложение для работников и менеджеров пункта выдачи заказов (далее просто ПВЗ). В приложении множество различных разделов для повседневной работы. Самые популярные разделы — это «Приёмка», «Выдача» и «Инвентаризация», что в мобильной, что в web-версии. Именно они помогают выполнить главные задачи работников ПВЗ — принять заказы на баланс и позже выдать их клиентам.
Для скорости работы и защиты от ошибок работники ПВЗ производят эти действия через сканирование штрих-кодов, расположенных на самих заказах или на тарах, в которых они приезжают. Если брать web-версию, то там «все просто»: покупается нормальный/качественный отдельный сканер, подключается к ПК — и проблем, считай, нет. А вот с мобильным приложением дела обстоят немного не так. У смартфона есть только камера, и она явно не проектировалась под задачу «сканируем только штрих-коды». Но с другой стороны, камера делает фотографию, а раз у нас есть фотография, то можно там найти штрих-код. К счастью, Apple и Google предоставляют нам инструментарий для этого.
А раз я iOS-разработчик, то и рассказывать я вам буду о нашем iOS-приложении. И сегодня у нас в меню:
• с какими проблемами столкнулись пользователи при использовании мобильного сканера, и почему мы стали искать возможность его улучшения;
• сравнение инструментов, которые предлагает Apple;
• технический обзор одного из них;
• история его внедрения в наше приложение и конечные результаты.
Приглашаем на Ozon Tech Community Design Meetup
Все говорят, что дизайнер и продакт — креативная пара, но мало кто делится опытом, как выжить в этой паре: действовать проактивно и продуктивно, не мешая, а помогая друг другу улучшать продукт.
Тесное взаимодействие и сильная вовлечённость может привести к пониманию с полуслова, а может породить фрустрацию и конфликты. Как услышать друг друга, проговорить ожидания и обозначить границы ответственности — об этом в нашем новом митапе.
Приглашаем присоединиться к этому разговору 21 февраля в 18:30 — офлайн в Москва Сити и онлайн в трансляции на Youtube. Под катом найдёте подробный анонс и ссылку на регистрацию
Два сапога — пара, а три — уже community: как алгоритмы на графах помогают собирать группы товаров
Привет, Хабр! Меня зовут Иван Антипов, я занимаюсь ML в команде матчинга Ozon. Наша команда разрабатывает алгоритмы поиска одинаковых товаров на сайте. Это позволяет покупателям находить более выгодные предложения, экономя время и деньги.
В этой статье мы обсудим кластеризацию на графах, задачу выделения сообществ, распад карате-клуба, self-supervised и unsupervised задачи — и как всё это связано с матчингом.
Магия вне Хогвартса: как повышать ИБ-грамотность сотрудников
Сумрачная картинка: большое помещение, мало света. Стол и рядом стул, на котором сидит человек. Он работает за ноутбуком. Чувствую его усталость: он сегодня уже долго работает. Его что-то отвлекает: письмо. Электронное письмо. Он нажимает на ссылку, но ничего не появляется на экране. Всё в порядке. Но на сетевом уровне уже поселилось зло: ЧЕРВЬ!!! Спустя неделю червь выкачает данные, из-за чего компания потеряет десятки-сотни миллионов рублей.
У меня случилось очередное видение — это мой дар и моё проклятие. Я вижу то, что скоро должно произойти. У меня есть немного времени, чтобы предотвратить преступление — инцидент информационной безопасности.
Эта статья будет полезна и крута всем: узнаете, как помочь своим коллегам узнать больше об информационной безопасности в незанудной форме! На одном из мест работы я смог за пару лет повысить общий уровень знаний сотрудников в 5 раз! Меня зовут Маг Владони Миша, и теперь я занимаюсь Security Awareness в Ozon. Инциденты информационной безопасности, возникающие из-за человеческой ошибки, — самые распространённые (по данным РТ). Для минимизации количества таких инцидентов необходимо повышать осведомлённость в вопросах ИБ, т.е. заниматься Security Awareness.
Приглашаем на Ozon Tech Community BI Meetup
Всем привет!
Меня зовут Дмитрий, я руководитель группы разработки инструментов BI.
Стоит ли говорить, что данные вокруг нас и, если мы не умеем с ними работать, то мы не можем функционировать как бизнес вообще? Наша команда платформы данных старается обуздать десятки петабайтов аналитических данных и разрабатывает для этого множество новых подходов и инструментов.
И мы готовы ими поделиться. Приглашаем вас на Ozon Tech Community BI Meetup, 31 января в 19:00. Наша команда расскажет про основные сервисы работы с данными, о том, как нам пришёл в голову подход «платформизации», про создание функционала для сжатия данных, а также обсудим феномен data quality в обработке данных.
Впихнуть невпихуемое, или Как мы боролись с сервисами, которые слишком много «ели»
Всем привет! Меня зовут Максим, я релиз-инженер Ozon, и в этой статье я расскажу про впихивание невпихуемого, или про оптимальную с точки зрения используемых ресурсов стратегию деплоя в Kubernetes, которая позволила нам сэкономить тысячи ядер CPU и терабайты RAM.