JavaScript FullStack разработчик
•
JavaScript, HTML, CSS, TypeScript, Node.js, Vue.js, SQL, Git, PostgreSQL•
от 80 000 до 130 000 ₽ | 1–3 годаРазработчик Node.js («Сборка заказов»)
•
Node.js, TypeScript, JavaScript, MongoDB, Apache Kafka, ClickHouse, Elasticsearch, Docker, Kubernetes•
Уровень дохода не указан | 2+ годаFullStack Developer
•
Node.js, Vue, GraphQL, Jest, Redis, ClickHouse, PostgreSQL, Docker, Grafana•
от 200 000 ₽ | 3+ годаPlease open Telegram to view this post
VIEW IN TELEGRAM
👎6🤡1
JavaScript и Node.js имеют множество библиотек тестирования и утверждений, таких как Jest, Jasmine, Qunit и Mocha. В этой статье мы рассмотрим, как использовать Mocha для тестирования, Chai для утверждений и Sinon для моков, шпионов и стабов.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Создайте HTTP-сервер на Node.js, который по запросу возвращает случайную цитату из заранее заданного списка.
Ожидаемое поведение:
•
Сервер запускается на порту 3000.•
При GET-запросе на /quote сервер возвращает JSON с случайной цитатой.•
При запросе на другой путь возвращается сообщение об ошибке.Решение задачи
const http = require('http');
const quotes = [
"The only limit to our realization of tomorrow is our doubts of today.",
"Do not watch the clock. Do what it does. Keep going.",
"The future depends on what you do today.",
"Success is not the key to happiness. Happiness is the key to success.",
"Hardships often prepare ordinary people for an extraordinary destiny."
];
const server = http.createServer((req, res) => {
res.setHeader('Content-Type', 'application/json');
if (req.url === '/quote' && req.method === 'GET') {
const randomQuote = quotes[Math.floor(Math.random() * quotes.length)];
res.writeHead(200);
res.end(JSON.stringify({ quote: randomQuote }));
} else {
res.writeHead(404);
res.end(JSON.stringify({ error: 'Invalid endpoint' }));
}
});
server.listen(3000, () => {
console.log('Сервер запущен на http://localhost:3000');
});
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
В статье разобраны распространенные проблемы в коде начинающих разработчиков с конкретными решениями: грамотная инъекция зависимостей, использование Scoped-сервисов, паттерн Generic Repository и создание Stateless-классов.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Статья рассказывает о создании Vanilla Calendar Pro — датапикера, собравшего 480+ звезд на GitHub. Описывается путь от первого опыта в open source до популярного инструмента, востребованного разработчиками.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
Node.js backend разработчик (Middle+/Senior)
•
Node.js, TypeScript, GraphQL, PostgreSQL, WebSockets, Redis•
от 3 000 до 4 500 $ | 3+ годаFullstack-разработчик
•
JavaScript, Node.js, PHP 8, Symfony, MongoDB, Redis, PostgreSQL, GitLab, REST API•
Уровень дохода не указан | 3+ годаSenior Backend Developer (Node.js)
•
Node.js, SQL, Apache Kafka, Redis, CI/CD•
Уровень дохода не указан | 3+ годаPlease open Telegram to view this post
VIEW IN TELEGRAM
• История: работа в чешском Red Hat
• Циничные заметки о карьере в IT от «гейткипера»
• Рецензия на книгу “Изучаем паттерны проектирования JavaScript, 2-е издание”
• Всероссийский рейтинг IT-брендов работодателей 2024
• Моя петиция EB-1A на грин-карту талантов, одобренная с первой попытки
Please open Telegram to view this post
VIEW IN TELEGRAM
Я профессионально работаю над веб-приложениями уже более десяти лет, и за это время пришлось научиться использовать множество различных систем и инструментов. В процессе обучения я обнаружил, что официальная документация, как правило, оказывается наиболее полезной.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
event loop starvation происходит, когда долгие или бесконечные операции в цикле событий блокируют выполнение других задач. Обычно это связано с асинхронными функциями, которые вызывают сами себя или используют
process.nextTick()
и Promise.resolve()
слишком часто, задерживая другие операции, такие как таймеры и I/O.function starveEventLoop() {
process.nextTick(starveEventLoop); // Постоянное добавление задач в цикл событий
}
console.log('Начало');
starveEventLoop();
console.log('Конец');
🗣️ event loop starvation может вызвать зависание или замедление работы приложения. Будьте осторожны при использовании process.nextTick() и бесконечных асинхронных циклов.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
От медленного к быстрому: Использование JavaScript Performance API для оптимизации веб-приложений
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Мартин Фаулер утверждает, что делает рефакторинг ежечасно. Как это возможно? В статье разбираемся, как можно улучшать код небольшими шагами, не отрываясь от основной работы.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
🦄2
🕵️ Думай, как хакер, чтобы писать безопасный код
Если ты не можешь сломать свой код — это не значит, что никто не сможет.
👉 Совет: тренируй «атакующее мышление». Пробуй сломать свой код: вводи неожиданные данные, отключай сервисы, симулируй атаки. Чем раньше ты найдёшь уязвимость, тем меньше проблем у пользователей.
Если ты не можешь сломать свой код — это не значит, что никто не сможет.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
Node.js backend разработчик (Senior)
Senior JavaScript developer
Senior Node.js developer
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
В статье подробно разбирается метод Array.prototype.filter() в JavaScript. Поговорим о его внутреннем механизме, особенностях работы и нюансах, которые могут быть полезны разработчикам.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Создайте HTTP-сервер на Node.js, который раздаёт статические файлы из указанной папки. По умолчанию сервер должен обслуживать файлы из папки public и работать на порту 3000.
Создайте структуру папок:
project/
├── server.js
└── public/
└── index.html
Решение задачи
Файл server.js:
const http = require('http');
const fs = require('fs');
const path = require('path');
const PORT = 3000;
const PUBLIC_DIR = path.join(__dirname, 'public');
const server = http.createServer((req, res) => {
let filePath = path.join(PUBLIC_DIR, req.url === '/' ? 'index.html' : req.url);
fs.readFile(filePath, (err, data) => {
if (err) {
res.writeHead(404, { 'Content-Type': 'text/plain' });
res.end('404 Not Found');
} else {
res.writeHead(200, { 'Content-Type': 'text/html' });
res.end(data);
}
});
});
server.listen(PORT, () => {
console.log(`Сервер запущен на http://localhost:${PORT}`);
});
Файл public/index.html (пример содержимого):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Static Server</title>
</head>
<body>
<h1>Добро пожаловать на мой сервер!</h1>
</body>
</html>
node server.js
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
• Слабоумие и отвага: как найти ликвидные облигации с доходностью до 40% и ежемесячными фиксированными выплатами
• Nuxt I18n Micro: Как я решил написать свой i18n для NuxtJS
• Четыре пункта, как улучшить код Backend стажера
• Получение серверного времени через WebSockets и отображение его в Angular-приложении
• Добавление поддержки нескольких языков в NestJS и Angular приложениях
Please open Telegram to view this post
VIEW IN TELEGRAM
В этой статье я добавлю поддержку нескольких языков в NestJS и Angular приложениях, для сообщений в ошибках, уведомлениях и данных полученных из базы данных.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Создайте HTTP-сервер на Node.js с REST API для управления списком задач. Реализуйте следующие функции:
•
Получение всех задач (GET /tasks
).•
Добавление новой задачи (POST /tasks
).•
Удаление задачи по индексу (DELETE /tasks/:index
).Решение задачи
npm init -y
npm install express
const express = require('express');
const app = express();
const port = 3000;
app.use(express.json());
let tasks = [];
// Получение всех задач
app.get('/tasks', (req, res) => {
res.json(tasks);
});
// Добавление новой задачиapp.post ('/tasks', (req, res) => {
const { task } = req.body;
if (task) {
tasks.push(task);
res.status(201).json({ message: 'Задача добавлена', tasks });
} else {
res.status(400).json({ error: 'Задача не должна быть пустой' });
}
});
// Удаление задачи по индексу
app.delete('/tasks/:index', (req, res) => {
const index = parseInt(req.params.index, 10);
if (index >= 0 && index < tasks.length) {
tasks.splice(index, 1);
res.json({ message: 'Задача удалена', tasks });
} else {
res.status(404).json({ error: 'Задача не найдена' });
}
});
// Запуск сервера
app.listen(port, () => {
console.log(`Сервер запущен на http://localhost:${port}`);
});
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤1🤡1
Junior developer TypeScript (JavaScript)
Junior Developer
Junior Backend-разработчик Node.js
Please open Telegram to view this post
VIEW IN TELEGRAM
В статье начальник отдела разработки делится опытом собеседований и объясняет, почему выпускники курсов часто не дотягивают до требований, а внутреннее обучение приносит больше результатов.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM