Как стать автором
Обновить
5
-1
Александр @alex_mayak

Frontend-разработчик

Отправить сообщение

Паттерн Outbox: как не растерять сообщения в микросервисной архитектуре

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

Привет! Меня зовут Михаил Боровиков, я тимлид команды, которая отвечает за систему процессинга заказов Lamoda — Orders Management. Эта система, словно «сердце» Lamoda, через которое проходит самый важный для бизнеса шаг — оформление заказа.

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

Для решения этой проблемы мы выбрали паттерн Outbox. И в этой статье я расскажу, что он из себя представляет, как мы его применили, почему пошли по пути at-least-once и не положились на работу одного брокера сообщений.

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

Debouncer: практический пример использования замыкания

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

Что такое дебаунсер?

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

Практическое применение

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

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

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

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

Ленивые бесконечные списки на основе Deferrable Views

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

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

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

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

Как нефункциональные требования влияют на архитектуру

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

Привет, Хабр, меня зовут Светлана Уварова, я — ведущий системный архитектор в МТС.

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

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

Руководство для тимлидов: планирование, Agile и вот это всё

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

Смотрели фильм «Люди в чёрном»? В нём множество запоминающихся реплик и моментов, смешных и поучительных. В одной из сцен агенты попали в затруднительную ситуацию и не могли понять, какой следующий шаг в расследовании им нужно сделать. Тогда один сказал, что нужно съесть пирог, он поможет.

Меня зовут Сергей Иванов, я из «ВКонтакте для бизнеса», и сегодня предлагаю вам присесть поудобнее и съесть пирог вместе со мной.

Съесть пирог
Всего голосов 37: ↑34 и ↓3 +31
Комментарии 6

10 фактов, которые разработчики ПО должны знать про обучение

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

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

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

Figma to Frontend: как мы автоматически синхронизируем дизайн и код

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

Меня зовут Анастасия Кабалкина, я Head of design в VK Tech. В этой статье расскажу, как мы синхронизировали треть нашей дизайн-системы за счет автоматической генерации дизайн-токенов и компонентов.

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

System Design 101

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



О сложных системах простыми словами.


В шпаргалке на высоком уровне рассматриваются такие вещи, как протоколы коммуникации, DevOps, CI/CD, архитектурные паттерны, базы данных, кэширование, микросервисы (и монолиты), платежные системы, Git, облачные сервисы etc. Особую ценность представляют диаграммы — рекомендую уделить им пристальное внимание. Полагаю, шпаргалка будет интересна всем, кто хоть как-то связан с разработкой программного обеспечения и, прежде всего, веб-приложений. Буду признателен за помощь в уточнении/исправлении понятий, терминологии, логики/алгоритмов работы систем (в рамках того, что по этому поводу содержится в оригинале), а также в обнаружении очепяток.


Выражаю благодарность Анне Неустроевой за помощь в редактировании материала.


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


System Design (сборник на английском языке).

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

«Плывите, сосиски»: гайд по командной работе

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

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

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

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

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

Angular на стероидах: наращиваем производительность при помощи WebAssembly

Время на прочтение 9 мин
Количество просмотров 3.7K
В этом посте продемонстрировано, как с лёгкостью использовать WebAssembly внутри приложения, написанного на Angular. Иногда в приложении на Angular требуется выполнить задачу, которая в JavaScript завершается не слишком быстро. Конечно, можно переписать алгоритм на другом языке, например, AssemblyScript и Rust — и код станет эффективнее. Затем можно скомпилировать получившиеся фрагменты кода в файле WASM и потоком передать двоичные данные в приложение, чтобы можно было вызывать из него функции WASM. Бывает и так, что разработчику не удаётся найти в реестре NPM опенсорсные библиотеки, нужные для решения задачи. В таком случае можно написать пакет не на JS, а на каком-нибудь другом языке, затем скомпилировать этот пакет в WASM и опубликовать код WASM в реестре NPM. Angular-разработчики устанавливают новый пакет как зависимость и выполняют WASM-функции внутри приложения.

В следующем демонстрационном примере я напишу на AssemblyScript несколько функций для работы с простыми числами, а затем опубликую файл индекса в формате WASM. Затем скопирую файл WASM в приложение Angular, потоком отправлю двоичные данные через WebAssembly API и, наконец, стану вызывать эти функции, чтобы с их помощью выполнять различные действия над простыми числами.
Читать дальше →
Всего голосов 13: ↑13 и ↓0 +13
Комментарии 1

Анимация в браузерах и как с ней работать

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

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

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

Меня зовут Сергей Чикуёнок. Я ведущий разработчик в ОК. В этом материале я расскажу об основных этапах работы с анимацией для браузеров, ключевых сложностях и вариантах их нативной оптимизации. 

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

Шпаргалка для алгособеса — алгоритмическая сложность, структуры данных, методы сортировки и Дейкстра

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

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

Так уж повелось, что любой уважающий себя работодатель перенимает передовые^✻ методики FAANG — по этой причине практически во всех IT-собесах есть она: секция алгоритмов. Кто-то ей рад, кто-то не очень, но секция есть и уходить пока не планирует. Поэтому нужно закатать рукава и достойно встретить суровую реальность.

