Сегодня реализуем интерактивную консольную игру, в которой игрок управляет ресурсом и принимает решения в условиях неизвестной ценности.
В этой задаче:
• Управляем состоянием игры и балансом игрока;
• Реализуем аукционную механику с риском;
• Строим полноценный игровой цикл;
• Анализируем результат каждого решения.
Задача показывает, как моделируются системы с неопределённостью, ограниченными ресурсами и пошаговой логикой.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22❤14👍9🤝2
В этой статье:
• Автор пошагово показывает, как с нуля создать игровой движок без Unity и Unreal;
• Узнаете, как на уровне кода будут двигаться объекты, реализовываться физика и логика игры;
• Приводится реальный пример, как из простого браузерного кода вырастает полноценный игровой цикл.🔊 Продолжайте читать на Habr!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18❤10👍8🤝2
В шпаргалке собраны основные методы Web Storage API (localStorage и sessionStorage) для работы с простым key–value хранилищем на стороне клиента. Показано, как сохранять, читать и удалять данные, сериализовывать объекты, очищать хранилище и реагировать на изменения состояния между вкладками с помощью события storage.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤19🔥10🤝9👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Здесь разбираются замыкания, this, области видимости, асинхронность, прототипы и др. важные темы. Отличный репозиторий, если хочешь не просто писать код, а понимать, почему он работает именно так. Полезно для роста и закрепления знаний.
Оставляю ссылочку: GitHub📱
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19❤12🔥9🤝1
Генерация UUID без сторонних библиотек!
Уникальные ID нужны везде: ключи для данных, идентификаторы сущностей, корреляционные ID, маркеры транзакций. В JS есть нативное решение —
Самый простой кейс — получить уникальный идентификатор для сущности, события или записи:
Каждый вызов возвращает новый UUID.
Иногда нужно быстро создать пачку ID — например, для тестов, сидирования данных или моков:
Такой подход не требует состояния и имеет пренебрежимо малую вероятность коллизий.
UUID удобно сразу добавлять в структуру данных — например, при создании объектов в памяти или перед сохранением в БД:
UUID часто используют для трассировки запросов и событий в логах — особенно в асинхронном коде и микросервисах:
Такой ID позволяет связать все логи одного запроса, даже если он проходит через несколько уровней или сервисов.
🔥 UUID — это идентификаторы, а не security-токены для авторизации. Отлично подходят для логирования, тестовых данных и структур хранения
📣 JS Ready | #практика
Уникальные ID нужны везде: ключи для данных, идентификаторы сущностей, корреляционные ID, маркеры транзакций. В JS есть нативное решение —
crypto.randomUUID().Самый простой кейс — получить уникальный идентификатор для сущности, события или записи:
const id = crypto.randomUUID();
console.log("UUID:", id);
Каждый вызов возвращает новый UUID.
Иногда нужно быстро создать пачку ID — например, для тестов, сидирования данных или моков:
const ids = Array.from({ length: 5 }, () => crypto.randomUUID());
console.log("Список UUID:", ids);Такой подход не требует состояния и имеет пренебрежимо малую вероятность коллизий.
UUID удобно сразу добавлять в структуру данных — например, при создании объектов в памяти или перед сохранением в БД:
const user = { name: "Alice", id: crypto.randomUUID() };
console.log("Пользователь:", user);UUID часто используют для трассировки запросов и событий в логах — особенно в асинхронном коде и микросервисах:
function withCorrelationId(fn) {
const correlationId = crypto.randomUUID();
return fn(correlationId);
}
withCorrelationId((cid) => {
console.log(`[${cid}] start request`);
// бизнес-логика
console.log(`[${cid}] end request`);
});Такой ID позволяет связать все логи одного запроса, даже если он проходит через несколько уровней или сервисов.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👍8❤7🤝1
Как корректно показывать относительное время в интерфейсе?
Очень частая задача: показать относительное время, “только что”, “3 часа назад”, “через 2 дня”.
В JS есть нативный и локализованный API -
Он сам знает грамматику языка и формы слов:
Поддерживает
Идеально ложится в логику UI:
🔥
📣 JS Ready | #совет
Очень частая задача: показать относительное время, “только что”, “3 часа назад”, “через 2 дня”.
В JS есть нативный и локализованный API -
Intl.RelativeTimeFormat:new Intl.RelativeTimeFormat(locale, options);
Он сам знает грамматику языка и формы слов:
rtf.format(-1, 'hour'); // «час назад»
rtf.format(-2, 'hour'); // «2 часа назад»
Поддерживает
second | minute | hour | day | week | month | year и работает одинаково во всех локалях:new Intl.RelativeTimeFormat('en').format(-1, 'day'); // yesterday
new Intl.RelativeTimeFormat('de').format(3, 'day'); // in 3 TagenИдеально ложится в логику UI:
const diff = Math.round((date - Date.now()) / 60000);
rtf.format(diff, 'minute');
Intl.RelativeTimeFormat — нативный способ показывать относительное время корректно, локализованно и без библиотек.Please open Telegram to view this post
VIEW IN TELEGRAM
👍20❤7🔥7🤝3
This media is not supported in your browser
VIEW IN TELEGRAM
Postman — инструмент для работы с API прямо из VS Code: отправка запросов, просмотр ответов, работа с headers, body, токенами и коллекциями. Удобно тестировать эндпоинты, проверять ответы и разбираться в API ещё до интеграции во фронт. Экономит время и помогает быстрее понять, что приходит с сервера.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤21🔥13👍7🤝2
Шпаргалка по работе с состоянием в JavaScript без мутаций. Примеры показывают, как аккуратно изменять объекты и массивы, создавая новые структуры данных вместо изменения существующих. Такой подход упрощает отслеживание изменений, снижает риск непреднамеренных изменений данных и делает код более понятным при дальнейшей поддержке.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤8🔥7🤝4
Please open Telegram to view this post
VIEW IN TELEGRAM
❤19👍11🔥9