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

Derby.js TODO or not TODO

Одни программисты уже осознали открывающиеся перспективы и взялись за изучение Derby. Другие, с интересом наблюдают за происходящим, но не готовы в данный момент расстаться с их любимым фреймворком по разным причинам. Третьи минусуют Derby-туториалы, полагая, что это как-то остановит прогресс и надвигающуюся волну full-stack фреймворков.

Ну а наш паровоз набирает ход и сегодня мы углубимся в наших Derby-изысканиях.

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

Храним сессии на клиенте, чтобы упростить масштабирование приложения (3 я из 12 статей о Node.js от команды Mozilla Identity)От переводчика: Это третья статья из цикла о Node.js от команды Mozilla Identity, которая занимается проектом Persona. Эта статья посвящена применяемому в Persona способу хранения данных сессии на клиенте.


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

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

Масштабирование сайта с хранением состояния

Если необходимо масштабировать такой сайт, есть три варианта:

  1. Реплицировать данные сессии между всеми серверами.
  2. Использовать центральное хранилище, к которому будут обращаться все серверы.
  3. Закрепить за каждым пользователем определённый сервер.

У всех этих подходов есть недостатки:

  1. Репликация ухудшает производительность и увеличивает сложность.
  2. Центральное хранилище ограничивает возможность масштабирования и приводит к дополнительным задержкам.
  3. Привязка пользователей к конкретным серверам приводит к проблемам, когда сервер отключается.

Тем не менее, поразмыслив немного, можно придумать и четвёртый способ: хранить все данные сессии на клиенте.
Читать полностью »

Derby.js Путь воина

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

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

Хочу порадовать тех, кто любит делать графику на сайтах при помощи шрифтов. На проекте Fontello большое обновление — теперь вы можете генерировать шрифты из собственных картинок, а также импортировать под нарезку вообще любые шрифты, которых нет в стандартных подборках!

image

Для тех кто не в курсе, фонтелло — проект для дизайнеров и разработчиков вебсайтов. Если Twitter Bootstrap предоставляет вам набор CSS-классов для быстрой и легкой верстки страниц, то Fontello позволяет вам легко добавить на эти страницы иконки. Вы можете выбрать иконки из очень большой подборки, а Fontello упакует их в шрифты и сделает файл с CSS-классами. Дальше остается добавить нужный класс к HTML-элементу, и рядом появится картинка.

Конечно, есть немало готовых иконочных шрифтов. Но ведь вам обычно для сайта нужно всего лишь несколько иконок, а остальные будут просто занимать место и замедлять загрузку. Или какой-то иконки не хватит, но она есть в другой коллекции. Как быть? Fontello позволяет выбрать необходимое, и делает из него шрифт специально под ваши нужды. Ну а последний апдейт понравится тем, кто рисует что-то свое — теперь вы не ограничены встроенным (хоть и большим) каталогом иконок.
Читать полностью »

Hello World на Derby.js

Если вам не безразличны новые тендеции веб-разработки, то приглашаю поучаствовать в дискуссиях в комментариях к посту Angular vs Meteor vs Derby. Там много интересных мыслей.

Ну а тем временем неделя Derby.js на Хабре продолжается. Популяция Derby-программистов удваивается. И сегодня мы будем учиться бегать на страусах настраивать окружение, создадим приложение, запустим и рассмотрим его структуру.
Если для вас это уже пройденный этап, возможно вам будет интересно посмотреть Tutorial, который по сути Faq. Остальным добро пожаловать под кат.

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

Интенсивное развитие облачных сервисов не оставляет равнодушным. Нашe внимание остановилось на сервисе Amazon — Elasctic Cloud Compute. Возникла задача развернуть проект node.js использующий Derby. Amazon Elastic Beanstalk так же поддерживает node.js, однако мы ограничимся только сервисом Amazon EC2. Кроме того «из коробки» Amazon Elastic Beanstalk предлагают Amazon Linux с предуставновленным node.js + nginx. В нашем случае Amazon Linux не подходит, версия node.js и связка node.js+nginx также.Читать полностью »

Нагружаем Node под завязку (2 я из 12 статей о Node.js от команды Mozilla Identity)От переводчика: Это вторая статья из цикла о Node.js от команды Mozilla Identity, которая занимается проектом Persona. Эта статья написана по мотивам выступления Ллойда Хилайеля на конференции Node Philly 2012 в Филадельфии.

Перевод первой статьи, "Охотимся за утечками памяти в Node.js", был опубликован в пятницу.


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

Кроме того, мы представим модуль compute-cluster — маленькую библиотеку, которая облегчает управление коллекцией процессов для выполнения распределённых вычислений.

Постановка задачи

Для Persona нам было необходимо создать сервер, который справился бы с обработкой множества запросов со смешанными характеристиками. Мы выбрали для этой цели Node.js. Нам надо было обрабатывать два основных типа запросов: «интерактивные», которые не требовали сложных вычислений и должны были выполняться быстро, чтобы интерфейс приложения был отзывчивым, и «пакетные», которые отнимали примерно пол-секунды процессорного времени и могли быть ненадолго отложены без ущерба для удобства пользователя.

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

  • Насыщение. Наше решение должно было использовать все доступные ядра процессора.
  • Отзывчивость. Пользовательский интерфейс должен оставаться отзывчивым. Всегда.
  • Отказоустойчивость. Когда нагрузка зашкаливает, мы должны нормально обслужить столько клиентов, сколько сможем, а остальным показать сообщение об ошибке.
  • Простота. Решение должно легко и постепенно интегрироваться в уже работающий сервер.

Вооружившись этими требованиями, мы можем осмысленно сравнивать разные подходы.
Читать полностью »

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

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

Angular.js vs Meteor.js vs Derby.js
После поста о derby.js и перевода сравнения meteor.js и derby.js, главный вопрос, который был в комментариях, звучал примерно так: «Что всё таки лучше derby.js или meteor.js? И зачем вообще всё это нужно, когда можно писать на angular.js + express.js?». Конечно не совсем корректно сравнивать эти фреймворки, так как derby.js и meteor.js — это так называемые full-stack, а angular.js — mvc на клиенте.

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

Простой способ установки NodeJS на Debian Wheezy

Собирать ноду из исходников, как написано в официальной инструкции, — дело не из приятных. Когда я пробовал это сделать на squeeze — у меня не проходились тесты. Сейчас, на wheezy, у меня отказался собираться dpkg. Выяснять в чем здесь дело мне не хотелось, и покопавшись чуть-чуть в сети, я нашел способ попроще.

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


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