В этой статье вы узнаете о рекурсии и о том, как она работает.Примеры в этой статье на языке Go, но концепция рекурсии одинакова для любого языка программирования.Что такое рекурсия?В большинстве языков программирования функция может вызывать другую функцию. Но функция также может вызывать саму себя. Рекурсия - это техника, при которой функция вызывает саму себя.Пример:// Функция для вычисления факториала с использованием рекурсии func factorial(n int) int { if n == 0 { // Базовый случай: факт…
Тимур Мухитдинов, Senior Software Development Engineer в Booking.com, поделился своими советами по подготовке к собеседованию на позицию backend‑разработчика.Недавно я провёл своё 40-е собеседование в Booking.com, где оцениваю кандидатов по кодингу, системному дизайну и код‑ревью. Я хорошо понимаю ожидания от кандидатов на разные уровни: core developer, senior developer и engineering manager. Эти знания могут быть полезны для тех, кто готовится к собеседованию в Booking.com или других крупных к…
ВведениеПри разработке у нас зачастую возникает необходимость прямого взаимодействия с DOM-элементами. Для такого случая React предоставляет нам механизм рефов (refs), который позволяет получать доступ к элементам после того, как они зарендерятся. Чаще всего используются обычные объектные рефы через useRef (обзовём их так), но также существует другой подход — callback refs. Этот метод даёт нам дополнительную гибкость и контроль над жизненным циклом элементов, позволяя выполнять необходимые нам …
Атрибуты импорта Фича ECMAScript "Атрибуты импорта" (import attributes) позволяет импортировать артефакты, отличающиеся от модулей JavaScript. В этом разделе мы рассмотрим, как это выглядит и почему может быть полезным. Атрибуты импорта достигли 4 стадии в октябре 2024 года и, вероятно, станут частью ECMAScript 2025. ❯ 1. Импорт артефактов, отличающихся от JS-модулей (ESM) Импорт артефактов, которые не являются кодом JS в виде модулей, имеет давнюю традицию в экосистеме JS. Например,…
Продолжаем серию статей, посвящённую написанию собственной минималистичной ОС. В прошлой части мы познакомились со всеми вводными компонентами проекта и поставили общие цели. В этой же мы реализуем загрузку ядра, вывод строки Hello World!, механизм паники ядра, а также некоторые функции управления памятью и работы со строками. ▍ Навигация по вышедшим частям Часть 1 Часть 2 < — вы здесь. Загрузка ядра При включении компьютера происходит инициализация процессора, и он начинает выполнять ко…
Кажется, у нас делают игры двух категорий: «наш ответ» чему-то там либо что-то крайне самобытное. Нет, конечно, между этими двумя крайностями встречаются хорошие игры, но чаще всего это инди-проекты, созданные благодаря энтузиазму. А сделать какой-то уникальный тайтл, который основывался бы на русской культуре, — задача невероятно сложная. Или же вполне достижимая? На фоне недавнего провала «Сказок старой Руси», когда её разработчики обвинили в этом The Game Awards, хочется вспомнить игры, кот…
Программирование — это не только алгоритмы и логика, но и удивительное разнообразие синтаксиса языков. Работая над новым средством подсветки синтаксиса для llamafile, разработчик Justine Tunney* исследовала 42 языка программирования — от классического C и экзотического Tcl до мощного Ruby. Justine делится своими открытиями о том, насколько причудливым и непредсказуемым может быть лексический синтаксис. Например, триграфы в C — устаревший инструмент для поддержки клавиатур с ограниченными символ…
Позвольте мне начать с вопроса: Как бы вы протестировали производительность части кода или функции в Go? Если вы уже опытный разработчик здесь вы ничего нового не узнаете, но для новичков это отличная возможность узнать что-то новое и попрактиковаться.В этом уроке я покажу вам, очень подробно, как использовать потрясающий инструмент бенчмаркинга, который встроен в пакет тестирования Golang.Давайте начнёмЧто такое Benchmark - тестыВ Go Benchmark - тесты используются для измерения производительн…
ПредисловиеНе часто приходится встречать людей, которые понимают зачем он нужен и ещё реже попадаются проекты, в которых его используют. А шаблон-то очень полезный!В этой статье вы поймёте как он устроен, зачем он нужен и на примерах научитесь его правильно применять.Как он устроен?Главная смысл шаблона - передача в качестве props функции, которая будет принимать какие-то данные от дочернего компонента и отрисовывать их так, как будет указано в родительском.Например:const ParentComponent = () =…