Как стать автором
Обновить
39
0
Кирилл Матросов @sharpfellow

Разработчик

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

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

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

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

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

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

Решение задачи про определение типа в Typescript с Yandex Cup 2023

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

Всю прошлую неделю проходила квалификация на Yandex Cup 2023. Я решил тряхнуть стариной и вспомнить что такое спортивное программирование.

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

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

Завариваем чаек, я начинаю.

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

Go's Garbage Collection: как работает и почему это важно знать

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

В статье посмотрим на Go Garbage Collector — механизм автоматического освобождения невостребованной памяти приложения в Go. Разберём его устройство и принципы работы.

Читать далее
Всего голосов 25: ↑21 и ↓4+17
Комментарии13

Коллеги, вы меня огорчаете

Время на прочтение12 мин
Количество просмотров170K
В июле и августе 2020 года я, с подачи Григория Петрова, проводил для компании Evrone технические интервью на позицию Senior Golang Backend developer. И, видимо, буду вынужден продолжать проводить, о чём ниже.

Задача формулировалась как «найти человека, который сможет задать и поддерживать высокий уровень профессионализма в применении языка Go». То есть, сформулирована она была по-человечески, перевод на канцелярит — мой. Под эту задачу я сформировал новый опросник вместо того, которым пользовался несколько лет — старый был с жестким закосом под DevOps. Методику, которой я пользуюсь для создания опросников и количественной оценки соответствия кандидатов, я излагал в своем докладе «Техническое интервью как инженерная задача» на конференции Saint TeamLead 2019.

И вот что я хочу сказать вам, коллеги: вы меня огорчаете.


Читать дальше →
Всего голосов 181: ↑137 и ↓44+93
Комментарии1152

Менеджмент зависимостей в Javascript

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

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

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

Module Federation — что скрывается под кажущейся простотой

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

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

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

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

Начнем!

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

Топ рекомендаций по Core Web Vitals на 2023 год

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


Привет, друзья!


Представляю вашему вниманию перевод этой замечательной статьи, представляющей собой коллекцию лучших практик, которые по мнению команды Chrome DevRel являются наиболее эффективными способами улучшения показателей Core Web Vitals.


Core Web Vitals — это часть метрик Web Vitals, используемых для оценки веб-страниц и включенных во все инструменты Google. Владельцы сайтов должны учитывать эти метрики. Каждый показатель Core Web Vitals представляет собой отдельный аспект опыта взаимодействия пользователя с сайтом, измеряемый в полевых условиях и отражающий реальные действия по достижению критически важного результата, ориентированного на пользователя.


Web Vitals — это инициатива Google, цель которой — предоставить единое руководство по сигналам качества, необходимым для обеспечения хорошего взаимодействия с пользователем в Интернете (источник).


Интересно? Тогда прошу под кат.

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

Самоуправляемые команды и продуктовый менеджмент

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

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

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

Читать статью про навыки Product Managerа✨
Всего голосов 7: ↑5 и ↓2+3
Комментарии3

Под капотом у Mobx. Пишем свою реактивную библиотеку с нуля

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

Первое мое знакомство с Mobx началось с удивления. Я не понимал всю магию библиотеки и задавал себе вопрос: “А как это возможно?”. Кажется, в ней используются какие-то подкапотные возможности JS или Mobx вообще написан на другом языке. 

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

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

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

Разбор финала конкурса-квиза на стенде hh.ru на #HolyJS18

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

Привет, это последняя часть разборов вопросов с нашего стенда.


Вопросы по React тут.


Разбор первых четырех туров тут.



Здесь вопросы по темам практически не сгруппированы, разбираем все по одному.

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

Настройка Webpack 5

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

Пошаговое руководство по настройке сборщика Webpack 5 совместно с такими инструментами как Pug, Sass, JavaScript, React и Markdown.

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

JavaScript: малоизвестные, но полезные API

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


Привет, друзья!


Представляю вашему вниманию перевод этой замечательной статьи, посвященной 4 малоизвестным API, которые в некоторых ситуациях могут оказаться весьма полезными:



Код примеров на GitHub.

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

TypeScript в деталях. Часть 1

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


Привет, друзья!


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


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

React: полное руководство по повторному рендерингу

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


Привет, друзья!


Представляю вашему вниманию перевод этой замечательной статьи, посвященной повторному рендерингу (re-render, далее — ререндеринг) в React.


Что такое ререндеринг?


