Как стать автором
Обновить
35.47

Node.JS *

Среда для запуска JavaScript-приложений

Сначала показывать
Порог рейтинга
Уровень сложности

Обновление состояния системы через Server-Sent Events (SSE) без затей

Уровень сложности Средний
Время на прочтение 11 мин
Количество просмотров 601
Туториал

В любом многопользовательском проекте рано или поздно возникает потребность в оперативном уведомлении клиентов об изменении объектов в системе. В данной статье я не буду рассматривать что-то сложное, типа совместного редактирования документов, а напишу о более простой ситуации, которая встречается повсеместно.

Допустим, у нас есть список объектов, к примеру – список эпизодов для шоу. Один клиент на него смотрит, а другой в это время добавляет в список еще один эпизод. Хорошо бы факт добавления нового эпизода сразу отобразить у первого клиента. То же самое относится и к просмотру информации об отдельном эпизоде: если один клиент её просматривает, а другой – редактирует, было бы здорово результат редактирования сразу отображать у первого.

Для решения данной задачи очень удобно использовать механизм Server-Sent Events (SSE). О том как это сделать в проектах, у которых на беке Node, а на фронте React, я и хочу поговорить.

Читать далее
Рейтинг 0
Комментарии 3

Новости

Фонетический словарь. Пет-проект в полезное приложение

Уровень сложности Простой
Время на прочтение 3 мин
Количество просмотров 2K

У меня есть хобби — изучение английского языка, и последнее время я увлекся фонетикой британского английского языка, но почти все словари дают транскрипцию «‎Королевского английского», на котором говорят, по данным Гугла, около 3 процентов жителей Соединённого Королевства. А найденный в интернете словарь http://www.cubedictionary.org/ хоть и дает нужную мне транскрипцию, но имеет ряд недостатков.

Читать далее
Всего голосов 10: ↑8 и ↓2 +6
Комментарии 13

Пишем key-value storage на пакетах ping'а или храним данные между облаками

Уровень сложности Средний
Время на прочтение 5 мин
Количество просмотров 2.5K

Как-то давно я просматривал опции для команды ping и обратил внимание, что можно задавать размер ICMP пакета. "Хм", — подумал я: "Можно же сложить в сам пакет какую-то полезную нагрузку". Эта идея время от времени всплывала у меня в голове, но что именно можно хранить в пакете ICMP придумать не удавалось. Однако, недавно пришло понимание, что если хранить данные в ICMP пакете, то они не будут занимать место в оперативной памяти! То есть можно сделать key-value хранилище, где все данные будут храниться внутри сети.

Читать дальше →
Всего голосов 15: ↑14 и ↓1 +13
Комментарии 10

Создание внутреннего пакета компонентов React — проще, чем кажется

Время на прочтение 14 мин
Количество просмотров 1.2K
Туториал

В разработке современных React-приложений часто возникает потребность в повторном использовании компонентов. Есть разные способы решения такой задачи, и одним из них является создание внутреннего пакета компонентов. Грамотная сборка и поддержка такого пакета позволяют повысить эффективность и производительность разработки, а команда получает возможность использовать готовые компоненты в различных проектах без особых усилий. 

Я frontend-разработчик SimbirSoft Эллина, и в этой статье расскажу, как создать внутренний пакет компонентов в React с помощью инструмента сборки Rollup, а также как сделать его более качественным и удобным для использования. Материал будет полезен frontend-разработчикам уровней junior+ и middle.

Читать далее 👉
Всего голосов 4: ↑3 и ↓1 +2
Комментарии 2

Истории

Пишем продвинутый планировщик с использованием React, Nest и NX. Часть 4: пользовательский интерфейс

Уровень сложности Средний
Время на прочтение 11 мин
Количество просмотров 3.3K
Туториал

Друзья, всем привет! Меня зовут Игорь Карелин, я frontend-разработчик в компании Домклик. Как вы помните из предыдущих частей (1, 2, 3), у нас уже есть функциональность для работы с планировщиком в бэкенде. Теперь нашей задачей будет создать удобный и интуитивно понятный пользовательский интерфейс, чтобы пользователи могли легко взаимодействовать с задачами.

