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

«Чистый» код, ужасная производительность

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

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

Если посмотреть на список правил «чистого» кода и вытащить из него правила, которые действительно влияют на структуру кода, то мы получим следующее:

  • Отдавайте предпочтение полиморфизму, а не «if/else» и «switch»
  • Код не должен знать о внутреннем устройстве объектов, с которыми он работает
  • Функции должны быть маленькими
  • Каждая функция должна выполнять одну задачу
  • Принцип «DRY» — Don’t Repeat Yourself («не повторяйся»)

Эти правила достаточно чётко формулируют то, как должен создаваться конкретный фрагмент кода, чтобы быть «чистым». Но я задам такой вопрос: если мы создадим фрагмент кода, соответствующий этим правилам, какова будет его производительность?
Читать дальше →
Всего голосов 221: ↑185 и ↓36 +149
Комментарии 368

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

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

Что?


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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Оказание первой помощи. Практическая часть

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

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

Итак, необходимо придерживаться четырёх шагов при оказании первой помощи.

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

Scratch — это уже не игрушки

Время на прочтение 4 мин
Количество просмотров 40K
Незаметно для нас Scratch из языка программирования для детей превратился в огромное онлайн-сообщество самоучек-программистов. За время пандемии количество пользователей этого языка удвоилось, и он начинает обгонять в рейтингах популярности «реальные» языки программирования (наподобие Typescript и Rust).

Scratch — это уже не игрушки.

Скорее всего, вы знаете, что Scratch — это язык программирования для детей, в котором используются визуальные блоки:


Как и многие родители в пандемию, я недавно познакомил с ним моих детей. Он постепенно начал их захватывать, и я осознал, что под его поверхностью скрывается нечто большее. Я решил присмотреться, и вот что обнаружил.
Читать дальше →
Всего голосов 55: ↑54 и ↓1 +53
Комментарии 99

Оказание первой помощи — мифы и страхи

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

— Тут человеку плохо, помогите! Есть врач? — кричала бы я, если бы попала в ситуацию, когда человеку нужно помочь, а я не знаю, как.

Знакомо? Попадали сами в такую ситуацию? Надеюсь, что нет и что не придётся. Я решила не ждать подобной ситуации и пошла на курсы по оказанию первой помощи.

А в этом небольшом посте я хочу развеять самые популярные мифы, связанные с (не)оказанием помощи, и дать немного советов по теме.

Миф #1 — помощь могут оказывать только медики

Читать далее
Всего голосов 76: ↑60 и ↓16 +44
Комментарии 96

Пишем UART-терминал для Flipper Zero

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

Почти все, кому надо и кому интересно, уже знакомы с Flipper Zero и знают, что это такое.

Для тех же, кто ещё не в курсе, приведу небольшое определение: Flipper Zero — это компактный цифровой мультитул для пентестеров и гиков. А ещё это тамагочи, в котором живет вполне себе дружелюбный кибер-дельфин.

Знакомство с дельфином

В августе прошлого года в одной из малиновых тусовок (канал в telegram по RaspberryPi) я как обычно пролистывал на большой скорости длинную «простыню» обсуждений. И тут мой глаз удивительным образов заметил хорошо знакомые слова — «Flipper Zero». Прочитав сообщение, я узнал, что сей девайс не просто уже существует, но и его можно, наконец, купить в России. 

В общем, и завертелось 😊

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

Жизнь на колёсах. Велосипед как способ проветрить голову

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

Привет! Меня зовут Артём, я старший программист в SM Lab. А ещё я люблю велосипеды. Так как работа программистов чаще всего так или иначе сидячая (ну, кроме тех ребят, кто осилил освоить стол для стоячей работы и прочие плюшки), то нам приходится придумывать, как бы добавить в жизнь активности и движения. Полезно и для здоровья в целом, и для мозга. Мой выбор — велосипеды.

В этом посте я поделюсь своим опытом веложизни и расскажу, на что обратить внимание, если вы хотите сами собрать себе крутого двухколёсного коня из отдельных деталей. А ещё будет много (много) фоток.

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

...

Читать далее
Всего голосов 48: ↑44 и ↓4 +40
Комментарии 57

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

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

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

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

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

Как мы делали клубную программу Спортмастера

