Forwarded from Frontender's notes [ru]
Многие участвовали в хакатонах и гейм-тонах, но задумывались ли вы, как они создаются изнутри? Автор статьи пошёл дальше и с нуля разработал собственный геймтон на стеке Node.js + Prisma + Vue.js + Fastify. В материале подробно разбирается архитектура проекта, работа API, механика игры и даже тонкости расчёта попаданий по холсту.
Игровая идея проста: у вас есть катапульта, палитра цветов и задача максимально точно воспроизвести картинку уровня на виртуальном холсте. Можно подключиться к готовому соревнованию или даже запустить локально свой геймтон со своими правилами.
• Хороший разбор фулстек-приложения с чистым кодом и примерами
• Практическое использование Fastify, Prisma, canvas и TypeScript
• Интересный пример геймификации API
А вы пробовали писать игры или геймификацию на Node.js?
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍2
Статья исследует концепцию потоков в Node.js, объясняя их ключевую роль в модулях, таких как fs и http. Рассматриваются основные концепции и ментальная модель, помогающая понять и эффективно использовать потоки.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2
• История: работа в чешском Red Hat
• Циничные заметки о карьере в IT от «гейткипера»
• Рецензия на книгу “Изучаем паттерны проектирования JavaScript, 2-е издание”
• Всероссийский рейтинг IT-брендов работодателей 2024
• Моя петиция EB-1A на грин-карту талантов, одобренная с первой попытки
Please open Telegram to view this post
VIEW IN TELEGRAM
Как в 16 байтах кода уместился целый дракон? Разбираем, какие трюки позволяют создавать сложные изображения с минимальным объёмом данных, и переносим эту магию в JavaScript.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Рассмотрим встроенные инструменты отладки в браузере, которые помогут ускорить поиск и исправление ошибок в JS. Вместо console.log разберем более мощные техники для анализа и диагностики кода.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👨💻Гринатом — ИТ-интегратор Росатома — открывает вакансию системного аналитика!
Ждём кандидатов с опытом работы системным аналитиком в ИТ от 5 лет, навыками проектирования, документирования и интеграций, умением декомпозировать крупные задачи, пониманием принципов построения микросервисной архитектуры ПО и разработки Web-приложений, знанием agile/scrum методологии, BPMN, UML, SQL, OpenProject и Postman. Опыт реализации и внедрения систем ECM, ERP, MES, CRM, HRM будет преимуществом.
🤝С нами вы сможете работать с полным соблюдением ТК РФ в удалённом формате из любого региона с сокращённым днём в пятницу, получать «белую» зарплату 2 раза в месяц, учиться за счёт компании и заботиться о своём здоровье с пакетом ДМС, включающим стоматологию.
Ждём кандидатов с опытом работы системным аналитиком в ИТ от 5 лет, навыками проектирования, документирования и интеграций, умением декомпозировать крупные задачи, пониманием принципов построения микросервисной архитектуры ПО и разработки Web-приложений, знанием agile/scrum методологии, BPMN, UML, SQL, OpenProject и Postman. Опыт реализации и внедрения систем ECM, ERP, MES, CRM, HRM будет преимуществом.
🤝С нами вы сможете работать с полным соблюдением ТК РФ в удалённом формате из любого региона с сокращённым днём в пятницу, получать «белую» зарплату 2 раза в месяц, учиться за счёт компании и заботиться о своём здоровье с пакетом ДМС, включающим стоматологию.
hh.ru
Вакансия Системный аналитик в Москве, работа в компании Гринатом. ИТ (вакансия в архиве c 16 сентября 2025)
Зарплата: не указана. Москва. Требуемый опыт: более 6 лет. Полная. Дата публикации: 09.09.2025.
🔥2
process.nextTick
в Node.js и зачем он используется?process.nextTick
позволяет выполнять функцию сразу после текущей операции, но перед началом следующего цикла событий (event loop
). Это полезно для выполнения задач с высоким приоритетом.console.log('Начало');
process.nextTick(() => {
console.log('Выполнено в nextTick');
});
console.log('Конец');
// Вывод:
// Начало
// Конец
// Выполнено в nextTick
🗣️ В этом примере process.nextTick выполняет функцию между выводом "Конец" и началом следующего цикла событий. Это помогает при обработке срочных задач.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
На тему мемоизации написано довольно много статей, и все они хорошо раскрывают суть. Но мне часто не хватало шпаргалки, которую можно отправить на вопрос «А как мемоизировать?». В статье речь пойдет исключительно о функциональных компонентах.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
🎯 Работай в коротких циклах
Залипаешь на задаче, а потом понимаешь, что полдня ушло, а результата нет?
👉 Совет: используй метод Pomodoro или спринты по 30-40 минут. Устанавливай себе небольшие цели: например, «разобраться с логикой функции», «добавить обработку ошибок». Это удерживает фокус и помогает видеть прогресс.
Залипаешь на задаче, а потом понимаешь, что полдня ушло, а результата нет?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6👎1
🎯 Погружайся в «смежные зоны»
Ты специализируешься на backend’е, но frontend для тебя тёмный лес? Или хорошо кодишь, но понятия не имеешь, как работает DevOps?
👉 Совет: раз в неделю уделяй время на изучение чего-то за пределами своей зоны комфорта. Это может быть просмотр видео, разбор чужого кода или маленький проект. Чем шире твои знания, тем проще видеть картину целиком, а значит, и решать задачи эффективнее.
Ты специализируешься на backend’е, но frontend для тебя тёмный лес? Или хорошо кодишь, но понятия не имеешь, как работает DevOps?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤2👎1
• Зачем нужен сертифицированный WAF и когда его стоит использовать? Обзор и настройка файрвола веб-приложений
• «Безумный» CSS квиз от гика
• Работа с куки-файлами хуже сапёрного дела
• Воспоминания о GeoCities, предтече социальных сетей из 1990-х годов
• Отслеживание позиций торгового робота Московской биржи через CSV файл
Please open Telegram to view this post
VIEW IN TELEGRAM
Если необходимо создать npm пакет и гарантировать, что его смогут использовать все желающие, нужно, чтобы он поддерживал CommonJS (CJS) и ECMAScript Modules (ESM). Рассмотрим, как создать такой пакет используя TypeScript.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
В этой статье мы рассмотрим различные фреймворки JavaScript и поможем новичкам определиться с выбором инструмента для своих проектов.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍1
Worker Threads
— это модуль в Node.js, который позволяет создавать несколько потоков для выполнения JavaScript кода параллельно. Это полезно для CPU-интенсивных операций, так как основной поток Node.js работает в однопоточном режиме и не подходит для вычислительно сложных задач.const { Worker, isMainThread, parentPort } = require('worker_threads');
if (isMainThread) {
const worker = new Worker(__filename);
worker.on('message', (message) => {
console.log(`Сообщение от воркера: ${message}`);
});
} else {
parentPort.postMessage('Выполняется в воркере');
}
🗣️ Worker Threads позволяет выполнять тяжёлые задачи параллельно основному потоку, повышая производительность в многопроцессорных системах.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2❤1
Подборка опенсорсных библиотек на все случаи жизни – от создания графиков и диаграмм до масштабирования проекта с помощью распределенного выполнения задач и кэширования вычислений.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Недавно я узнал о corepack, инструменте, работающем с Node.js и решающем множество проблем с менеджерами пакетов. С этого момента буду использовать его в своём процессе разработки.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
😁2👎1🐳1
Как оживить формы на сайте без фреймворков? Хотите понять, как чистый JavaScript превращает скучные поля в динамичные интерфейсы?
📅 22 сентября в 20:00 МСК на открытом уроке мы разберём, как добавить в анкету динамические поля, условия показа, счётчики и реакцию на ввод — без React и Vue. Вы увидите, как одна функция может управлять доступностью кнопки и менять структуру DOM в реальном времени.
❗️ Прямо в ходе вебинара создадим интерактивную анкету с радиокнопками, чекбоксами и текстовыми областями, освоим псевдо-отправку и научимся чистому, понятному коду. Спикер продемонстрирует лучшие практики обработки форм и покажет, как без лишнего «кода-шума» добиться гибкости.
👉 Посетите урок и получите скидку на курс «JavaScript Developer. Basic» → https://vk.cc/cPB5VR
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
📅 22 сентября в 20:00 МСК на открытом уроке мы разберём, как добавить в анкету динамические поля, условия показа, счётчики и реакцию на ввод — без React и Vue. Вы увидите, как одна функция может управлять доступностью кнопки и менять структуру DOM в реальном времени.
❗️ Прямо в ходе вебинара создадим интерактивную анкету с радиокнопками, чекбоксами и текстовыми областями, освоим псевдо-отправку и научимся чистому, понятному коду. Спикер продемонстрирует лучшие практики обработки форм и покажет, как без лишнего «кода-шума» добиться гибкости.
👉 Посетите урок и получите скидку на курс «JavaScript Developer. Basic» → https://vk.cc/cPB5VR
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Веб-приложениям не всегда нужна запись в файловую систему, но Node.js предоставляет для этого обширный интерфейс прикладного программирования (API). Это может понадобиться, если вы ведёте логи отладки, передаёте файлы на сервер или с сервера, или создаёте инструменты командной строки.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Please open Telegram to view this post
VIEW IN TELEGRAM
👎1🔥1
Создайте приложение на Node.js, которое работает как таймер обратного отсчёта. Программа должна принимать количество секунд в качестве аргумента командной строки и каждую секунду выводить сообщение с оставшимся временем: "Осталось X секунд". Когда отсчёт завершится, программа должна вывести "Время вышло!" и остановиться.
Осталось 10 секунд
Осталось 9 секунд
...
Осталось 1 секунда
Время вышло!
Решение задачи
const seconds = parseInt(process.argv[2]);
if (isNaN(seconds) || seconds <= 0) {
console.log('Введите корректное количество секунд.');
process.exit(1);
}
let remainingTime = seconds;
const countdown = setInterval(() => {
if (remainingTime > 0) {
console.log(`Осталось ${remainingTime} секунд`);
remainingTime--;
} else {
console.log('Время вышло!');
clearInterval(countdown);
}
}, 1000);
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1