Читать далее
Всего голосов 25: ↑24 и ↓1 +23
Комментарии 1

Подружим Sentry и Mattermost быстро и просто через адаптер

Уровень сложности Простой
Время на прочтение 4 мин
Количество просмотров 945
Туториал

Всем привет, если у вас появилась идея связать эти два инструмента, то хочу вас огорчить, прямой интеграции у них пока нет...

Вот 4 простеньких шага для решения этой проблемы...

Читать далее
Рейтинг 0
Комментарии 3

Kysely.js типизированный sql builder

Уровень сложности Средний
Время на прочтение 17 мин
Количество просмотров 1.5K
Обзор

Kysely.js – это библиотека, позволяющая писать типизированные SQL запросы. Библиотека делает работу с SQL в вашем проекте более безопасной, избавляя от таких ошибок как опечатки в названиях колонок или таблиц и неправильное использование SQL операторов в коде (код не скомпилируется). Ко всему прочему она делает работу с SQL более удобной, предоставляя при написании запросов автодополнения для таблиц, колонок, алиасов и других сущностей. Kysely имеет незначительный слой абстракции над SQL для того чтобы можно было пользоваться всей мощью SQL и при этом не изучать множество дополнительных сущностей. Библиотека поддерживает MySQL, PostgreSQL, SQLite, PlanetScale, D3, SurrealDB и другие.

Теперь погрузимся в наш кисель 😃.

Читать далее
Всего голосов 7: ↑7 и ↓0 +7
Комментарии 3

Релиз Bun 1.0 (новый runtime для JavaScript )

Уровень сложности Простой
Время на прочтение 12 мин
Количество просмотров 29K
Перевод

Представляем Bun версии 1.0.

Bun — это быстрый и универсальный набор инструментов для запуска, сборки, тестирования и отладки JavaScript и TypeScript кода (от одного файла до fullstack-приложения). Сегодня Bun стабилен и готов к продакшену.

Читать далее
Всего голосов 89: ↑86 и ↓3 +83
Комментарии 117

Как я писал сервер на NodeJS для базы Firebird 3.0

Уровень сложности Средний
Время на прочтение 6 мин
Количество просмотров 2.6K
Туториал

В этой статье я расскажу, как писал самый простой сервер для общения со старой базой данных Firebird 3.0.

Читать далее
Всего голосов 2: ↑1 и ↓1 0
Комментарии 0

Puppeteer в Node.js: Антипаттерны, которые следует избегать

Время на прочтение 9 мин
Количество просмотров 2.1K
Перевод

Puppeteer — это мощная библиотека автоматизации работы с браузером для веб-скрейпинга и интеграционного тестирования. Однако ее асинхронный реалтайм API оставляет вам достаточно много пространства для неумышленного создания проблем и антипаттернов.

Хоть эти антипаттерны и не являются полноценными ошибками, исключение их из скриптов (или хотя бы разумное использование) значительно повысит надежность вашего Puppeteer-кода.

Давайте начнем.

Читать далее
Всего голосов 13: ↑11 и ↓2 +9
Комментарии 0

Бот-сказочник, или как генерировать истории с помощью ChatGPT и Telegram

Уровень сложности Простой
Время на прочтение 5 мин
Количество просмотров 4.9K
Туториал

Представьте, что вам нужно написать художественный роман. У вас есть ключевые идеи, продуманы основные повороты событий, но нет возможности объединить все в одну историю.

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

Такая же проблема может встретиться, например, если нужно написать пост или оформить описание рабочего проекта. Если вам это знакомо, то просто автоматизируйте процесс. Можно написать специального бота, который будет из тезисов генерировать цельную историю с помощью ChatGPT, а после — записывать в Notion. Реализовать такой проект и задеплоить его на сервер несложно — посмотрим, как это сделать.
Читать дальше →
Всего голосов 44: ↑44 и ↓0 +44
Комментарии 3

Как и зачем проводить интегральный мониторинг SSR-приложений

Время на прочтение 5 мин
Количество просмотров 995
Туториал
Recovery Mode