Читать далее
Всего голосов 216: ↑214 и ↓2 +212
Комментарии 77

Как получить повышение. Взгляд глазами руководителя

Уровень сложности Простой
Время на прочтение 8 мин
Количество просмотров 65K
Новый год — это не только праздник/отдых/премии и вот это вот все, нужное подчеркнуть; это еще и старт нового промоушен-периода, когда вы можете претендовать на повышение грейда или увеличение зарплаты.

В моем отделе (B2В Product Design, хотя это сейчас неважно) 25 человек. Непосредственно я руковожу не линейными сотрудниками, а тимлидами команд, но суть в том, что по каждому из коллег в мои задачи входит распределение премий, повышение зарплат и назначение новых грейдов.

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

И я не зря публикую этот пост в самом начале года: во-первых, в разных компаниях промоушен-периоды проходят в разные сроки, начиная в том числе прямо с зимы; во-вторых, чем раньше вы выберете правильную тактику, тем больше у вас шансов на успех.


(Моя любимая команда. И тут, кстати, не все))
Читать дальше →
Всего голосов 135: ↑63 и ↓72 -9
Комментарии 294

Подборка книг для менеджеров и тимлидов, которые развивают команды в России

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

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

Вся подборка основана на рекомендациях Оксаны Нечитайловой, руководителя отдела сервисного дизайна продуктов YADRO, — в IT-сфере она уже 15 лет и имеет богатый опыт управления командами и построения процессов. Каждую книгу подборки Оксана сопроводила развернутыми комментариями, которые помогут вам понять, стоит ли вам тратить на нее время.

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

Нужно ли разработчикам проектирование?

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

Такие схемы на проектах готовят наши архитекторы. Достаточно ли их чтобы оценить состав и сложность каждого модуля, объем и трудоемкость работ в целом. Поможет ли такая схема при планировании работ?

В статье рассуждение о том что могло бы помочь.

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

Четыре способа оптимизации ПО

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

Преждевременная оптимизация может оказаться корнем всех зол, а запоздалая — корнем безысходности. Каким бы быстрым ни становилось аппаратное обеспечение, мы находим способы писать медленные программы. И зачастую проявляется это не сразу. Пользователи могут годами не обращать внимания на проблему в производительности ПО, пока она не становится очевидной, что порой происходит в течение одного дня.
Читать дальше →
Всего голосов 67: ↑62 и ↓5 +57
Комментарии 12

Книга «Искусство чистого кода»

Время на прочтение 11 мин
Количество просмотров 6.6K
image Привет, Хаброжители!

Большинство разработчиков ПО тратят тысячи часов на создание излишне сложного кода. Девять основных принципов книги «Искусство чистого кода» научат вас писать понятный и удобный в сопровождении код без ущерба для функциональности. Главный принцип — это простота: сокращайте, упрощайте и перенаправляйте освободившуюся энергию на самые важные задачи, чтобы сэкономить бесчисленное количество часов и облегчить зачастую очень утомительную задачу поддержки кода. Автор бестселлеров Кристиан Майер помог тысячам людей усовершенствовать навыки программирования и в своей новой книге делится опытом с читателями.
Читать дальше →
Всего голосов 6: ↑6 и ↓0 +6
Комментарии 3

Выгорание — блажь лентяев, заработок коучей или производственная проблема?

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

Термин «выгорание» вошёл в мою жизнь как-то неожиданно. Работал я. Работал много лет: сначала кодил, потом свои проекты делал, команды собирал, бизнес налаживал… И тут — Бац! Куча мемов на эту тему во всех связанных с IT-ресурсах. Не знаю, то ли я в какой-то тундре жил, то ли тундра жила во мне. Но да ладно: мемы почитал, поржал и забыл. А тут неожиданно этот термин вошёл в обиход моих ребят. Где-то как бы в шутку, где-то в серьёз. А мы все знаем: в каждой шутке есть доля шутки, а остальное — чистая правда. 

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

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

«Вот я в своё время по 10 часов работал без выходных и отпусков. Скучные проекты пилил, ночью на проде хотфиксил и т.д. и т.п. У ребят же условия другие: график нормированный (авралы, конечно, бывают, но всё в рамках), переработки оплачиваются х1,5-х2 (всё по ТК), проекты интересные. Премии! Отпуска! Работа, блин, командная! Не как дурак сидишь и всё в одного пилишь, а в коллективе ответственных товарищей. Какое, мол, выгорание? Я вам сейчас расскажу про выгорание!» Ну и прочая блаж в том же духе.

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

Как хакнуть себе голову? Эффективно переключаем состояния на примере IT-специалистов

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

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

Тут появляются авторы статьи, которую вы читаете, и предлагают попробовать пару интересных штук для эффективного включения. Мы пробуем замедлиться в два раза и еще пощелкать с десяток примеров устного счета. После митинга – вынести всю рефлексию на бумагу и «шлифануть» это активной прогулкой. Простые решения, которые в совокупности позволяют не терять время на «тупняк в монитор». 

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

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

Невероятно гибкие и переиспользуемые UI контролы для Angular

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

В данной статья я расскажу о том как создавать гибкие UI контролы в несколько строк кода, которые легко расширяются, кастомизируются и поддерживаются!

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

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность