Как стать автором
Поиск
Написать публикацию
Обновить
12.37

Node.JS *

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

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

graphql — подводные камни

Время на прочтение3 мин
Количество просмотров8.7K
Наверное, не существует идеальных технологий. Не является исключением и graphql. Если у Вас еще не было опыта работы с этой технологией, то нужно хорошо представлять, какие проблемы могут у Вас возникнуть и заблаговременно к ним подготовиться.
Читать дальше →

12 подсказок для масштабирования Node.js

Время на прочтение8 мин
Количество просмотров7.4K
Node.js уже сейчас успешно работает в мировом масштабе, об этом свидетельствую развернутые приложения на нем таких компаний как Netflix, Reddit, Walmart и Ebay. Однако, он имеет свой набор проблем при масштабировании; как с точки зрения масштабирования людей, работающих над единой базой кода, так с точки зрения вертикального и горизонтального масштабирования в облаке. К дополнении моему личному опыту масштабирования Node.js при работе в таких компаниях, как Reddit и Netflix, я поговорил с некоторыми экспертами, работающими в Microsoft Azure, и придумал несколько советов для вас по масштабированию Node.js в вашей компании.
Читать дальше →

JavaScript — заполняем нишу между микросервисами и объектами — «нано-сервисы»

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

Кто из нас не хочет сделать большое приложение с правильной архитектурой? Все хотят.
Чтобы была гибкость, переиспользуемость и четкость логики. Чтобы были домены, сервисы, их взаимодействие.


И даже иногда хочется чтобы было почти как в Erlang.


Идея создания фреймворка для микросервисов для NodeJs удачно воплощалась не единожды — так у нас как минимум есть Seneca и Studio.js, которые безусловно хороши, но они определяют большие логические единицы. С другой стороны у нас есть обычные объекты, разделяемые в системе посредством Dependency Injection или подобной техники, но они не дают должной четкости границ.


Иногда нужны "нано-сервисы".

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

Доработки шаблонизатора DoT.js

Время на прочтение12 мин
Количество просмотров5.5K
Время зоопарка шаблонизаторов миновало, теперь вокруг бегают динозаврики MVC, а в них используются встроенные шаблонизаторы и билдеры компонентов. Но для замены старых менее удобных шаблонизаторов в Knockout и Backbone иногда нужны они, в основном, остановившиеся в развитии на уровне около 2014 года.

Так случилось и с DoT.js. Поначалу заброшенный авторами примерно на год в 2013-м, он получил их внимание ненадолго, поднявшись с версии 1.0.1 до 1.1.1, и снова был заброшен (или стабилизирован, смотря как рассуждать). В связи с этим ещё в 2013 году понадобилось (делать клон DoT.js), а теперь — и апгрейдить его.

Он — такой же быстрый, как и встроенный _.template() в Underscore/Lodash, но с улучшенным синтаксисом, при котором необходимость писать JS в шаблонах встречается нечасто, а в Underscor-овском — нужна всегда. Этим скобкам со скриптами даже придумали специальный термин: javascript encapulated sections (JES), и от них, в основном, избавились.

Что получаем дополнительно?


1. Структура шаблонизатора была переработана (в 2013-м, ссылка оттуда), чтобы лучше читалась и уменьшилось число декодирований функций;
2. Тесты показали, что быстродействие в среднем не изменилось (колебания -3% — +10% в зависимости от параметров);
3. Добавлена команда работы по структуре, аналогично работе по массиву;
Читать дальше →

Пишем простой парсер web страниц

Время на прочтение3 мин
Количество просмотров31K
Здравствуйте. Меня зовут Сережа. Я хочу рассказать о том, как я писал простейшего вэб паука.
image
Поскольку это некоммерческий проект, созданный исключительно на моём энтузиазме, при работе я руководствовался следующим:

1. Минимум необходимых функций (сканирование web, сохранение необходимого в БД, простенький UI для доступа)
2. 0 финансовых затрат:
— В качестве сервера использую нетбук, который покупал в свое время для учебы acer aspare ONE KAV60, весьма бюджетный даже на момент покупки (2008 год), сейчас его процессора atom в 1600 МГц не хватает даже для нормальной работы в MS OFFICE
— Интернет — проводной домашний. Благо IP уже пол года не менялся, не пришлось заказывать статический
3. Минимум временых затрат. Проект делался после работы и дачи.
Читать дальше →

Имитация рации с помощью Freeswitch и немного про voip-конференции

Время на прочтение6 мин
Количество просмотров7.5K
Вот даже такое бывает, что надо заставить такого монстра как Freeswitch работать по принципу обычной рации.
Один говорит, все слушают.

А поможет нам в этом NodeJs и npm модуль modesl для взаимодействия с Freeswitch.



Подробности

Пишем систему инвайтов (приглашений) для своего Meteor-приложения

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

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