Привет, Хабр! На связи команда Frontend-разработки Учи.ру. Знаем, что сейчас активно развиваются SSR-фреймворки — Next.js и другие. Если ваше приложение создано с использованием подобной технологии, вы можете отслеживать корректность его работы с помощью интегрального мониторинга. В этом материале мы расскажем, почему он важен, какие инструменты позволяют его проводить, как с ним работать Frontend-разработчику. И конечно, поделимся своим опытом — как нашли и исправили серьезную ошибку в продукте.

Читать далее
Всего голосов 7: ↑5 и ↓2 +3
Комментарии 0

Безопасность в деталях: исследование cистемы защиты от CSRF

Время на прочтение 6 мин
Количество просмотров 1.8K
Кейс

Атаку, при которой хакер пытается выполнить авторизованный запрос на вашем сайте, используя доступ, предоставленный пользователем, называют CSRF-атакой (cross-site request forgery – межсетевая подделка запроса). Это огромная проблема для любой платформы (и особенно финтех) с многотысячной аудиторией. 

Меня зовут Алексей, я разработчик команды Платформа Banki.ru. Я занимаюсь, в частности, разработкой новой платформы на node.js, на которую у нас сейчас переезжают многие сервисы. Ниже я подробно расскажу о том, как мы искали самый надежный способ защиты от CSRF-атак, чем руководствовались при выборе решения и как его реализовали.

Читать далее
Всего голосов 3: ↑3 и ↓0 +3
Комментарии 4

Ближайшие события

Битва пет-проектов
Дата 25 сентября – 30 ноября
Место Онлайн
PG Boot Camp Russia 2023
Дата 5 октября
Время 10:00 – 17:00
Место Москва Онлайн
Joker
Дата 9 – 14 октября
Время 16:00 – 19:30
Место Санкт-Петербург Онлайн
Открытый урок «Kafka Streams»
Дата 16 октября
Время 10:00
Место Онлайн
Питч-сессия pravo (tech) impulse
Дата 19 октября
Время 15:45 – 17:30
Место Москва
Russia Risk Conference 2023 — 19-я конференция по риск-менеджменту
Дата 25 – 26 октября
Время 10:00 – 19:00
Место Москва Онлайн
IT Recruiting – HR Forum 2023
Дата 8 – 10 ноября
Время 9:00 – 18:00
Место Москва
Онлайн IT HR-конференция HR42
Дата 17 – 18 ноября
Время 10:00 – 14:00
Место Онлайн
HighLoad++ 2023
Дата 27 – 28 ноября
Время 9:00 – 20:00
Место Москва Онлайн

Делаем import/require ясными и красивыми

Уровень сложности Средний
Время на прочтение 4 мин
Количество просмотров 2.4K
Туториал

Довольно часто в проектах встречается использование относительных import/require. Если это маленький проект, и подключается модуль из текущей папки, то это приемлемо, но при разрастании проекта и глубины вложенности папочной структуры без слез смотреть на это нельзя:

Читать далее
Всего голосов 9: ↑5 и ↓4 +1
Комментарии 11

А давайте убьем все фреймворки?

Уровень сложности Средний
Время на прочтение 15 мин
Количество просмотров 47K
Мнение

Общая тенденция развития технологий характеризуется рывками и спадами. Рассмотрим, например, массовое перемещение человеческих тел. Изначально применялись лошади и повозки, которые постепенно стали сложными, и эта технология превратилась в отдельную индустрию. Затем внезапно появились поезда. Про лошадей быстро забыли, и фокус сместился на новое направление. Пар стал объектом исследований и превратился в сложную науку. Параллельно развивались дизель и электричество. В определенный момент паровые двигатели ушли в прошлое, и все перешли на дизель и электричество. Аналогично сейчас происходит переход на электромашины, требующие значительно меньшего количества жидкостей.

Технологии эволюционируют и функционируют, а новые технологии их полностью заменяют. Считаю, что сейчас наступает эпоха, когда технологии фреймворков и Электрона могут быть вытеснены генеративными AI. Рассмотрим несколько примеров.

Нажимайте вот эту вот кнопотуленку
Всего голосов 134: ↑108 и ↓26 +82
Комментарии 270

Рефлексия в JavaScript и TypeScript: обзор основных техник. Как сгенерировать CLI-интерфейс для класса

