Недавно мне посчастливилось развернуть Next.js на сервере с помощью PM2. Этот способ я не нашел в документации фреймворка, хотя считаю его довольно удобным, при этом гайдов по теме оказалось очень мало. Рассказываю, как всё сделать, и привожу рабочие примеры.
Node.JS *
Среда для запуска JavaScript-приложений
Open source Modbus TCP — RTU конвертор
Добрый день коллеги, поговорим о прозрачном конверторе Modbus TCP в Modbus RTU.
Казалось бы, что выбор ограничен несколькими проприетарными продуктами и не всегда удовлетворяют нашим потребностям.
Мой опыт создания frontend и backend приложений для моего стартапа
В прошлой части я рассказывал как появилась идея стартапа, как найти потребности пользователей, как спроектировать продуктовые требования. Также я рассказал как сделал проектирование и разработку дизайна.
В этой части я хочу рассказать как проектировал backend & frontend приложения.
Напомню что мы разрабатываем приложения для мерчанта, которое интегрируется в административную панель через iframe. Наше приложение должно иметь доступ к товарам, для того чтобы мерчант мог настроить маркетинговые кампании. Также приложение должно автоматически совершать публикации в Instagram.
Резервный мониторинг послушного дома
Хотя концепция "умного дома" в полном объёме мало кем используется в жизни (и ещё меньше кем самостоятельно реализована), отдельные его компоненты - разного рода датчики, умные розетки, камеры и прочее, с доступом через "облако" - давно не редкость. До покупки дачи меня всё это слабо волновало - в квартире я вполне обходился механическими выключателями и градусником на окне. Тем не менее, необходимость следить за состоянием загородного дома вынудила заняться этим вопросом и я пошёл по самому простому пути с MiHome и кучей датчиков. Конечно, в нём хватает проблем - баги, которые не устраняют годами, датчики для разных регионов, периодически [кратковременно] отваливающееся облако. В целом, однако, всё это удовлетворительно работает уже не первый год, технического интереса не представляет и рассказать я хотел не об этом.
Вопрос, который меня всерьёз стал беспокоить уже на вторую зиму ((а именно зима - самый проблемный сезон) - необходимость в резервном решении на случай, если информация от MiHome перестанет поступать и надо будет решать - нужно ли срочно ехать и топить/чинить дом или можно ещё подождать, пока проблема сама рассосётся. Основных причин прекращения поступления информации три:
Истории
@ts-expect-error иногда не лучше @ts-ignore
Далеко не все знают, что обе директивы одинаково опасны, если использовать их неосторожно, ведь заглушить можно не только ошибки типов, но и откровенно невалидный синтаксис языка
Corepack в Node.js: возможности и перспективы
Привет!
Меня зовут Алексей Голодников, я фронтенд-разработчик в ЮMoney. Недавно я рассказывал на митапе Frontend Mix про обновление наших веб-приложений до Node.js 20. После доклада в секции вопросов подняли тему Corepack, и я решил рассказать о нём подробнее.
Corepack — это инструмент, который поставляется вместе с Node.js, начиная с версий 14.19.0/16.9.0. Он помогает упростить работу с популярными альтернативными менеджерами пакетов, такими как yarn и pnpm. В этой статье рассмотрим, как работает Corepack, какие у него преимущества и недостатки, а также узнаем мнения разработчиков Node.js и npm об этом инструменте и его будущем в экосистеме.
Создание собственного графического клиента ChatGPT с помощью NextJS и Wing
К концу этой статьи вы создадите и развернете клиент ChatGPT с помощью Wing и Next.js.
Это приложение может запускаться локально (в локальном облачном симуляторе) или развертываться у вашего собственного облачного провайдера.
Supercat Store — новый менеджер состояний на JavaScript
Всем привет! На связи Supercat и я хочу рассказать о менеджере состояний Supercat Store.
Supercat Store - это JavaScript-библиотека, которая позволяет легко отслеживать и реагировать на изменения стейта приложения или его части.
Коротко о Supercat Store:
• Легковесная: 12 kB - minified, 3.8 kB - minified + gzipped;
• Не зависит от фреймворков, агностик;
• Можно создавать столько сторов, сколько нужно;
• Использует мутабельную систему реактивности;
• Применяются ленивые вычисления для computed;
• Поддержка мгновенных и отложенных реакций на изменения состояния;
• Код типизирован с помощью TypeScript внутри JSDoc;
• Код документирован, в документации почти на каждый метод есть пример использования;
• Лицензия MIT.
Как я синхронизировал скорость персонажа на сервере в Lineage 2 на Node.js
Привет.
Я разрабатываю эмулятор сервера для Lineage 2 Chronicle 1: Harbingers of war на Node.js.
Столкнулся с проблемой синхронизации координат персонажа на сервере с клиентом. Когда в игре вы нажимаете мышкой в то место, куда хотите перейти то происходит плавный переход с анимацией движения. На сервере в этот момент тоже происходит движение по таймеру, но не такое плавное.
Прокси для Discord CDN
Начиная с декабря 2023 года все ссылки на вложения Discord CDN имеют следующий формат: https://cdn.discordapp.com/attachments/channel/message/filename.ext?ex=EXPIRES&is=ISSUED&hm=CODE
Значения параметров запроса EXPIRES
и ISSUED
представляют собой даты в формате Unix/epoch hex, CODE
- это закодированная контрольная сумма, используемая для проверки значений EXPIRES
и ISSUED
. Попытка получить ссылки на вложения Discord CDN без вышеупомянутых параметров запроса или с параметром EXPIRES
, превышающим текущее время, приведет к ответу 404: This content is no longer available.
пример.
На практике это означает, что вы больше не можете ссылаться на вложения из Discord на своем сайте, делиться мемасиками на OK.ru и VK.com ?
В этой статье представлено эффективное решение для публичного доступа к Discord CDN ссылкам.
Разработчикам: рецензия на книгу «Node.js: разработка приложений в микросервисной архитектуре с нуля»
Компактная книга "Node.js: разработка приложений в микросервисной архитектуре с нуля" Юлии Поповой — выпущена в апреле 2024 г. как практическое руководство для разработчиков уровня джун и выше. Описан процесс создания микросервисов на Node.js с использованием фреймворка NestJS и других популярных технологий. Хотя в заголовке есть фраза «с нуля», книга рассчитана на читателей, уже имеющих опыт работы с JavaScript, TypeScript и NestJS. Автор не углубляется в теоретические основы, а дает практические аспекты построения масштабируемых приложений на базе микросервисной архитектуры. Заглянем внутрь :-)
Контекст в Vue/Nuxt: осознать, не терять и беречь
В процессе нашей миграции на Nuxt CAPI, а потом и Nuxt 3, я очень много переосмыслял работу с контекстом как в Vue, так и в Nuxt. Как он сохраняется, на что влияет, и как можем повлиять мы.
В какой-то момент я понял, что по данной тематике крайне мало публикаций, а большинство разработчиков даже не знают, что этот контекст существует - и поэтому сами не замечают, как его теряют.
Что? Какой контекст? В setup нет this. Как его можно потерять? На что это влияет? Давайте про это поговорим.
VGranite — Софт для преобразователя интерфейсов serial<->ethernet
Мы занимаемся сбором данных с ИПУ в многоквартирных домах. Наше предпочтение - проводное подключение. Обычно мы подключаем одинаковые типы счетчиков в один канал - Вода, Газ, Электричество.
Однажды к нам перешел дом, на котором в качестве счетчиков электричества стояли "Меркурий 203.2ТL". Особенность этих счетчиков в том, что они используют в качестве интерфейса опроса - CAN шину. И тут важно уточнить, что именно только CAN шину, ничего более от CAN там нет. То есть, если вы купите преобразователь Ethernet<->CAN по типу USR-CANET200
- работать у вас ничего не будет. Причина в том, что подобные преобразователи используют кадры CAN для общения между устройствами, но разработчики счетчиков "Меркурий 203.2ТL" вертели на своем вертеле все это и просто поставили внутри драйвер CAN<->UART.
Преобразователей, способных просто работать в чистом виде по CAN, не так уж и много.
Скажу честно, мы не любим зависимости, поэтому пошли своим путем. Была приобретена Orangepi Zero, USB<>SerialTTL, TTL<>CAN. Все это было слеплено вместе в один преобразователь Ethernet<>CAN. Сразу скажу, что мы пробовали несколько разных драйверов CAN и на практике они оказались довольно капризными, мы пришли к выводу, что лучше использовать драйвер VD230 с UsbSerialTTL-CH340G.
Ближайшие события
Интеграция с ЕСИА на Node.js без CryptoPro [2024]
Приветствую! Свою первую статью решил посвятить технической стороне интеграции с ЕСИА (Госуслугами). Считаю данный материал уникальным, поскольку пока разбирался в этой задаче не увидел ни одной статьи которая описывает интеграцию с ЕСИА без использования платной CryptoPro. Надеюсь данный материал поможет коллегам, столкнувшимся с этой задачей.
Предыстория. Совсем недавно в проекте который я разрабатываю встала задача идентифицировать пользователей и сохранять их верифицированные паспортные данные с дальнейшей целью формирования документов и соглашений с этими данными. Решили сделать авторизацию через ГосУслуги, т.к это крупнейшая доступная база паспортных данных в России. Первое что бросилось в глаза - нестандартное ГОСТовское шифрование и несвобода в выборе ПО для работы с этим шифрованием, а также отсутствие актуальных материалов и понятной документации. В следствие чего пришлось собирать информацию по крупицам, пробовать и экспериментировать на каждым шаге, на что ушло немало времени. Теперь когда все шаги пройдены и интеграция налажена, я решил осветить темные места, чтобы помочь разработчикам в их непростом деле.
Перед началом! Обязательно проверьте подходит ли ваше юр лицо под критерии для подключения к ЕСИА. Это обязательное условие. Без этого Минцифры не одобрят заявку на интеграцию. Ваша компания должна иметь одну из следующих лицензий:
Cовместное использование GitHub Actions, Docker и GitHub NPMvPackage
В современном мире разработки программного обеспечения GitHub остается самой популярной платформой для хранения Git-репозиторий и управления ими. Помимо своей фундаментальной роли в управлении версиями, GitHub предлагает дополнительные функции, включая возможность размещения private NPM registry. Эта функция упрощает хранение и совместное использование JavaScript и TypeScript библиотек между проектами и командами, улучшая совместную работу и возможность повторного использования кода в вашей компании.
GitHub Actions позволяет автоматизировать задачи ваших проектов, такие как linter, sonar , запуск тестов, билд образов Docker, развертывание в различных средах и многое другое.
Говоря о Docker, общепринятой практикой является создание приложения, библиотеки или любого кода в определенном образе Docker (то есть сборка внутри Docker контейнера). В этом контейнере можно задать определенную версию Node, а также любые внешние ресурсы и библиотеки, необходимые в процессе сборки. Этот подход обеспечивает максимальное удобство, поскольку устраняет необходимость полагаться на конкретный ПК или виртуальную машину со всеми необходимыми настройками. Вместо этого вы можете один раз подготовить среду на уровне Docker и последовательно использовать ее на разных машинах и в разных средах, обеспечивая согласованность и воспроизводимость на протяжении всего процесса разработки.
Однако возникает проблема, когда вы пытаетесь создать свое приложение в Docker, и для этого требуется библиотека npm, хранящаяся в вашем частном реестре GitHub NPM. Более того, этот процесс должен быть осуществим в GitHub Actions. В этой статье я покажу вам процесс настройки, чтобы добиться этого без проблем!
Искусство README
Привет, Хабр!
На связи Андрей из сообщества ITMO.OpenSource. Мы считаем, что важно делать открытую науку, поэтому пишем об открытом коде, проводим митапы «Scientific Open Source» и разрабатываем научные решения с открытым кодом.
Мы убеждены, что открытая наука – это не просто код на github, но и совокупность факторов, которые позволяют этим кодом эффективно воспользоваться: запустить, модифицировать, внедрить в другие проекты. Поэтому я решил перевести популярную статью JS-разработчицы Киры Окли «Art of README». Несмотря на разницу в экосистемах (я пишу преимущественно на Python), мне кажется, многие идеи этой статьи актуальны для любого проекта на любом языке.
Один репозиторий, чтобы править всеми
Собираем кроссплатформенное (server-client, static-client, gh-pages, Android, iOS, macOS, Linux, Windows, Chrome extension, Docker, Kubernetes, ...) React приложение. В этой статье я почти не затрону Deep backend, только чуть-чуть в конце. Но рассмотрю Open Source шаблон/заготовку для сборки кроссплатформенных React приложений который мы используем в Deep.Foundation.
Выкиньте свой husky
А вы знаете, что миллионы человек тащат лишнюю npm-зависимость зря? Сегодня я покажу вам, как настроить самые что ни на есть "lean" хуки для гита.
RSLike@3. Well-known Symbol, улучшенное использование Typescript, и весим больше
Еще совсем недавно я выпустил библиотеку которая должна была искоренить ошибки связанные с null
и undefined
. Честно признаюсь, что решил подсмотреть у Rust Option и Result апи, поскольку увидел в этом потенциал и удобство использования!
Если кратко пройтись по истории создания сего чуда, то при изучения Rust увидел потенциал данных оберток. И после ресерча на наличие подобных решений такого вдохновения решил, что напишу такое чудо сам для javascript и буду использовать ...
Rolldown — новый сборщик на основе Rollup
Rollup - это лучший и наиболее полный сборщик на сегодняшний день. Он опередил свое время, став первопроходцем в таких ключевых концепциях, как tree shaking, и до сих пор ему нет равных в этом отношении. Когда Эван Ю представил Vite - Rollup был краеугольным камнем процесса сборки. Плагины Vite - это (по большей части) плагины Rollup.