Зачем это может понадобиться? Например — если вы разрабатываете приложение, в котором несколько людей должны работать в рамках одной группы над каким-либо проектом. Это может быть к примеру учебное расписание, которое может редактировать несколько людей или каталог продукции Интернет-магазина компании.

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

Итак, наш пример будет уметь:
1) Отображать интерфейс приглашений включая список существующих приглашений и форму для отправки нового;
2) Сохранять все приглашения в базе данных;
3) Следить за статусами приглашений;
4) Отправлять приглашения на email;
5) Следить за ролями пользователей;
6) Активировать приглашения новых пользователей;
7) Использовать кучу сторонних модулей.

Внимание: Пример будет рассмотрен на основании живого проекта, так что просто скопировать и вставить его к себе, вероятно, не получится…
Читать дальше →

FutoIn AsyncSteps: концепция и реализация асинхронной бизнес-логики

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

FutoIn — с одной стороны, это «клей» из стандартов/спецификаций разных мастей для унификации программных интерфейсов различных существующих проектов по устоявшимся типам, с другой — это концепция для построения и масштабирования компонентов проекта и инфраструктуры, написанных на разных технологиях, без потребности в добавления этого самого «клея».

AsyncSteps — это спецификация и реализация программного интерфейса для построения асинхронных программ в независимости от выбранного языка или технологии.

Цели, поставленные для концепции:
  • реализация (с оговорками) должна быть возможна на всех распространённых языках программирования с поддержкой объектов и анонимных функций. Репрезентативный минимум: С++, C#, Java, JavaScript, Lua (не ООП), PHP, Python;
  • написанная программа должна легко читаться (сравнимо с классическим вариантом);
  • должны поддерживаться исключения языка (Exceptions) с возможностью перехвата и разворачиванием асинхронного стека до самого начала;
  • требуется удобство для написания асинхронных библиотек с единым подходом для вызова, возврата результата и обработки ошибок;
  • предоставить простой инструмент для естественного распараллеливания независимых веток программы;
  • предоставить простой инструмент создания асинхронных циклов с классическим управлением (break, continue) и меткой для выхода из вложенных циклов;
  • предоставить место для хранения состояния исполняемой бизнес-логики;
  • возможность отменять абстрактную асинхронную задачу, правильно завершая выполнение (освобождая внешние ресурсы);
  • возможность легко интегрироваться с другими подходами асинхронного программирования;
  • возможность ограничивать время выполнения задачи и отдельно каждой подзадачи;
  • возможность создавать модель задачи для копирования (улучшения производительности критичных частей) или использования как объект первого класса для передачи логики в качестве параметра (а-ля callback);
  • сделать отладку асинхронной программы максимально комфортной.

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

Как работают rooms в Socket.io

Время на прочтение2 мин
Количество просмотров40K
В качестве предисловия

Захотел наш клиент сделать на проектe чат с блекджеком и куртизанками. NodeJs не мой профиль и опыта с ним у меня было не так много. (Поэтому статья адресована таким же новичкам в node и socket.io, как и я сам).

Тем не менее, один проект я делал и связан он был — да, да с socket.io. Вот и в этот раз я подумал, что он идеально подойдет. Более того, на сайте даже есть демо и пример чата. Но, как всегда в жизни, все оказывается сложнее, чем в примерах.

Чат из примера отсылал сообщения абсолютно всем. Было понятно что как-то надо добавить пользователей в комнату. И если мы взглянем в документацию socket.io rooms and namespaces — здесь описано как работать с комнатами, но непонятно как они работают. Вот с этимм я предлагаю разобраться.
Читать дальше →

Управляем светодиодом через интернет с использованием RaspberryPi

Время на прочтение5 мин
Количество просмотров22K
В наше время обычная вещь, подключённая к интернету, начинает становиться обыденностью. Даже появилось понятие — «интернет вещей» (Internet of Things, IoT). Но как подступиться к этому своеобразному интернету новичку — не всегда понятно, потому что хотя статей по данной теме много, но каждому хочется, чтобы статья была простой для воспроизведения и чтобы в ней разбиралось что-то очень близкое и приятное для читателя.

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

Для нашего эксперимента потребуется


  • Интернет через ethernet кабель
  • Raspberry Pi
  • Сломанная оптическая мышка, провода, паяльник
  • Доступ к сайту на vps с правами рута

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

Derby.js темы для темплейтов

Время на прочтение3 мин
Количество просмотров3.5K
Derby.js предлагает механизм, который позволяет значительно повысить скорость загрузки страницы путем инкапсуляции CSS в HTML код отдаваемый клиенту. В production mode Derby.js минифицирует HTML, CSS, JS. Как указано в документации используются Stylus и/или LESS.
По умолчанию подключается файл: styles/app/index.styl, где мы можем воспользоваться всеми синтаксическими преимуществами которые предоставляет Stylus.
Что делать, если в нашем проекте предусмотрено использование нескольких тем (стилей) для темплейтов?
Подробности

