Рубрика «node.js» - 89

Введение

Добрый день.
Однажды я приобрёл Raspberry Pi без каких-то на то целей — как только начались упоминания о нём на хабре. Начала бесцельно запускать фтп-сервера, пробывать Node.js и прочие мелкие серверные дела, пока не приобрёл новый автомобиль. Конечно, заниматься тем, что можно найти на просторах интернета вроде дистанционного открытия гаража я не стал — в силу не знаю системы Linux и серверных языков программирования. Автомобиль стал мне дорог и возникла идея — поставить малинку в автомобиль с прикрученными к ней USB девайсами: GPS, Web-камера, 3G-модем — для чего и был куплен 2-ой Raspberry.
В этой статье я опишу подготовку: установку Node.JS, настройку OpenVPN и 3G.
Читать полностью »

В Express.JS есть встроенный middleware для авторизации. Если очень хочется заблокировать доступ к приложению — достаточно всего лишь добавить одну строчку в сетап express-приложения:

// Работает синхронно, то есть морозит всю nodeJS
app.use(express.basicAuth('username', 'password'));

Так же middleware поддерживает асинхронный вариант — с коллбэком:

app.use(express.basicAuth(function(user, pass, callback) {
  var result = (user === 'testUser' && pass === 'testPass');
  callback(null /* error */, result);
}));

Если нужно ограничить доступ только к определенным url'ам — middleware нужно использовать не глобально, а в рамках роутера, то есть так:

var auth = express.basicAuth(function(user, pass, next) {
  var result = (user === 'testUser' && pass === 'testPass');
  next(null, result);
});

app.get('/home', auth, function(req, res) {
  res.send('Hello World');
});

Если не забираться под капот — на этом можно и закончить. Тех же, кто на диаграмме Венна находится между кругами «Мне интересно, что внутри» и «Я не знаю как работает basic авторизация apache», приглашаю под кат.
Читать полностью »

Как работает Passport.js
PassportJS — это middleware для авторизации под node.js. Passport поддерживает авторизацию с помощью огромного количества сервисов, включая «ВКонтакте» и прочие твиттеры. Список сервисов можно просмотреть здесь. Я хочу немного рассказать о том, как работает этот middleware на примере самой обычной авторизации с помощью логина и пароля.

Для самых нетерпеливых — готовый проект можно посмотреть здесь.
Читать полностью »

imageЗдравствуй, %username%! Разрабатывая проект на Node.js я столкнулся с невозможностью сделать require целой папки.
Допустим, у нас есть такое дерево каталогов:

Project
— handlers
— — admin.js
— — user.js
— — settings.js
— routes
— — admin.js
— — user.js
— — settings.js
— app.js

Как правило, если нам необходимо добавить новый handler, то мы создаем там файл, затем прописываем адрес к нему в require и радуемся, но иногда хочется иметь сразу все файлы в одном объекте (чтобы наш алгоритм сводился только лишь к созданию файла).
Читать полностью »

I-Tier: Расщепление монолита

Недавно мы завершили годовой проект миграции веб-трафика компании Групон в США от монолитного Ruby on Rails приложения к новому стеку Node.js и получили существенные результаты.

С самого начала весь веб-фронтенд американского Групона был единым исходным кодом Ruby. Код фронтенда быстро развивался, что затрудняло его поддержку и усложняло процесс добавления новых фич. В качестве решения проблемы с этом гигантским монолитом мы решили реструктурировать фронтенд посредством его разделения на меньшие, независимые и более простые в управлении части. Основой этого проекта стало разделение монолитного вебсайта на несколько независимых Node.js приложений. Мы также переделали инфраструктуру, чтобы обеспечить совместную работу всех приложений. Результатом стал Interaction Tier (I-Tier).

Вот некоторые из важных моментов этой глобальной архитектурной миграции:

• Страницы на сайте загружаются значительно быстрее

• Наши команды девелоперов могут разрабатывать и добавлять новые фичи быстрее и с меньшей зависимостью от других команд

• Мы можем избежать повторной разработки одних и тех же фич в разных странах, где доступен Групон.

Этот пост является первым из серии постов о том, как мы реструктурировали сайт и какие огромные преимущества мы видим в дальнейшем, которые будут лежать в основе продвижения компании Групон.
Читать полностью »

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

Итак, сразу ссылка на демо для нетерпеливых.
(Сервер уже уложили)

Особенности

  • Сохранение сообщений в БД
  • Авторизация
  • Команды чата
  • Соединение с сервером по WebSocket

Читать полностью »

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

Работа с bitcoin из под Node.js (Делаем Online Bitcoin Wallet)
Встала как-то перед мной задача подключить оплату на сайте с помощью биткоина, я конечно слышал про биткоин, но в руках не держал, статей по этому делу мало, под Node.js тем более, пришлось потратить денек и разбираться. Ничего сложного, но думаю смогу сократить ваши пару часов, если вы никогда не работали с биткоином через консоль и не подключали таким образом платежи.

Читать полностью »

Так уж случилось, что домашний роутер после двух лет безглючной работы начал время от времени подвисать. Проявлялось это в подвисании WAN порта и отсутствии интернета у всей подсети, LAN работает нормально. Решение оказалось не таким простым, как может показаться сначала.
Читать полностью »

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


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js