Чем занимаешься в свободное время?

Ответ

В свободное время я часто углубляюсь в смежные для Node.js разработчика области, такие как DevOps и инфраструктура. Например, экспериментирую с настройкой CI/CD пайплайнов на GitHub Actions для автоматического тестирования и деплоя Node-приложений в Docker-контейнерах.

Недавний pet-проект: Реализация простого real-time сервиса уведомлений с использованием Socket.io и Redis Pub/Sub.

// server.js
const { createServer } = require('http');
const { Server } = require('socket.io');
const Redis = require('ioredis');

const httpServer = createServer();
const io = new Server(httpServer);
const redisSub = new Redis();
const redisPub = new Redis();

// Подписываемся на канал в Redis
redisSub.subscribe('notifications');

// Когда в Redis приходит сообщение, рассылаем его всем подключенным клиентам
redisSub.on('message', (channel, message) => {
  io.emit('notification', JSON.parse(message));
});

io.on('connection', (socket) => {
  console.log('Client connected');
  // Клиент может отправить событие, которое публикуется в Redis
  socket.on('broadcast', (data) => {
    redisPub.publish('notifications', JSON.stringify(data));
  });
});

httpServer.listen(3000);

Также читаю технические блоги (например, о производительности V8) и иногда участвую в open-source проектах, связанных с экосистемой Node.js.

Ответ 18+ 🔞

А, ну это же просто праздник какой-то, ебать мои старые костыли! Вот сидишь ты, такой весь из себя Node.js разработчик, а потом бац — и тебя накрывает волной: а не похуярить ли мне в смежные области? DevOps там, инфраструктура... Ну, знаешь, чтоб не выглядеть полным пиздаком, который только console.log в коде умеет ставить.

Вот, например, CI/CD пайплайны на GitHub Actions. Ну, это же просто ёперный театр! Настраиваешь эту всю хуйню, чтобы приложение само тестировалось и в Docker-контейнеры закатывалось. Сидишь, блядь, с YAML-файлами, и удивление пиздец — то запятую пропустил, то отступ не тот. Но когда оно наконец-то запускается и работает — чувствуешь себя богом, чувак. Сам от себя охуел.

А недавно вот пет-проект запилил — сервис уведомлений в реальном времени. Socket.io, Redis Pub/Sub... Ну, классика жанра, но всегда прикольно, когда всё сходится.

// server.js
const { createServer } = require('http');
const { Server } = require('socket.io');
const Redis = require('ioredis');

const httpServer = createServer();
const io = new Server(httpServer);
const redisSub = new Redis();
const redisPub = new Redis();

// Подписываемся на канал в Redis
redisSub.subscribe('notifications');

// Когда в Redis приходит сообщение, рассылаем его всем подключенным клиентам
redisSub.on('message', (channel, message) => {
  io.emit('notification', JSON.parse(message));
});

io.on('connection', (socket) => {
  console.log('Client connected');
  // Клиент может отправить событие, которое публикуется в Redis
  socket.on('broadcast', (data) => {
    redisPub.publish('notifications', JSON.stringify(data));
  });
});

httpServer.listen(3000);

Смотри, какая хитрая жопа получается. Клиенты через сокеты цепляются, а сообщения между экземплярами приложения через Redis гоняются. Красота, блядь. Поначалу, конечно, волнение ебать — то соединение падает, то сообщение теряется. Но когда настроил — работает как часы. Прям доверия ебать ноль к самому себе — неужели я это сделал?

Ну и, конечно, без постоянного чтения никак. Технические блоги, особенно про производительность V8 — это же просто золотая жила. Читаешь и думаешь: «Э, бошка, думай!» Столько оптимизаций, о которых даже не подозревал. Иногда даже в open-source проекты лезу, связанные с Node.js экосистемой. Ну, знаешь, не просто баг-репорт оставить, а реально пул-реквест запилить. Чувствуешь себя причастным, хотя иногда и понимаешь, что ты там — манда с ушами по сравнению с мейнтейнерами. Но зато опыт, ёпта, бесценный. В общем, да похуй на сложности, главное — не стоять на месте, а то скучно станет.