Все потоки
Поиск
Написать публикацию
Обновить
28.02

Node.JS *

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

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

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

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

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

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

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

Нажимайте вот эту вот кнопотуленку

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

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

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

Читать дальше →

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

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

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

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

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

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

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

Читать далее

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

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

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

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

Для этого материала также доступна видеоверсия.
Читать дальше →

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

Время на прочтение15 мин
Количество просмотров5.4K
image

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

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

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

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

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

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

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

Читать далее

Внутреннее представление и оптимизации строк в JavaScript-движке V8: «отмываем» строки, «обгоняем» C++

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

С самого рождения JavaScript в каком-то смысле был языком для манипулирования текстом — от веб-страничек в самом начале до полноценных компиляторов сейчас. Неудивительно, что в современных JS-движках достаточно много сил уделено оптимизации внутреннего представления строк и операций над ними.

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

Волшебство Drag And Drop: Как динамические дашборды делают жизнь проще. Часть 1. Описание и мотивы

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

Всем привет :)

Я Никита, уже больше 4 лет занимаюсь фронтендом, погружаюсь в инфраструктуру и кайфую от IT мира и комьюнити около веба, частенько читаю Хабр и решил попробовать написать сам.

Цикл статей про опыт добавления динамических элементов на страницу с помощью Drag and Drop и получения данных с BFF. Предварительно разбив на три части.

1. Описание решения, технологий и мотивация

2. Техническая часть с кодом про структуру компонентов и Drag and Drop решение

3. Техническая часть с кодом про BFF( backend for frontend ) решение

Читать далее

Как автоматизировать переводы во Frontend приложении

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

В текущем мире очень многие сайты имеют поддержку многих языков, в большинстве случаев это происходит с помощью i18n npm пакета. Чаще всего переводы хранятся в .js, .json файлах и очень часто есть языки для которых в компании нет переводчика, либо же он не предполагался в целом, и в таком случае приходит на помощь разработчик с переводчиком. И вот однажды я столкнулся с тем, что на проекте оказалось очень много текстов и все их нужно было переводить вручную, что занимало достаточно много времени и я задумался о том, как это можно автоматизировать.

Моя идея была в том, чтобы написать функцию, в которую можно было бы передать языковой код и json объект с текстом на исходном языке, а на выходе получить переведенный json/js file. С помощью этой функции я мог бы в ci/cd Pipeline переводить все текста на проекте, в исходных текстах которых были изменения, либо же следить за текстами в рантайме и на лету переводить текста.

И я нашел два относительно простых и бесплатных метода, для того чтобы это сделать.

Читать далее

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

Явное управление ресурсами: пробуем новую фичу JavaScript и TypeScript

Уровень сложностиСложный
Время на прочтение13 мин
Количество просмотров19K

Одной из самых интересных грядущих новинок JavaScript и TypeScript для меня является явное управление ресурсами. Новый синтаксис using foobar = … реализует идиому RAII, позволяя писать намного менее многословный код, управляющий какими-либо ресурсами.

В этой статье я хочу на примерах разобрать эту фичу — в том виде, в котором она сейчас доступна в TypeScript 5.2.0-beta с полифиллом disposablestack. Я рассмотрю синхронные и асинхронные ресурсы, DisposableStack/AsyncDisposableStack, а также приведу пример неочевидного бага, в который попался я сам. По пути я также коснусь нескольких других нововведений Node.js, про которые, возможно, ещё знают не все. Весь код доступен в репозитории.
Читать дальше →

Как React 18 улучшает производительность приложения

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


React 18 представил конкурентные (concurrent) возможности, которые радикально меняют способ рендеринга приложений. В этой статье мы рассмотрим, как эти возможности улучшают производительность приложения.


Начнем с повторения основ "долгих (долго выполняющихся) задач" (long tasks) и соответствующих метрик производительности.

Читать дальше →

Реализация WebRTC в Node JS. Передача видео с Raspberry PI до Web

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

У меня была задача - передача видео с минимальной задержкой с Raspberry Pi до веб-интерфейса моего робота. Причем необходима была реализация на Node JS.

В этой статье я расскажу как можно реализовать стриминг с Raspberry Pi до веб-страницы используя WebRTC и Node JS.

Читать далее

Как настроить Node.js Express сервер для React

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

Это руководство поможет вам разработать простое приложение на React и подключить его к серверу, созданному с использованием Node.js. Мы начнем с создания React приложения с помощью команды create-react-app, а затем настроим его подключение к серверу Node.js c помощью proxy.

Читать далее

Начало работы с Webpod: упрощенное решение для деплоя вашего веб-сайта

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

Приветствую, товарищи разработчики!

Мы рады представить вам Webpod — фантастический новый инструмент, разработанный для упрощения процесса деплоя вашего веб-сайта. Webpod позволяет эффективно и быстро развернуть веб-сайт на сервере, позволяя больше сосредоточиться на проекте и меньше на настройке.

Читать далее

Как сделать робота с нуля. С чего начать

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

Я разрабатываю роботов и меня часто спрашивают — «как сделать робота», «где ты находишь информацию, какие ресурсы используешь»?

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

Читать далее

Неравный бой — Tinkoff эквайринг. Рекуррентные платежи

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

Цель данной статьи:

1. Помочь разработчикам в интеграции

2. Привлечь внимание команды Tinkoff на проблемы связанные с эксплуатацией их API

Читать далее

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