Как стать автором
Обновить
Sportmaster Lab
Рассказываем про ИТ в «Спортмастере»
Сначала показывать

Разбираемся в необычной проблеме с WiFi

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

Что?


В конце прошлого года я начал сталкиваться с необычными периодически возникающими проблемами подключения на десктопе. В целом, подключение было стабильным и со средними задержками; однако во (вроде бы) случайные моменты времени на протяжении недели через каждые пару секунд возникали резкие пики задержек в две с лишним тысячи миллисекунд.


Из-за этого было невозможно пользоваться всем ПО для аудио-/видеозвонков и играть в большинство онлайн-игр.

Эта проблема возникла примерно во время моего переезда через всю страну из штата Вашингтон в Южную Каролину, поэтому было слишком много факторов, чтобы с лёгкостью выявить источник. Однако в основном проблема влияла только на игры и аудио-/видеозвонки, поэтому я особо не обращал на неё внимания.

На протяжении последней пары месяцев я постепенно пытался разобраться, что происходит, но до сегодняшнего дня мне этого сделать не удавалось.
Читать дальше →
Всего голосов 151: ↑149 и ↓2+147
Комментарии96

Гексагональная архитектура и DDD на опыте интернет-магазина Спортмастер. Часть 1

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

Всем привет! Меня зовут Денис Ежов, я тимлид команды интернет-магазина Спортмастер (далее ИМСМ) и по совместительству бэкенд-разработчик. Так сложилось (и так говорят), что гексагональная структура и DDD — это дорого и сложно. Но так ли это на самом деле? Мы в ИМСМ внедрили гексагональную архитектуру и DDD именно в том количестве, в котором эти подходы решали наши проблемы. Про то, какие у нас были проблемы и как мы их решали, я расскажу в этом посте. Под катом — про назначение бэкенда ИМСМ, история развития бэкенда ИМСМ и его проблемы. А ещё посмотрим, как мы в новой архитектуре постарались решить проблемы бэкенда, покажем примеры кода, а также то, как код ложится на архитектуру. 

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

Отправляем спамеров в парольное чистилище

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

Как лучше всего наказывать спамеров? Я очень долго думал над этой темой, потому что потратил кучу времени на фильтрацию бесконечного хлама, который они мне присылали. И тут меня озарило: наказание должно соответствовать преступлению — краже моего времени. То есть я, в свою очередь, должен красть их время. Разумеется, с минимальными затратами моего времени. Поэтому в начале этого года я создал Password Purgatory («Парольное чистилище») с единственной целью — провести спамеров через всего круги ада выбора пароля, удовлетворяющего ужасно сложным критериям. И когда я говорю "ужасно сложные критерии", это значит, что они гораздо хуже, чем то, что вы когда-либо видели. Я выложил проект в открытый доступ, принял несколько PR, создал API, задающий всё более сложные требования к паролям, и на этом остановился. Пока, наконец, не выпустил готовый проект. Он жив, работает и при этом дьявольски прекрасен.
Читать дальше →
Всего голосов 43: ↑39 и ↓4+35
Комментарии20

Прогулка по изнанке «Спортмастера»: ножками и в приложениях

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

Зашёл я (@Lavs) в «Спортмастер», чтобы купить себе футбольный мяч. В этом деле мне помогла сотрудница Ксения: задала пару вопросов, отвлеклась на смартфон и через минуту протянула подходящий мячик.

Я знал, что на экране у Ксении был не мессенджер с подружками, а внутренние приложения магазина. Дело в том, что в «Спортмастер» я пришёл не только за мячиком. Хабр отправил меня с редакционным заданием: разобраться, как устроена технологическая начинка магазина.

Ребята из SM Lab (IT-компания «Спортмастера») сейчас ищут Android- и iOS-разработчиков. Под катом речь пойдёт о том, чем занимаются команды мобильной разработки: а они ни много ни мало обеспечивают работу всех 533 розничных «Спортмастеров».

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

Особое мнение: предугадываем фрод без дата-сайнса

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

