• Без головы — лучше! Разворачиваем собственную Headless CMS Directus в облаке
• Пишем Realtime для Multiple-page application в микросервисной архитектуре
• Как написать Google Calendar на коленке? Обзор FullCallendar
• Как внедрить наблюдаемость в микросервисное приложение с помощью OpenTelemetry, Jaeger и Prometheus
• Поддержка временных зон в фулстек-приложении на основе NestJS и Angular: работа с REST и WebSockets
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Понимание нового синтаксиса атрибутов импорта и причин, по которым нельзя полагаться только на расширения файлов.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Создайте простой сервер на Node.js с использованием Express, который принимает длинный URL и возвращает сокращённую версию. При переходе по сокращённому URL сервер должен перенаправлять на исходный URL.
Решение задачи
npm init -y
npm install express nanoid
const express = require('express');
const { nanoid } = require('nanoid');
const app = express();
const port = 3000;
app.use(express.json());
const urlDatabase = {};
// Создание сокращенного URLapp.post ('/shorten', (req, res) => {
const { url } = req.body;
if (!url) {
return res.status(400).json({ error: 'URL is required' });
}
const id = nanoid(6);
urlDatabase[id] = url;
res.json({ shortUrl: `http://localhost:${port}/r/${id}` });
});
// Перенаправление по сокращенному URL
app.get('/r/:id', (req, res) => {
const originalUrl = urlDatabase[req.params.id ];
if (originalUrl) {
res.redirect(originalUrl);
} else {
res.status(404).send('URL not found');
}
});
// Запуск сервера
app.listen(port, () => {
console.log(`Server is running on http://localhost:${port}`);
});
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🤨1
Junior Backend разработчик (Node.JS)
Junior разработчик/стажер Node.js, React, Fullstack
Junior Backend-программист NodeJS
Junior+ Node.js разработчик
Please open Telegram to view this post
VIEW IN TELEGRAM
Пример миграции базы данных для нового поля и добавления функционала на бэкенде и фронтенде. Пошаговый разбор: обновление схемы, логика на сервере и интерфейс для изменения данных.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Intersection Observer
в JavaScript и зачем он используется?Intersection Observer
— это API, которое позволяет отслеживать, когда элемент входит или выходит из области видимости (viewport). Оно полезно для оптимизации ленивой загрузки изображений, бесконечной прокрутки или анимаций при прокрутке.// Целевой элемент для наблюдения
const target = document.querySelector('.observe-me');
// Callback-функция для обработки пересечений
const observerCallback = (entries, observer) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
console.log('Элемент видим:', entry.target);
observer.unobserve(entry.target); // Останавливаем наблюдение
}
});
};
// Настройки наблюдателя
const observerOptions = {
root: null, // Вся область видимости
threshold: 0.5 // 50% видимости элемента
};
// Создаем наблюдатель
const observer = new IntersectionObserver(observerCallback, observerOptions);
// Начинаем наблюдение за элементом
observer.observe(target);
🗣️ В этом примере API отслеживает, когда .observe-me становится видимым на 50%. Intersection Observer делает прокрутку более производительной, так как избавляет от необходимости использовать события scroll.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍3
Fullstack разработчик (Node.js + Vue.js)
•
Node.js, Vue.js, NestJS, Next.js, PostgreSQL, RabbitMQ, Redis, Kubernetes•
от 240 000 ₽ на руки | 1–3 годаNode.js разработчик
•
Node.js, TypeScript, NestJS, PostgreSQL, MongoDB, RabbitMQ, Docker, Redis, GraphQL, GitLab, Ansible•
Уровень дохода не указан | 3–6 летBackend Developer (Node.js)
•
Node.js, TypeScript, NestJS, PostgreSQL, Redis, Docker, Linux, Git•
от 270 000 до 290 000 ₽ на руки | 3–6 летPlease open Telegram to view this post
VIEW IN TELEGRAM
Рассматриваем анализ данных Хабра за 2024 год: популярные статьи, скрытые тренды и интересные находки. Node.js, нейросети и Google Таблицы в деле!
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Создайте Node.js сервер, который обрабатывает два маршрута:
/hello
: Возвращает текст "Hello, World!"./time
: Возвращает текущую дату и время в формате ISO.Решение задачи
const http = require('http');
const server = http.createServer((req, res) => {
if (req.url === '/hello') {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello, World!');
} else if (req.url === '/time') {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end(new Date().toISOString());
} else {
res.writeHead(404, { 'Content-Type': 'text/plain' });
res.end('Not Found');
}
});
server.listen(3000, () => {
console.log('Server running at http://localhost:3000/');
});
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Directive Composition API в Angular 15: hostDirectives в @Component/@Directive позволяет автоматически добавлять standalone-директивы, упрощая декомпозицию логики и внедряя новые подходы.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Создание распределённого приложения для анализа вакансий hh.ru: микросервисы, контейнеры, брокеры сообщений и визуализация данных в действии. Полезно для аналитиков, компаний и соискателей.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Senior back-end NodeJS / TypeScript developer (Web3, blockchain)
Senior Backend Developer (Node.js)
Middle+/Senior Node.js Developer
Middle / Senior Fullstack / Backend разработчик
Please open Telegram to view this post
VIEW IN TELEGRAM
• Чем стартап отличается от бизнеса и что выбрать
• Как оформить резюме на стажировку, если нет опыта работы
• Прийти на внедренный проект на этапе развития системы: как аналитику быстро погрузиться в процессы
• Как 97 лет назад хитрый менеджер-заяц заставил грозного лентяя сделать то, что тот очень не хотел. Смогли бы так?
• 10 лучших приёмов логирования для разработчиков
Please open Telegram to view this post
VIEW IN TELEGRAM
Недавно мне понадобилось добавить поддержку нескольких языков в API на базе Express. Я решил поделиться кратким руководством для тех, кто хочет сделать свой бэкенд отвечающим переведенным контентом в зависимости от предпочтительного языка пользователя.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
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🔥1
Ведущий back-end программист (удаленно)
Tech Lead (TypeScript+React+Node.js)
Team Lead Back-end Node.JS (B2B Team)
Please open Telegram to view this post
VIEW IN TELEGRAM
Глубокое погружение в JavaScript Символы — что это такое, чем они важны и как их эффективно использо3вать
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3😢1
Продакт Разработчик Growth React/Node.js Full stack (Удаленно)
Full-Stack разработчик (Node Js - React Js) (middle+)
Backend-разработчик
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
Статья представляет курс по созданию IT-продуктов: от выбора архитектуры до радости от разработки. Обучение включает 141 урок, доступный бесплатно, с акцентом на качество, масштабируемость и удобство работы.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Напишите функцию, которая принимает строку, содержащую различные типы скобок (
(), {}, []
), и проверяет, являются ли они сбалансированными. Строка считается сбалансированной, если каждая открывающая скобка имеет соответствующую закрывающую в правильном порядке.Пример: Для строки
"{[()]}"
функция должна вернуть true, а для строки "{[(])}"
— false
.Решение задачи
function isBalanced(str) {
const stack = [];
const pairs = { ')': '(', '}': '{', ']': '[' };
for (let char of str) {
if (['(', '{', '['].includes(char)) {
stack.push(char);
} else if ([')', '}', ']'].includes(char)) {
if (stack.pop() !== pairs[char]) return false;
}
}
return stack.length === 0;
}
// Пример использования
console.log(isBalanced("{[()]}")); // true
console.log(isBalanced("{[(])}")); // false
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6