Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

Размышления об идеальной архитектуре для JavaScript

JavaScript *Анализ и проектирование систем *Node.JS *ООП *TypeScript *
Из песочницы

В 2020 году, в конце марта, меня пригласили писать бэк на Node.JS для сервиса видеоконференций. Тогда, во времена начала очередного витка мирового спектакля, резко возрос спрос на инструменты, позволяющие вести работу дистанционно. На прототип сервиса, до того простоявший несколько лет практически без дела, из ниоткуда свалился ежедневный трафик в 2000 человек, что породило необходимость начинать в ускоренном темпе развивать продукт и делать деньги.

Спойлер: миллионерами мы так и не стали.

По мере роста объема и связности кода, становилось все труднее держать логику целиком в голове и, соответственно, гарантировать, что после очередных внесенных изменений ни один из вариантов использования не отвалится. И вот, в один прекрасный момент, было решено начать покрывать код тестами. Так началась история поиска идеальной архитектуры.

Спойлер: тестами код мы тоже так и не покрыли.

Давид Хейнемейер Ханссон, создатель фреймворка Ruby on Rails, в своей статье Test-induced design damage утверждает, что те архитектурные изменения, которые необходимо внести в проект, чтобы сделать возможным написание unit тестов для контроллеров, настолько сильно бьют по остальным характеристикам кода, что лучше отказаться от этой идеи в пользу интеграционных тестов.

Реально ли придумать такую архитектуру, которая не заставляла бы чем-то жертвовать?

Читать далее
Всего голосов 8: ↑7 и ↓1 +6
Просмотры 4.7K
Комментарии 12

Linux Foundation запустил «перезагрузку» JavaScript-сообщества

Open source *JavaScript *Node.JS *


Linux Foundation объявила о масштабном проекте по поддержке JS-сообщества. Новая организация JS Foundation (бывший jQuery Foundation) станет площадкой для сотрудничества и развития открытых проектов, связанных с использованием языка JavaScript. Целью проекта также является продвижение высококачественных стандартов разработки как серверных, так и клиентских JS-проектов.

Руководство нового организации также будет опираться на стандарты W3C, WHATWG, и ECMA TC39, которые приняты разработчиками и вендорами во всем мире.

Более того, JS Foundation запускает программу наставничества (Mentorship Program), которая как раз поможет достичь поставленных целей: она позволит укрепить сообщество и активизировать сотрудничество между JS-разработчиками.
Читать дальше →
Всего голосов 30: ↑28 и ↓2 +26
Просмотры 15K
Комментарии 20

Обнаружен уникальный троянец на Node.js

Антивирусная защита *JavaScript *Node.JS *
В лаборатории «Доктор Веб» исследован троянец-загрузчик, написанный на JavaScript и использующий для запуска Node.js. Вредоносное ПО распространяется через сайты с читами для популярных видеоигр и получило название Trojan.MonsterInstall.
Читать дальше →
Всего голосов 32: ↑23 и ↓9 +14
Просмотры 14K
Комментарии 13

AST, автоматизации, оптимизации или как прошла PiterJS conf #1

Разработка веб-сайтов *JavaScript *Программирование *Конференции
image

Прошло 2 месяца после первой (но конечно же не последней) конференции PiterJS conf. Для активистов сообщества это был своего рода праздник, к которому долго готовишься и столько же отходишь. В этой статье хочу подвести итоги, анонсировать публикацию докладов, понастальгировать и чуть-чуть похвастаться.

Всего голосов 7: ↑7 и ↓0 +7
Просмотры 1.5K
Комментарии 1

Fwdays'20: Node.js Middleware – никогда больше

Разработка веб-сайтов *JavaScript *Node.JS *Конференции
В конце сентября в онлайне прошла конференция JavaScript Fwdays'20 Autumn, на которой я сделал доклад про проблемы мидлваров. После доклада меня почти каждый день просят ссылку на видео. И вот, наконец, его выложили в открытый доступ. Доклад чуть больше часа.

Читать дальше →
Всего голосов 11: ↑7 и ↓4 +3
Просмотры 3.2K
Комментарии 0

В популярной NPM-библиотеке netmask обнаружена критическая уязвимость

Информационная безопасность *Node.JS *GitHub

В популярном npm-пакете node-netmask нашли уязвимость, которая позволяет обойти ограничение доступа к IP-адресам и провести атаку SSRF, RFI или LFI на приложение на базе Node.js. Уже выпущен патч.

Читать далее
Всего голосов 19: ↑19 и ↓0 +19
Просмотры 1.8K
Комментарии 1

Что выучить, чтобы работать фулстеком. Приглашаем на профессию «Фулстек-разработчик»

Блог компании HTML Academy Разработка веб-сайтов *JavaScript *Учебный процесс в IT Карьера в IT-индустрии