Каждая компания, принимающая платежи на своем сайте или в магазине, рано или поздно сталкивается с фродом (fraud) и несет убытки. Есть разные методы борьбы с ними. 80% всех задач обычно решаются скриптами, а потом к ним уже докручивается дата-сайнс. Правда не всегда понятно для чего. Но давайте пока не будем останавливаться на этом, а попробуем решить типичные проблемы. Такие, как сбор данных, долгий этап оценки гипотез и снижение нагрузки на внешние системы.

Меня зовут Александр Сальков. Я разработчик в Sportmaster Lab. Руковожу направлением дата инженерии и больше 10 лет разрабатываю базы данных и все системы, которые так или иначе с ними связаны. Когда я был молод, написал свой вариант Кафки, который делал то же самое, что делает Кафка, только между инстансами Oracle. Участвовал во всяких разных датасаентистских вещах. В частности, делал систему идентификации людей по венам на ладонях. И много всякого интересного.

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

Радиально-кольцевой метод проектирования архитектуры, как альтернатива «макаронной» топологии

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

В статье предложен радиально-кольцевой метод проектирования архитектуры области (в частности - интеграционной схемы), состоящей из нескольких информационных систем, проведены общая оценка применимости этого варианта в различных ситуациях и его сравнение с классическим «макаронным» представлением. Взгляд сугубо субъективный и прикладной. Если вдруг статья привлечет очень много профессионалов – прошу придерживаться культурных о(б)суждений 😊

Как всё началось

Началось все очень просто – в норе под землей с постановки прикладной задачи, а именно: требуется разработать интеграционную схему области, состоящей из 10 информационных систем (ИС), при этом:

1. Необходимо:

отразить все интеграционные связи каждой из 10 ИС (интеграции возможны как с ИС области, так и с ИС смежных областей (их 8));
понимать содержание интеграционных потоков.

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

Реверс-инжиниринг оборудования миссии «Аполлон» рентгенографией

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

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

Но для начала немного справочной информации.

Во время миссий «Аполлон» к Луне НАСА могло отправлять с Земли на космический корабль цифровые сообщения.

Эти сообщения с данными могли выполнять конкретные задачи: управлять оборудованием корабля активацией реле, отправлять команды напрямую управляющей ЭВМ «Аполлона» или даже устанавливать часы космического аппарата.
Читать дальше →
Всего голосов 38: ↑37 и ↓1+36
Комментарии5

Устраиваем на работу за один день — One Day Offer от Sportmaster Lab

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

Привет! 24 сентября (суббота) мы в Sportmaster Lab проведем One Day Offer для системных аналитиков в онлайн-формате.

Офлайн-версии не будет, только онлайн и видеозвонки в Teams, поэтому без базового отбора желающих тут никак. Для этого мы составили небольшую анкету, в которой 11 вопросов по теме системного анализа.

В целом же механика события выглядит так:

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

Майним технохардкор в сезоне Data Mining

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

С 5 сентября по 20 октября на Хабре проходит сезон Data Mining — конкурс технических статей для дата-сатанистов, знающих толк в оккультных практиках работы с данными.

Хабр проводит сезон вместе с SM Lab (IT-компанией «Спортмастера»). У них, кстати, открыта middle-вакансия для Data / ML Engineer.

Правила просты: вы пишете статью в хаб Data Mining и, если её рейтинг оказывается самым высоким, SM Lab отгружает вам игровой монитор и грант на написание следующего шедевра.

UPD. Сезон закончился, а подробности и победителя можно посмотреть в итоговом посте.

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

Сломать систему. Реинжиниринг портала с «китайскими» пользователями

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

Привет! Хочу поделиться практическим опытом реинжиниринга нашей системы под названием «Портал поставщика» – рассказать о том, как мы выстроили процесс работы в команде, как наладили общение с бизнесом, какие поймали подводные камни и какие удалось выработать интересные решение. А ещё поговорим об особенностях китайского менталитета.

Меня зовут Иван Хахарев, я ведущий системный аналитик. Портал поставщика – это сайт, полностью наша внутренняя разработка, на нём почти все поставщики оформляют свои отгрузки. Затем, благодаря собранным данным, мы можем отслеживать все движение товара до склада и получать информацию для размещения на складе и дальнейшей продажи товара.