Уровень сложности Средний
Время на прочтение 22 мин
Количество просмотров 6.3K
Обзор
Как и в любом достаточно динамическом языке, в JavaScript из коробки есть способы разобрать в рантайме структуру его значений — определить типы, ключи объектов, получить конструкторы и прототипы.

В этой статье я хочу рассмотреть основные такие возможности, плюс показать, как можно получить ещё больше информации о типах при использовании TypeScript, и как добавить классам и их полям собственные метаданные при помощи декораторов. Каждую из техник я покажу на примере небольшого CLI-фреймворка, работа с которым к концу статьи будет выглядеть как на картинке:

Читать дальше →
Всего голосов 42: ↑42 и ↓0 +42
Комментарии 0

Установка Ghost на сервер под управлением ispmanager

Время на прочтение 5 мин
Количество просмотров 1.1K
Туториал

Для начала немного о Ghost. Как сказано на странице сравнения Ghost с WordPress на их сайте:

Ghost — это быстрая современная альтернатива WordPress, полностью ориентированная на профессиональную издательскую деятельность.

Движок Ghost, работающий на базе Node.js, рассчитан на самые различные применения – от простых текстовых блогов до профессиональных СМИ с любыми типами контента. Среди пользователей платформы — Apple, NASA, Mozilla, DuckDuckGo, x5x.host.

Ghost — платный движок, и вы можете использовать его в облаке по ценам, представленным на официальном сайте. Но можно взять его исходники бесплатно и развернуть платформу на своём личном хостинге, что обойдётся вам значительно дешевле. 

В этой статье я расскажу, как установить свой личный Ghost на сервер под управлением панели ispmanager, в которой имеется поддержка Node.js, как говорится, «искаропки».

Читать далее
Всего голосов 4: ↑4 и ↓0 +4
Комментарии 2

Деплой приложения с nginx как по нодам

Время на прочтение 10 мин
Количество просмотров 5.3K

Привет, Хабр! В этом материале мы разберем деплой приложения на React, арендуем облачный сервер и настроим nginx. Здесь будет необходимый минимум для фронтенд-разработчика:

  • Заливка проекта на GitHub.
  • Аренда и настройка облачного сервера по SSH.
  • Настройка nginx для раздачи статических файлов.
  • Сжатие бандла.
  • Подключение домена.
  • Настройка HTTPS.
  • Настройка Docker.

Для этого материала также доступна видеоверсия.
Читать дальше →
Всего голосов 45: ↑41 и ↓4 +37
Комментарии 11

Telegram-бот для диагностики дисков в серверах. Как я собрал инфраструктуру и что использовал для разработки

Время на прочтение 15 мин
Количество просмотров 4K
Обзор
image

Привет, Хабр! Меня зовут Дмитрий, я старший системный инженер в Selectel, работаю с серверами и клиентским оборудованием.

Ранее я написал статью о том, как появилась идея создать бота на базе API Telegram, который анализирует показатель S.M.A.R.T дисков. Теперь более детально расскажу о его разработке и о том, как было развернуто приложение.

Перед тем как мы погрузимся в детали, добавлю, что у меня нет опыта коммерческой разработки и администрирования инфраструктуры. В сети довольно много информации о том, как это делать в теории, но мало практических материалов для выхода на уровень продакшена.

Как системный инженер я изучаю новые вещи «методом тыка». Поэтому все представленные сборки приложения и способы его развертывания основаны на личном опыте и умении искать информацию в сети, а также применении «метода тыка» для получения конечного результата.
Читать дальше →
Всего голосов 38: ↑38 и ↓0 +38
Комментарии 12

Vite SSR BOOST — Наш собственный путь в мире React SSR

Уровень сложности Средний
Время на прочтение 3 мин
Количество просмотров 2K
Перевод

Всем привет! Меня зовут Михаил, и я являюсь СТО компании Lomray Software. Сегодня я хочу кратко рассказать вам о мотивах создания собственной библиотеки для разработки React-приложений с поддержкой SSR (серверный рендеринг) и поделиться результатами этой работы.

Читать далее
Всего голосов 3: ↑3 и ↓0 +3
Комментарии 2

Вклад авторов

Работа