Обновить
128K+

Node.JS *

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

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

К вопросу о принципах работы асинхронных решений

Время на прочтение6 мин
Охват и читатели18K
Предлагаем вашему вниманию отличное новогоднее чтение для программистов :) Статью Александра Чистякова ( alexclear ), которую тот написал, вдохновившись тезисами доклада Mons Anderson ( codesign ) на HighLoad++ 2017.

Александр Чистяков

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

Для того, чтобы классифицировать существующие решения, придумаем сначала оси координат. С точки зрения инженера-разработчика "синхронная" и "асинхронная" парадигмы основаны на абстракциях, различающихся как сложностью применения, так и «эффективностью» (что такое «эффективность», нам еще предстоит определить).

Осторожно, под катом жёсткий хардкор!
Читать дальше →

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

Время на прочтение4 мин
Охват и читатели21K
Доброго времени суток, уважаемые Хабровчане! С недавнего времени, мы, в нашей команде начали использовать фреймворк Vue.js включая серверный рендеринг, после чего столкнулись с рядом проблем, в частности для меня как программиста.

Любое изменение в верстке сайта, происходило через меня. Мне скидывали часть html кода, будь то изменение заголовка, или смена мест блоков, далее было необходимо вставить эту часть в требуемый компонент, подставить необходимые переменные и методы, запустить webpack, залить код на сервер.

Можно было бы использовать на сервере webpack в режиме наблюдения, или дать перечень необходимых команд своим коллегам, что для них оказывается несколько сложным.
Поэтому приняли решение сделать динамическую загрузку шаблона с помощью получения данных с сервера.
Читать дальше →

Эффективное использование process.env

Время на прочтение6 мин
Охват и читатели97K
Если вы только начинаете осваивать Node.js, то, вам, наверняка, встречались примерно такие строчки кода: app.listen(process.env.PORT). Зачем вбивать в редактор кода шестнадцать символов, когда того же эффекта можно добиться, просто указав номер порта, например — 3000? Предлагаем это выяснить.


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

Пишем Твиттер-бота, который предсказывает курс биткойна

Время на прочтение7 мин
Охват и читатели10K
Программист Огњен Гатало, автор статьи, перевод который мы публикуем сегодня, уже некоторое время интересуется криптовалютами. Особенно его занимает прогнозирование курса на ближайшие несколько дней. Он говорит, что испробовал некоторые алгоритмы, но в итоге у него сложилось ощущение, что ни один из подходов не позволяет с уверенностью давать краткосрочные прогнозы. Тогда он, сосредоточившись на лидере рынка — биткойне, решил поработать над собственным методом предсказания курсов. Предлагаемый им алгоритм, равно как и его реализация в виде твиттер-бота, конечно, с некоторыми изменениями, подходят и для работы с другими цифровыми валютами.

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

Parcel — пишем плагин

Время на прочтение6 мин
Охват и читатели6.2K


В прошлой статье я рассказал про новый бандлер Parcel, который не требует конфигурирования и готов к бою сразу после установки. Но что делать, если вдруг стандартного набора ассетов не хватает? Ответ прост — написать свой плагин.

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

Node.js и JavaScript для серверной разработки

Время на прочтение10 мин
Охват и читатели60K
В 2009-м платформа Node.js сделала свои скромные первые шаги в бескрайнем мире разработки бэкендов. Это была первая состоявшаяся попытка использования JavaScript в серверных приложениях. Сегодня будет крайне затруднительно найти веб-разработчика, который не слышал о Node. Но нельзя сказать, что существование Node было безоблачным. Эта платформа пережила раскол сообщества, была предметом форумных войн и многих довела до отчаяния.
image

Возможно, вы думаете, что подобные заявления звучат слишком уж напыщенно. Однако, попробуйте поискать в Google, и вы столкнётесь с неистощимым источником бесконечных споров. Среди рассуждений не в пользу Node, которые могут вам встретиться, есть, например, такие, которые, вопрошая о том, что случилось с аксиомой об использовании лучшего из имеющихся инструментов для решения некоей задачи, указывают, что JS и рядом не стоял с правильным серверным инструментарием. Другие критические замечания о JS, вроде «Callback hell is real», призывающие поверить в реальность ада коллбэков, звучат как строчки из стихотворения. Некоторые из критиков Node выражаются более прямо и однозначно: «Node — это раковая опухоль».
Читать дальше →

Интеллектуальные чат-боты на ChatScript: практика разработки и интеграция с JavaScript

Время на прочтение12 мин
Охват и читатели8.9K
Сегодня публикуем вторую часть перевода материала, посвящённого разработке чат-ботов с использованием ChatScript и JavaScript. В прошлый раз мы занимались, в основном, теорией. А именно, говорили о сценариях использования чат-ботов и о внутреннем устройстве CS-приложений. Сегодня будет больше практики. А именно, мы обсудим рабочее окружение ChatScript, поговорим об интеграции CS и JS, обсудим подходы к решению проблем, характерных для чат-ботов.

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

Оставайся ленивым с angular/cli