Профессия в HTML Academy — 6 курсов, на которых научим вас верстать по-современному, писать фронтенд на JavaScript и делать бэкенд на Node.js. После обучения — практика в команде с живыми людьми. Ближайшая профессия «Фулстек-разработчик» начинается 24 августа, поэтому есть немного времени объяснить подробнее.

На профессии вы научитесь делать веб-приложения целиком, без сомнений по поводу того, как подключить базу или прикрутить слайдер. Всё сможете сами. Будете строить архитектуру клиентских и серверных приложений, поймёте, как работают и пишутся SPA, как применять ООП и паттерны проектирования, освоите стек React (Redux, Redux Thunk, Axios), познакомитесь с TypeScript, автоматизированным тестированием и базами данных MongoDB и PostgreSQL. Уф.

Это не просто так столько всего — это всё нужно, чтобы работать фулстеком.

Узнать подробнее
Всего голосов 15: ↑9 и ↓6 +3
Просмотры 2.5K
Комментарии 2

node.js и SQLite 3 — теперь друзья

Node.JS *SQLite *
node.js — один из лучших каркасов для создания серверов на основе событийных машин, основанный на движке JavaScript V8, теперь получил по-настоящему асинхронную, неблокирующую привязку к базам данным SQLite 3.

Домашняя страница проекта.

Большое спасибо Orlando Vazquez и Ryan Dahl за выполненную работу.
Всего голосов 30: ↑28 и ↓2 +26
Просмотры 14K
Комментарии 28

Heroku — Экспериментальная поддержка Node.js

Node.JS *
Перевод
Сегодня мы предлагаем экспериментальную поддержку node.js ограниченному множеству пользователей. Мы знаем, что существует большой спрос, и мы будем работать с таким количеством пользователей, которое мы сможем поддержать. Подробности ниже.
Читать дальше →
Всего голосов 34: ↑28 и ↓6 +22
Просмотры 2.5K
Комментарии 7

Выполнение SQL-подобных запросов над данными — как в браузере, так и на сервере

JavaScript *
Marak Squires выпустил в свет JSLINQ — реализацию LINQ для JavaScript, работающую как на стороне браузера, так и на стороне сервера (к примеру, node.js). Поддерживаются такие конструкции, как JOIN, UNION, RANGE, DISTINCT, COUNT etc.

Смотрите:
Читать дальше →
Всего голосов 30: ↑27 и ↓3 +24
Просмотры 1.7K
Комментарии 21

Express — Sinatra для Node

Node.JS *
Перевод
require.paths.unshift('path/to/express/lib');
require('express');

get('/', function(){
 this.redirect('/hello/world')
});

get('/hello/world', function(){
 return 'Hello World'
});

get('/bye/world', function(){
 this.render('title.html.haml', {
  layout: false,
  locals: {
   title: 'Bye World'
  }
 });
});

run();

В стремлении сделать серверный JavaScript похожим на Rails или Sinatra мы получили Express. Чистый и простой. Простой и чистый.
Всего голосов 41: ↑32 и ↓9 +23
Просмотры 2.7K
Комментарии 70

Колибри: Обзор вашего интернет-трафика в реальном времени

Разработка веб-сайтов *
Перевод
logo
Михаил Натт и Бенни Вонг создали интересный продукт для интернет-аналитики в реальном времени, названный «Колибри» (Hummingbird). Он создан с использованием таких горячих технологий, как Node, Canvas, Web Sockets, MongoDB.
Читать дальше →
Всего голосов 45: ↑37 и ↓8 +29
Просмотры 1.4K
Комментарии 11

Bespin переходит на node.js

Node.JS *
Как стало известно, после переработки клиентской стороны своего редактора разработчики проекта Bespin, судя по новому плану развития, перепишут серверную часть с Python/WSGI на Node.js.

Радует, что количество серьёзных проектов, переходящих на Node, неуклонно растёт.

Bespin — редактор исходного кода, чей клиент работает внутри web-обозревателя (подробнее о Bespin на Хабре).
Всего голосов 31: ↑29 и ↓2 +27
Просмотры 947
Комментарии 12

Node.NET: Выполнение Node.JS на Windows через .NET

Разработка веб-сайтов *
Перевод
Node планирует со временем поддерживать все операционные системы, совместимые с POSIX (включая Windows c MinGW), но в настоящее время он тестируется только на Linux, MacOS X и Solaris.

На встрече пользователей Node.JS в Пало-Альто кто-то спрашивал о работе Node под Windows, но ответ оказался не оптимистичным, — Вы можете заставить их работать вместе, и это обязательно произойдёт. Но сегодня? Непросто. Хотя это и не кажется громадной проблемой.

Однако, если Вам всё же интересно запускать приложения Node под Windows, и эта идея ваc вдохновляет:
C:\> node.exe server.js