Причины и достоинства третьего байхуистского способа употребления SQLite в Node.js

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

А постигшие список модулей Node.js могут убедиться в том, что создатели этих модулей духовно ближе не к дзэн-буддистам, а к байхуистам к поклонникам движения «Байхуа юньдун» (百花运动), провозглашённого Мао Цзэдуном в 1957 году по мотивам классического китайского стихотворения «пусть расцветают сто цветов, пусть соперничают сто школ», начинающегося словами «бай хуа» («百花», «сто цветов»). Иными словами, модули для Node.js предоставляют, как правило, несколько способов сделать одно и то же, и из них потребитель выбирает тот способ, который более всех пригоден ему.

Но почему не существует такого одного способа, который был бы пригоден для всех?

Ответ на этот вопрос я предлагаю рассмотреть на примере употребления базы данных SQLite.

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

Своё приложение на Node.js с хранением в Dropbox – это просто

Время на прочтение8 мин
Количество просмотров10K
Несмотря на то, что главным моим хобби так и остаются роботы, я трачу немало усилий, чтобы оставаться в трендах своей основной стези – программирования. Волей судьбы недавно удалось познакомиться с Node.js, я узнал о его web фреймворке express, подружился с новым для себя template engine Jade и в довершение ко всему связал все это с папкой в Dropbox.
image
В этом посте я постараюсь коротко рассказать, как можно организовать web-сервис для хранения файлов, используя лишь бесплатные решения.
Всех заинтересованных – прошу под кат.
Читать дальше →

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

Релиз GlobalsDB 2012.2

Время на прочтение6 мин
Количество просмотров2.9K
15 мая вышла новая версия бесплатной NoSQL СУБД GlobalsDB 2012.2.

Что нового?
Добавлен ожидаемый многими Node.JS API интерфейс для Windows, и сразу же для Windows 64-bit.
Реализованы небольшие дополнения и устранены некоторые ошибки.
Об этом и остальном
очень подробно под катом

Просветление через Код: Суть Django Revolution

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

Django Revolution — это не просто инструмент, это философия. Философия, где рутина уступает место творчеству, а баги растворяются в чистоте кода. Это путь к просветлению в разработке API. Примите его, и ваш код будет сиять, а дух разработчика — парить.

Наш мир, сотканный из битов и фантомных сущностей, породил нового Джинна, способного исполнять самые заветные желания Разработчика. Встречайте: Django Revolution – не просто библиотека, а откровение, мантра, ключ к вратам истинного дзен в мире Django API.

Читать далее

Опыт создания онлайн-настолки: от идеи до реализации

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

Пару лет назад единственной настольной игрой, в которую я играл онлайн с друзьями, была «Монополия». Со временем она начала надоедать, и мне захотелось чего‑то нового. Моим открытием стала Machi Koro — экономическая карточная игра, где победа зависит не столько от случайности, сколько от выбранной стратегии, что выгодно отличает её от «Монополии».

На тот момент я не нашёл достойных онлайн‑аналогов Machi Koro, что и подтолкнуло меня к созданию собственной реализации. В этой статье я подробно расскажу о технической стороне проекта: от составления требований до выбора стека технологий.

Читать далее

Опыт работы с Serverless-архитектурой для Telegram-бота на Vercel и Timeweb Cloud

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

В последнее время активно занимаюсь разработкой Telegram-бота с использованием Serverless-подхода в Timeweb и Vercel сервисах.

Читать далее

16 NPM-пакетов, о которых должен знать каждый Node.js-разработчик

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

В этой статье мы рассмотрим 16 обязательных для любого Node.js‑разработчика NPM‑пакетов. Мы подробно расскажем о них, включая их ключевые особенности, как их установить и как именно вы можете использовать их в своих проектах для улучшения ваших рабочих процессов.

Читать далее

Конвертация даты по временной зоне пользователя в «NestJS», а также ввод и отображение даты в «Angular»

Время на прочтение14 мин
Количество просмотров961

В этой статье я расскажу о добавлении нового поля workUntilDate с типом timestamp(6) в таблицу Webhook базы данных Webhook.

На стороне фронтенда (в Angular-приложении) для этого поля будет реализован удобный календарь с возможностью выбора времени.

Пользователи смогут задавать дату и время в своей временной зоне, тогда как бэкенд (NestJS-приложение) будет сохранять введённые данные в базе данных в формате UTC+0.

Кроме того, интерфейс календаря и другие элементы, отображающие даты, будут адаптированы под язык и временную зону пользователя.

Читать далее

Интеграция и сохранение выбранного языка пользователя в базу данных в фулстек-приложении на «Angular» и «NestJS»

Время на прочтение12 мин
Количество просмотров447

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

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

Читать далее

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