Время на прочтение3 мин
Охват и читатели15K
Для запуска приложения Angular 5 на сервере node.js необходимы:


* следуя рекомендациям сайта будет установлена версия 1.2 Ленивцам вроде меня нужна версия 1.6*.

Подробности под спойлером
Если ng (angular/cli) уже установлен. Проверьте версию

ng -v

Если версия <1.6 — обновимся

npm uninstall -g @angular/cli
npm cache
npm cache verify
npm i -g @angular/cli@latest

Проверим результат

ng -v

Если версия > 1.6 — цель достигнута.

** опционально, но с ним быстрее

Шаг 1. Развертываем новое приложение


Вообще говоря, заголовок слишком громкий для необходимых действий.
Читать дальше →

Поиск проблем производительности NodeJs приложения (с примерами)

Время на прочтение4 мин
Охват и читатели17K

Из-за однопоточной архитектуры Node.js важно быть настороже высокой производительности вашего приложения и избегать узких мест в коде, которые могут привести к просадкам в производительности и отнимать ценные ресурсы CPU у серверного приложения.
В этой статье речь пойдет о том, как производить мониторинг загрузки CPU nodejs-приложения, обнаружить ресурсоемкие участки кода, решить возможные проблемы со 100% загрузкой ядра CPU.

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

Интеллектуальные чат-боты на ChatScript: основы

Время на прочтение11 мин
Охват и читатели11K
Чат-боты, поддерживающие общение с человеком на естественном языке, весьма популярны и востребованы. Сегодня мы хотим поделиться с вами первой частью перевода материала о разработке чат-ботов с помощью ChatScript (CS), написанного сотрудником WebbyLab на основе опыта, приобретённого им в ходе работы над одним из недавних проектов компании. Здесь, в частности, речь пойдёт об основах работы с CS, рассмотренных с точки зрения программиста-практика. ChatScript хорош тем, что на нём можно сравнительно просто разрабатывать масштабные системы с возможностями искусственного интеллекта, и тем, что его несложно интегрировать в проекты, написанные на JavaScript.

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

Parcel — очень быстрый бандлер, не требующий настройки

Время на прочтение3 мин
Охват и читатели42K


Для чего


Parcel — маленький и быстрый бандлер, позиционируется как решение для маленьких проектов. С момента первого релиза (7 дней назад) уже собрал 8725 звездочек на гитхабе. Согласно официальной документации имеет следующие плюсы:


Быстрая сборка


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


Собирает все ваши ассеты


Из коробки имеется поддержка ES6, TypeScript, CoffeeScript, HTML, SCSS, Stylus, raw-файлов. Плагины не требуются.


Автоматические преобразования


Весь код автоматически проходит через Babel, PostCSS, PostHTML — подхватываются при необходимости из node_modules.


Разделение кода без лишней конфигурации


Используя динамический import(), Parcel разделяет бандл для возможности быстрой начальной загрузки точки входа в приложение


Горячая перезагрузка


Типичный хот-релоад без конфигурации — сохраняете изменения и они автоматически применяются в браузере.


Дружелюбный вывод ошибок


При ошибке подсвечивается кусок кода, в котором она произошла.

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

Дуглас Крокфорд, Азат Мардан, Виталий Фридман и все-все-все: анонс бесплатной YouTube-трансляция HolyJS 2017 Moscow

Время на прочтение8 мин
Охват и читатели4.5K
Коротко о событии
Конференция: HolyJS 2017 Moscow
Дата: 10-11 декабря 2017 года
Бесплатная трансляция (только первый зал): страница трансляции на официальном сайте.


Любой JavaScript-разработчик однажды задается вопросом: на какую конференцию по JavaScript сходить? Интересные доклады послушать, людей посмотреть, себя показать. В 2016 году мы пошли по тому же пути и обнаружили, что в России ничего подходящего на эту тему нет. Всевозможные митапы по фронту — пожалуйста. Но ведь JS давно уже не только фронт. Короче, мы решили исправить эту несправедливость и создали главную и единственную в России JavaScript-конференцию, HolyJS. На Холи бывает не только фронт, но и бэкенд, десктоп, и даже работа с железом. Теперь нам всем есть куда ходить, но это не конец истории.


В JavaScript-мире есть важнейшая особенность, которая отличает его от миров типа Java и .NET: технологии и фреймворки развиваются стремительно. Не попавшие на конференцию люди оказываются в невыгодном положении — мало кому хочется смотреть записи, устаревшие на 4 месяца. Обычно есть несколько фундаментальных докладов, которыми можно гордиться и пересматривать еще пару лет, но большая часть материала интересна и полезна в моменте: посмотрел, послушал, пошел использовать на работе. Всё это останется за пэйволлом? А как же комьюнити и чувство локтя? Нет ли в этом чего-то неправильного?


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

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

Релиз второй версии плагина Nodejs для Sublime Text

Время на прочтение4 мин
Охват и читатели6.9K
Добрый день, друзья! В ноябре 2016 года я начал играться с плагином Nodejs для Sublime Text. Плагин был маленьким и имел под катом несколько давних и хорошо известных багов.