… тогда Вы можете быть благодарны за то, что Дэн Ньюкоум создал Node.net, который дает нам:
  • Ту же идеологию работы, что и у Node.JS (однопоточный событийный фасад, неблокируемый ввод/вывод на заднем плане);
  • Совместимость с Node.JS по предоставляемому API;
  • Написан полностью на JavaScript (JScript.NET);
  • Работает на движке .NET.
Всего голосов 36: ↑21 и ↓15 +6
Просмотры 2K
Комментарии 34

2000 часов в одиночестве, или как был сделан RSS reader / Я робокоп

Я пиарюсь
I. Am. Robocop.Всем привет,

Собираюсь поделиться с вами технической стороной того, как я за 16 недель сделал новый вебовый rss ридер, и чуть не сошел с ума.
Отходя от долгой предыстории, будем считать, что все началось в феврале этого года, когда мы с Дэвидом (dmiloshev, UI-дизайнер) решили сделать прототип нашего детища вдвоем.
«В одиночестве» — потому, что не было никаких скрамов, совещаний, «коллективного разума», а всю техническую часть, довелось делать самому.

Если бы меня попросили описать всю статью в одном предложении, то получилось бы:
No-SQL, mongodb, node.js, фак мой мозг, Evented I/O, очереди, выводы, git, nginx, memcached, Google Reader, Atom, TTL, PHP, ZF, jQuery, выводы.
Читать дальше →
Всего голосов 258: ↑231 и ↓27 +204
Просмотры 6.2K
Комментарии 173

Установка node.js на Linux, FreeBSD, Windows

Разработка веб-сайтов *
node.js — серверный асинхронный Javascript, превосходный инструмент для создания серверной части COMET приложений, в частности, для игрушек, чатов, и других высоконагруженных проектов, использующий синтаксис Javascript, прекомпилируемый в машинный код, работающий на скорости, сравнимой с кодом на C++, очень быстрый, способный держать 10 — 12 тысяч подключений, и не создающий отдельного процесса/не интерпретирующий себя заново/не запускающий процесс при каждом новом клиенте. Использует в качестве основы V8 — движок Javascript от Google. Удобные возможности, можно установить значение переменной при одном посетителе, и считать это значение при ответе другому.
Обращаю внимание на то, что если вы не программировали, например, на Python или Ruby, только на PHP, не обходите его стороной, это не ещё один незнакомый язык. И в этом его преимущество — Javascript — знакомый язык, особенно для тех, кто программировал на PHP+Javascript, но PHP не позволял очень многих вещей, особенно в связке с Apache, например, аплоад файлов с полосой загрузки (без Flash), возможность низкоуровневого управления сетью (возможность написать, например, клиента или сервер Mysql или прокси-сервер вроде nginx).
О гибкости языка говорит тот факт, что расширения для работы с MySQL, например, написаны на самом Javascript.
Я планировал написать статью с описанием этой замечательной системы, с примерами, но на момент чтения читателю хорошо бы иметь под рукой установленную версию node.js. Поэтому этот пост о том, как установить node.js, в том числе и на Windows, что актуально в связи с недавним появлением порта под cygwin. (Да, есть информация о том, где скачать node.exe)
Читать дальше →
Всего голосов 66: ↑61 и ↓5 +56
Просмотры 81K
Комментарии 48

Node.JS: Пример HTTP-сервера в режиме prefork с использованием Web Workers

Node.JS *
Перевод
Как обещал ранее, я публикую исходный код, демонстрирующий, как построить HTTP-сервер в режиме prefork, используя Web Workers и новый API net.Server.listenFD(). Я надеюсь, что этот код будет хорошим примером того, как легко нагрузить несколько ядер сервера, комбинируя пересылку файловых дескрипторов и Web Workers.

Читать дальше →
Всего голосов 37: ↑32 и ↓5 +27
Просмотры 8K
Комментарии 28

Храните ваши клятвы; Отношения с Node

Node.JS *
Перевод
Клятвы могут быть прекрасны. Алексис Селлир, сыскавший славу за разработку «LESS» (и «less.js»), начинает становиться звездой Open Source, выпустив в свет Vows, — каркас для разработки на Node.JS, управляемой асинхронным поведением.

image
Читать дальше →
Всего голосов 36: ↑20 и ↓16 +4
Просмотры 1.1K
Комментарии 23

Асинхронность: почему это никак не сделают правильно?

Разработка веб-сайтов *
Асинхронные программы чертовски неудобно писать. Настолько неудобно, что даже в node.js, заявленном как «у нас все правильное-асинхронное», понадобавляли таки синхронных аналогов асинхронных функций. Что уж говорить про питоновский синтаксис, не дающий объявить лямбду со сколь-либо сложным кодом внутри…

Забавно, что красивое решение проблемы не требует ничего экстраординарного, но почему-то до сих пор не реализовано.
Читать дальше →
Всего голосов 86: ↑81 и ↓5 +76
Просмотры 6.2K
Комментарии 78