Так как преобладающее большинство поставщиков у нас иностранное (а в большей ее части — китайское), то и пользователи у нас в большинстве своем китайские.

Преамбула

Думаю, многие из вас сталкивались с тем, что вам в руки попадала какая-нибудь MVP-система с большим количеством legacy-кода или другими подобными вариациями, которые делались под лозунгом «Давай сейчас как-нибудь сделаем, чтобы работало, а потом разберемся».

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

Расскажу о том, как нам удалось сломать этот порочный круг костылей и как мы выбрались в более или менее стабильную и качественную систему с комфортным масштабированием.

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

Превращаем старый телефон на Android в веб-сервер

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

Есть ли у вас старый телефон на Android? Наверняка есть! В мире накопилось безумное количество всевозможного электронного мусора, и в среднем гражданин развитой страны меняет телефон каждую пару лет, поэтому старые телефоны, вероятно, один из самых распространённых видов электронных отходов.

У меня залежался собиравший пыль старый Motorola G5 Cedric, поэтому я решил сделать с ним что-нибудь, и теперь на нём работает веб-сервер Puma с простым веб-приложением на Sinatra.

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

Как мы придумали и запустили площадку для лидеров продукта «PL Lean Coffee»

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

Всем привет! Меня зовут Наталья Карпежникова, я работаю в ИТ с 2012 года, была и аналитиком, и тестировщиком, и проджектом, и лидером продукта. А сейчас в Спортмастер Лаб я все еще лидирую продукт, но большую часть времени занимаюсь развитием сообщества лидеров продуктов.

Зачем я все это пишу.

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

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

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

Динамический импорт модулей в Python

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

Давайте представим ситуацию, когда вам нужно установить на все виртуальные машины (агенты сервера сборки) определенный пакет Python. Но вы не можете изменить образ агента, а загрузка, к примеру из pypi.org или github.com непроверенных пакетов, ограничена. Как тут не вспомнить последние новости про вредоносные изменения в пакете nmp или более свежую информацию про PyPi.

Python использует подход под названием EAFP — Easier to ask for forgiveness, than permission (легче попросить прощения, чем разрешения). Это значит, что проще предположить, что что-то существует (к примеру, словарь в словаре, или в нашем случае модуль в системе) или получить ошибку в противном случае.

Этот подход, развитый в PEP-0302, позволяет делать хук импорта модулей, что в итоге приводит нас к возможности написания следующего кода:

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

Принципы юнит-тестирования. Часть вторая

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

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

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

Структура юнит-тестов

В нашей команде при написании юнит-тестов мы стараемся использовать подход AAA — Arrange, Act, Assert (Подготовка, Действие, Проверка).

Кратко расскажу о нем. Тест делится на три блока, которые идут друг за другом. Ширина блоков на рисунке выше образно отражает объём кода, который должен занимать каждый из блоков.

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

Образ мышления Factorio

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

Раньше я считал, что компьютерная игра Factorio — это огромная трата ресурсов, сжигающая ежегодно миллиарды долларов ВВП. Мне казалось совершенно ненормальным, что Shopify компенсирует своим сотрудникам её приобретение. Я даже думал, что платить за игру в Factorio сотрудникам Shopify должен её конкурент — Amazon.

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

Это может показаться скучным, но сколько человеко-часов в год тратится на игры «три в ряд»? Некоторые игры называют медитативными, и к Factorio это относится в двух смыслах: во-первых, в ней присутствует аспект темы и вариации — каждый новый создаваемый продукт является неким сочетанием известных задач (например, новый предмет, который должен перемещаться по конвейерам) и новых трудностей (движение жидкостей по трубам и комбинирование их оттока с твёрдыми продуктами для создания новых предметов). Но также она медитативна в том смысле, что медитация — это способ культивации определённого образа мышления, а Factorio способна и на это. Можно медитировать, чтобы находиться в моменте; вы играете в Factorio, чтобы воспитать в себе привычку никогда не оставлять ручной процесс без автоматизации.

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

Делим неделимое или горизонтальная декомпозиция

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

Привет!

В предыдущем посте Как справиться с декомпозицией задач и не перестараться наш коллега рассмотрел вертикальные способы декомпозиции — по бизнес-ценности.

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