Существует 2 основные стадии, которым следует уделять пристальное внимание, когда речь заходит о производительности в React:


  • первоначальный рендеринг (initial rendering) — происходит, когда компонент впервые появляется на экране;
  • ререндеринг — второй и последующие рендеринги компонента.

Ререндеринг происходит, когда React необходимо обновить приложение некоторыми данными. Обычно, это является результатом действий пользователя, получения ответа на асинхронный запрос или публикацию при подписке (паттерн "pub/sub" — публикация/подписка или издатель/подписчик) на определенные данные.

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

Error Boundaries в React: препарируем лягушку

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

Представим, что у нас есть приложение на React, в котором можно читать и писать отзывы. Пользователь открыл список отзывов, пролистал его, нажал кнопку «Написать отзыв». Форма написания отзыва открывается в попапе. Пользователь начинает вводить текст, свой email. Вдруг валидация почты срабатывает с ошибкой, которую разработчики забыли обработать. Результат — белый экран. React просто не смог ничего отрендерить из-за этой ошибки в каком-то попапе.

Первая же мысль — не надо было всё уничтожать, список же был не при делах. Чтобы обработать ошибку в render-фазе в React, необходимо использовать Error Boundaries. Почему именно так нужно обрабатывать ошибки — расскажу под катом.

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

Используй console.log () как про

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

Использование console.log() для отладки JavaScript - самая распространенная практика среди разработчиков. Но есть еще кое-что ...

Объект console обеспечивает доступ к отладочной консоли браузера. Особенности того, как она работает, варьируются от браузера к браузеру, но де-факто существует набор функций, которые обычно предоставляются.

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

Свою квалификацию программиста можно повысить, если разбираться в деталях разных технологий

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

Фрагмент комикса с простым объяснением, что такое числа с плавающей запятой

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

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

Дело в том, что многие программисты используют технологии не задумываясь, как они работают. И это нормально. Люди выполняют поставленные задачи. От них не требуют понимания всей сути, потому что детали отвлекают от главной задачи и зачастую ничем не помогают в её выполнении.
Читать дальше →
Всего голосов 31: ↑28 и ↓3+25
Комментарии9

Профилирование производительности React-приложений

Время на прочтение7 мин
Количество просмотров17K
Сегодня поговорим об измерении производительности рендеринга React-компонентов с использованием API React Profiler. Ещё мы будем оценивать взаимодействия с компонентом, применяя новый экспериментальный API Interaction Tracing. Кроме того, мы воспользуемся API User Timing для проведения собственных измерений.

В качестве площадки для экспериментов воспользуемся приложением React Movies Queue.


Приложение React Movies Queue
Читать дальше →
Всего голосов 32: ↑32 и ↓0+32
Комментарии0

Прототипы в JS и малоизвестные факты

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

Лирическое вступление 


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


Оказалось, что есть много неочевидных вещей из старых времён ES5 и даже ES6, о которых я не слышал. А еще оказалось, что вывод консоли браузера может не соответствовать действительности.

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

Concurrent Mode в React: адаптируем веб-приложения под устройства и скорость интернета

Время на прочтение10 мин
Количество просмотров22K
В этой статье я расскажу о конкурентном режиме в React. Разберёмся, что это: какие есть особенности, какие новые инструменты появились и как с их помощью оптимизировать работу веб-приложений, чтобы у пользователей всё летало. Конкурентный режим — новая фишка в React. Его задача — адаптировать приложение к разным устройствам и скорости сети. Пока что Concurrent Mode — эксперимент, который может быть изменён разработчиками библиотеки, а значит, новых инструментов нет в стейбле. Я вас предупредил, а теперь — поехали.

Сейчас для отрисовки компонентов есть два ограничения: мощность процессора и скорость передачи данных по сети. Когда требуется что-то показать пользователю, текущая версия React пытается отрисовать каждый компонент от начала и до конца. Неважно, что интерфейс может зависнуть на несколько секунд. Такая же история с передачей данных. React будет ждать абсолютно все необходимые компоненту данные, вместо того чтобы рисовать его по частям.



Конкурентный режим решает перечисленные проблемы. С ним React может приостанавливать, приоритизировать и даже отменять операции, которые раньше были блокирующими, поэтому в конкурентном режиме можно начинать отрисовывать компоненты независимо от того, были ли получены все данные или только часть.
Читать дальше →
Всего голосов 27: ↑26 и ↓1+25
Комментарии3
1

Информация

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