В те дни я игрался с Nodejs и моим любимым редактором для кода был Sublime Text. По давно проторенной дорожке, я пошел на packagecontrol.io и поискал плагины для Nodejs. Нашелся вот этот. Поставив и поработав, я был очень разочарован, когда обнаружил, что некоторые заявленные фичи плагина не работают, или работают не так как заявлено…

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

Тогда я подумал… Это две частички технологии, которые мне нравятся, и я всегда хотел контрибьютить в Open Source.

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

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

Интегрируем смартконтракт в веб-приложение на Nodejs

Время на прочтение7 мин
Охват и читатели18K

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


UI приложения

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

Настройка системы WEB — тестирования на основе headless chromium-browser, chromedriver, nightwatch и node.js на Ubuntu

Время на прочтение5 мин
Охват и читатели14K
image

Предисловие


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

WEB — тестирование — это объемная и неоднозначная сфера, которая может заключаться в решении задач не только в плане тестирования WEB — приложений, но и, к примеру, в плане построения парсеров, роботов IoT и ботов работы с социальными сетями и все это используя только JavaScript!

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

«Блендер на 28 докладов, каждый из которых равен десяти статьям» — интервью с Программным комитетом HolyJS 2017 Moscow

Время на прочтение18 мин
Охват и читатели3.6K

Для обычного пользователя программы, которые мы пишем — это магия. Фронт, бэк — неважно. Человек нажимает на кнопку в браузере, и вдруг случается чудо. Но мы-то знаем, что это не чудо, а результат упорной работы.


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


Это происходит само собой, просто по статистике? Если набрать достаточное количество докладов, всё получится автомагически? Как бы не так. Всё подстроено. Как программу на JS проектируют архитекторы, так и за каждой конференцией стоит команда отличных инженеров, которые проектируют её специальным образом. Они проектируют не только структуру, но и вместе с докладчиками «отлаживают» каждый доклад, строчка за строчкой, раз за разом. Проводят кросс-ревью, оценку, починку багов. Пишутся специальные инструменты и выкладываются на GitHub. И так до тех пор, пока не скомпилируется хорошо работающая, безбажная конференция.


Наверное, каждый иногда хотел пообщаться с разработчиками тех инструментов, которыми мы все пользуемся. К примеру, кто хотел бы сказать пару ласковых создателям React или Node.js? А кто хотел бы узнать от них парочку тайн о внутренней кухне проекта?


Это интервью — с разработчиками конференции HolyJS 2017 Moscow, с её Программным комитетом. Мы будем обсуждать:


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

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

Решение проблем неправильного использования памяти в Node.js

Время на прочтение8 мин
Охват и читатели22K
Недавно в компании Reside Real Estate столкнулись с проблемами: в самые ответственные моменты начал падать Node.js-сервер. Подозрение пало на память. Сотрудники компании прибегли к временным мерам, что позволило избавить от неудобств пользователей, и занялись поисками источника проблем. В результате им удалось найти и устранить неполадки.


В этом материале они рассказывают о том, как искать и устранять ошибки, связанные с использованием памяти. А именно, речь пойдёт об утечках памяти, и о ситуациях, когда программы используют гораздо больше памяти, чем им на самом деле нужно. Этот рассказ поможет тем, кто столкнётся с чем-то похожим, сразу понять причину странного поведения сервера и быстро вернуть его в строй.
Читать дальше →

Microsoft Bot Framework + IBM Watson =… би-лингвистический бот

Время на прочтение8 мин
Охват и читатели5.1K
Продолжая начатую тему хочется поделиться успешным опытом создания билингвистического Node.JS бота на Microsoft Bot Framework под Linux. От заказчика поступила задача разработать простой социальный бот в формате вопрос-ответ для большой торговой сети, однако сложность заключалась в другом — бот должен быть двуязычным: на английском и арабском. Хотя, как будет показано ниже, выбор инструментов для решения задачи сделал разработку лёгкой, приятной и интересной.
Читать дальше →

Jest и Puppeteer: автоматизация тестирования веб-интерфейсов

Время на прочтение9 мин
Охват и читатели46K
Эту статью написал программист из Италии Валентино Гаглиарди. Он говорит, что сразу после выхода Puppeteer его заинтересовала автоматизация тестирования веб-интерфейсов с использованием данной библиотеки и Jest. После этого он приступил к экспериментам.



Здесь речь пойдёт об основах работы с Puppeteer и Jest на примере тестирования веб-формы. Также тут будут рассмотрены особенности использования Chromium с пользовательским интерфейсом и без него, и некоторые полезные мелочи, касающиеся различных аспектов тестирования веб-страниц и организации рабочей среды. Валентино полагает, что, хотя Puppeteer — инструмент сравнительно новый и его API вполне может подвергаться изменениям, у него есть шанс занять достойное место в арсенале веб-разработчиков.

Используем async/await в nodejs уже сегодня

Время на прочтение5 мин
Охват и читатели36K
Всем ведь давно надоели колбэки в асинхронных вызовах и спагетти код? К счастью, в es6 появился новый сахар async/await для использования любых асинхронных функций без головной боли.

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