Нарезая задачки по бизнес-ценности, мы столкнулись с двумя типами проблем:

- максимально мелко нарезанные задачи все еще большие,
- разные бизнес-задачи завязаны на общие изменения.

Мы хотим поговорить о том, как поделить задачку, когда деления по бизнес-ценности недостаточно. В посте мы рассмотрим три способа горизонтальной декомпозиции:

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

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

Принципы юнит-тестирования. Часть первая

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

Привет! Меня зовут Владимир, я разработчик команды продукта «Сервис персонализации» в SM Lab. В этом посте я хотел бы рассказать (а в комментариях — обсудить) один очень важный и полезный инструмент разработчика — юнит-тесты.

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

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

Эта статья для всех – кто слышал про них, но не видел, кто приступает к написанию юнит-тестов, и кто их пишет уже давно. Надеюсь, каждый из вас найдет что-то полезное для себя.

При подготовке материала очень помогла книга Владимира Хорикова (@vkhorikov ) «Принципы юнит-тестирования». Рекомендую ее всем, кто хочет еще глубже погрузиться в эту тему.

Итак, поехали.

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

Компьютеры быстры, но вы этого не знаете

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

Люди чертовски плохо разбираются в величинах, особенно в тех, которые не могут воспринимать биологически. Например, мы интуитивно понимаем, насколько тяжелее предмет массой 10 кг предмета массой 1 кг.

Ощущение величин можно улучшить, преобразовав их каким-нибудь образом в сигналы, знакомые мозгу.

Смотрели ли вы эти видео?

  1. Сравнение размера Вселенной в 3D
  2. Измеряем богатство Джеффа Безоса в рисе

Второе нравится мне больше всего. Ежедневно я съедаю по чашке риса, так что измеряю состояние Джеффа не только наглядно, но и своим желудком.

Совсем недавно я внёс несколько оптимизаций в код, что помогло мне интуитивно понять, насколько быстро может работать компьютер. И я решил, что этим нужно поделиться.
Читать дальше →
Всего голосов 84: ↑80 и ↓4+76
Комментарии232

Jira Structure: как мы в SM Lab используем плагины для управления продуктом

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

Привет! У нас в Спортмастере очень большая экспертиза в части работы с инструментами JIRA. Про доски, спринты и все прочее все наверняка знают и часто применяют. Мы хотим рассказать о других интересных плагинах, которые мы используем в рамках управления продуктом, начнем с JIRA Structure.

Зачем это нужно?

Structure — плагин для Jira, позволяющий гибко настраивать и управлять Jira-задачами любого типа.

Основные возможности:

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

Как практики управления разработкой ПО помогли мне повысить эффективность малого бизнеса в 3,5 раза

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

Разработка ПО — довольно формализованная (в хорошем смысле),и активно развивающаяся отрасль, работающая с нематериальными результатами интеллектуальной деятельности. Есть лучшие практики больших компаний, есть опыт стартапов. И те и другие во многом стремятся использовать современные методологии разработки ПО, которые часто дорабатывают под себя. Ведь они обеспечивают собранность, систематизированность и прозрачность данных, помогают видеть процесс от А до Я, отслеживать эффективность и прочее, прочее, прочее.

Я не так давно пришёл в современное IT (около полугода назад), но за это небольшое время успел оценить, какую пользу приносят передовые практики управления разработкой, собственно, разработке. Я был приятно удивлен и слегка ошарашен. Настолько, что подумал — а почему бы не применить все это хозяйство к чему-то “не айтишному”? Скажем, к малому бизнесу, а именно - мелкому ритейлу товаров на маркетплейсах (МП)? 

Тут необходима ремарка. У меня давно была мечта: вне зависимости от места работы я хотел иметь свой маленький бизнес, который я буду параллельно выстраивать и развивать. Поэтому сейчас в отрыве от основной работы я продавец на одном из маркетплейсов.

Читать далее
Всего голосов 24: ↑19 и ↓5+14
Комментарии1

Информация

Сайт
smlab.digital
Дата регистрации
Дата основания
Численность
1 001–5 000 человек
Местоположение
Россия
Представитель
Алина Айсина