Время на прочтение 9 мин
Количество просмотров 20K
Если вы чаще раза в год ходите в наши магазины за спорттоварами или одеждой, скорее всего, у вас есть наша клубная карта (синяя, серебряная или золотая). Меня зовут Максим, я заместитель директора департамента разработки, внедрения и сопровождения ПО, и в этом посте мы с коллегами расскажем про становление клубной программы Спортмастера, про коллекцию собранных нами в процессе граблей и про то, чем наша клубная программа отличается от привычных скидочных карт других торговых сетей.



Тогда


На дворе стоял 2004-й год. Что было — клубная программа у Спортмастера и доллар по 27 рублей. Чего не было — нормального интернета на местах и стабильных каналов связи у магазинов.

В те годы мы сами написали систему лояльности, которая могла нормально вести учёт бонусных баллов каждого пользователя. Но так как магазинов у нас уже тогда было много, в отличие от мощностей для обработки данных, вся наша база данных бонусов умещалась в одном файле, который просто рассылался по магазинам и обслуживался локально, а изменения за день возвращались обратно. Кстати, именно это стало первопричиной того, что бонусы можно тратить только на следующий день после покупки, а не требования бизнеса и обеспечение возврата клиентов — в течение суток всё это просто не успевало обновиться и пересчитаться как следует.
Читать дальше →
Всего голосов 49: ↑44 и ↓5 +39
Комментарии 60

Как понять, есть ли в тебе искра программиста

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

Я думаю начать учиться писать код. Какой ноутбук мне купить? Нужно ли участвовать в буткемпе? Нужны ли моему ребёнку особые курсы или подготовка, чтобы поступить на computer science?

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

Приведу свой совет вкратце


Прежде чем думать обо всём этом: специальности, вузе, в который будет поступать ребёнок, покупке ноутбука, вам нужно понять, есть ли у вас (или у ребёнка) «искра программирования».

Это потребует от вас немного времени и усилий, но здорово то, что онлайн есть куча высококачественных и бесплатных ресурсов, позволяющих вам ощутить, что же такое кодинг и разработка, чтобы вы приняли решение, стоит ли выбрать это в качестве карьеры или хобби. Некоторые из них я приведу в этом посте.
Читать дальше →
Всего голосов 42: ↑39 и ↓3 +36
Комментарии 22

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

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

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

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

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

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

Самостоятельный хостинг в 2023 году

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

Оригинал блога, который вы сейчас читаете, имеет идеальный рейтинг PageSpeed 100 / 100. (По крайней мере, на момент написания статьи.) Это не хвастовство, а совсем наоборот. Оказывается, достичь этого вообще не трудно. Просто хостите статическую страницу с простыми стилями, и этого достаточно. Статическую страницу создать довольно просто. Ты выпускаешь index.html и отправляешь её по проводам. Можно изощриться и генерировать её при помощи фреймворка, как я делаю в случае Astro. Но смысл моего поста не в этом.

Смысл фразы хостить статическую страницу в слове хостить. Эта страница хостится на Raspberry Pi 4b, находящемся у меня дома. Устройство обеспечивает превосходную скорость, почти ничего не стоит и имеет бесконечные возможности бесплатного расширения. В этом посте я расскажу, насколько просто было всё настроить. И о том, насколько потрясающий, по моему мнению, опыт разработки это даёт.
Читать дальше →
Всего голосов 39: ↑37 и ↓2 +35
Комментарии 26

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

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

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

Как с помощью практики на LeetCode я получил несколько офферов

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

После рассказа о том, как я получил работу в Amazon, в этом посте на reddit мне задали множество вопросов о том, как мне помог LeetCode в подготовке к собеседованиям.

В статье я отвечу на эти вопросы.

Сколько времени это заняло?

Я начал готовиться за 2-3 месяца до собеседований в BigTech. В то время я тратил по 2-3 часа в день на подготовку.

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

Android vs iOS: кто быстрее покорит Эверест?

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

Привет всем мобильным разработчикам! Мы одинаково любим Android и iOS. Но у каждого свои предпочтения. Предлагаем определить фаворита в дружеском поединке. Для этого перенесёмся в Гималаи и покорим Эверест. Выберите команду и постарайтесь дать как можно больше правильных ответов, чтобы добраться до вершины первыми. На весь тест 10 минут.

Взобраться на Эверест
Всего голосов 48: ↑41 и ↓7 +34
Комментарии 24

10 причин не участвовать в некоторых IT-конференциях

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

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

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

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

Вдруг нам всем вместе получится сделать мир отечественных IT-событий немного лучше.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Информация

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