Search
Write a publication
Pull to refresh
1
0
Роман Сопов @sopov

Разработчик

Send message

Строим real-time веб-приложения с RethinkDB

Reading time10 min
Views44K
От переводчика: Совсем недавно узнал про эту довольно интересную базу данных и как раз наткнулся на свежую статью. На Хабре нет почти ни слова о RethinkDB, в связи с чем было решено сделать этот перевод. Добро пожаловать под кат!

image

База данных RethinkDB упрощает разработку веб-приложений, рассчитанных на обновления в режиме реального времени.
Читать дальше →

Node.js и Express как они есть

Reading time15 min
Views74K
Здравствуйте, любители нашего хаброблога и прочие читатели!

Мы планируем вновь отметиться на поле неувядающего Node.js и рассматриваем возможность издания этой книги:



Поскольку вполне понятен читательский интерес «а как он впихнул все это в двести страниц, и зачем мне это нужно»? под катом предлагаем перевод доскональной статьи Томислава Капана о том, зачем на самом деле нужен Node.js.
Читать дальше →

15 тривиальных фактов о правильной работе с протоколом HTTP

Reading time7 min
Views241K
Внимание! Реклама! Пост оплачен Капитаном Очевидность!

Ниже под катом вы найдёте 15 пунктов, описывающих правильную организацию ресурсов, доступных по протоколу HTTP — веб-сайтов, «ручек» бэкенда, API и прочая. «Правильный» здесь означает «соответствующий рекомендациям и спецификациям». Большая часть ниженаписанного почти дословно переведена из официальных стандартов, рекомендаций и best practices от IETF и W3C.



Вы не найдёте здесь абсолютно ничего неочевидного. Нет, серьёзно, каждый веб-разработчик теоретически эти 15 пунктов должен освоить где-то в районе junior developer-а и/или второго-третьего курса университета.

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

Пишем документацию API при помощи RAML

Reading time10 min
Views77K
RAML

Удобство работы с любым API во многом зависит от того, как написана и оформлена его документация. Cейчас мы ведём работу по стандартизации и унификации описания всех наших API, и вопросы документирования для нас особенно актуальны.
После долгих поисков мы решили оформлять документацию в формате RAML. Так называется специализированный язык для описания REST API. О его возможностях и преимуществах мы расскажем в этой статье.
Читать дальше →

Миллион одновременных соединений на Node.js

Reading time9 min
Views106K


TL;DR:


  • Node.js v0.8 позволяет обрабатывать 1 млн одновременных HTTP Comet соединений на Intel Core i7 Quad/16 Gb RAM практически без дополнительных настроек.
  • На 1 соединение тратится чуть больше 10 Kb памяти (4.1 Kb Javascript Heap + 2.2 Kb Node.js Native + 3.8 Kb Kernel)..
  • V8 Garbage Collector не рассчитан на управление > ~500Mb памяти. При превышении нужно переходить на альтернативный режим сборки мусора, иначе «отзывчивость» сервера сильно уменьшается.
  • Подобный опыт можно (и нужно!) без особых затрат повторить самому (см. под катом).

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

Шпаргалка по mongodb: e-commerce, миграция, часто применяемые операции и немного о транзакциях

Reading time40 min
Views68K

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


Не хотелось бы, чтобы пост воспринимался в ключе холиваров на тему SQL vs. NOSQL И так понятно что везде есть свои плюсы и минусы, в данном случае это просто где-то немного справки, где-то немного примеров из того, с чем приходилось сталкиваться. Примеры на mongo shell и на python.


  1. Миграция в на новые версии в mongodb
  2. Запросы сравнения и логические
  3. Полнотекстовый поиск в Mongodb, regexp, индексы и пр.
  4. Атомарные операторы (модифицирующие данные )
  5. Немного о транзакциях в Mongodb
  6. Агрегационный фреймворк и JOIN-ы в Mongodb
  7. Примеры
  8. Небольшая песочница на Python

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

Примеры использования MongoDB в e-commerce (часть 2)

Reading time25 min
Views29K


[ Первая часть ]

В этом посте будет то, что не поместилось в первую часть. Это некоторые операторы, которые есть в aggregation framework и достаточно вольный перевод трех статей из раздела экоситема на сайте со справкой к MongoDB, описывающих некоторые случаи применения для интернет-коммерции.

Случаи использования разделены там на восемь статей, которые условно можно разделить на три группы. Мне показались самыми интересными для перевода три материала, связанные с e-commerce.

  1. Операторы в aggregation framework
  2. Каталог продуктов
  3. Корзина и управления остатками на складе
  4. Иерархия категорий

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

MongoDB от теории к практике. Руководство по установке кластера mongoDB

Reading time9 min
Views90K
     Доброго времени суток, уважаемые читатели. В этом посте я хотел бы описать несколько примеров развертки mongoDB, отличия между ними, принципы их работы. Однако больше всего хотелось бы поделиться с вами практическом опытом шардирования mongoDB. Если бы этот пост имел план, он бы выглядел скорее всего так:

  1. Вступление. Кратко о масштабировании
  2. Некоторые примеры развертки mongoDB и их описание
  3. Шардинг mongoDB

    Пункты 1 и 2 — теоретические, а номер 3 претендует на практическое руководство по поднятию кластера mongoDB и больше всего подойдет тем, кто столкнулся с этим в первый раз.
Читать дальше →

RESTful API на Node.js + MongoDB

Reading time16 min
Views260K
Я, будучи разработчиком мобильных приложений, часто нуждаюсь в backend-сервисах для хранения пользовательских данных, авторизации и прочего. Конечно, для подобных задач можно использовать BaaS (Parse, Backendless, etc…). Но свое решение — это всегда более удобно и практично.

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

В данной статье будет рассмотрено построение REST API для мобильного приложения на Node.js с использованием фреймворка Express.js и модуля Mongoose.js для работы с MongoDB. Для контроля доступа прибегнем к технологии OAuth 2.0 с помощью модулей OAuth2orize и Passport.js.

Пишу с позиции абсолютного новичка. Рад любым отзывам и поправкам по коду и логике!

Содержание

  1. Node.js + Express.js, простой web-сервер
  2. Error handling
  3. RESTful API endpoints, CRUD
  4. MongoDB & Mongoose.js
  5. Access control — OAuth 2.0, Passport.js

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

Знакомимся с Vorlon.js — отладка веб-приложений

Reading time4 min
Views10K
Мы продолжаем публиковать в нашем блоге авторские статьи на темы разработки приложений. Встречайте первую статью от Андрея Веселова ( StealthDogg ) — опытного веб-разработчика и Microsoft MVP.
Не секрет, что в большинстве веб-браузеров есть инструменты для разработчиков. С их помощью можно получить информацию о DOM, состоянии выполняемых скриптов, времени загрузки страницы и т.д. Но существуют ситуации когда они отсутствуют или не доступны. Например, в мобильных или IoT устройствах. Тогда на помощь приходит Vorlon.js.

Что такое Vorlon.js


Vorlon.js это бесплатный инструмент, который позволяет получить и отобразить в браузере разработчика различную отладочную информацию от клиентов отлаживаемого веб-приложения. Он использует node.js и написан на языке TypeScript, который является надмножеством JavaScript. Таким образом, его можно применять для отладки веб-приложений практически на любой платформе.

Посмотрим на возможности Vorlon.js. Его окно внешне схоже с окнами инструментов разработчика в браузерах:



Слева в окне расположен список клиентов, подключенных к отлаживаемому веб-приложению. Определить, какая строка соответствует каждому из них, можно нажав кнопку "Identify a client". После этого их браузеры выведут на экран свой индекс.
Читать дальше →

7 правил создания красивых интерфейсов. Часть 2

Reading time9 min
Views104K


Недавно мы в «Я люблю ИП» закончили курсы по дизайну от trydesignlab.com. И это одна из самых важных статей, которую нам посоветовал ментор в процессе обучения. Сегодня мы публикуем вторую часть перевода. Посмотреть все наши работы с курсов можно в ВКонтакте по тэгу #design101@iloveip.

Мы говорили о правилах создания чистых и красивых интерфейсов.

Вот эти правила:
  1. Свет падает сверху (Часть 1)
  2. Сначала черное и белое (Часть 1)
  3. Увеличьте белое пространство (Часть 1)
  4. Научитесь накладывать текст на изображения
  5. Научитесь выделять и утапливать текст
  6. Используйте только хорошие шрифты
  7. Крадите как художник

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

Обзор способов и протоколов аутентификации в веб-приложениях

Reading time18 min
Views675K


Я расскажу о применении различных способов аутентификации для веб-приложений, включая аутентификацию по паролю, по сертификатам, по одноразовым паролям, по ключам доступа и по токенам. Коснусь технологии единого входа (Single Sign-On), рассмотрю различные стандарты и протоколы аутентификации.

Перед тем, как перейти к техническим деталям, давайте немного освежим терминологию.

  • Идентификация — это заявление о том, кем вы являетесь. В зависимости от ситуации, это может быть имя, адрес электронной почты, номер учетной записи, итд.
  • Аутентификация — предоставление доказательств, что вы на самом деле есть тот, кем идентифицировались (от слова “authentic” — истинный, подлинный).
  • Авторизация — проверка, что вам разрешен доступ к запрашиваемому ресурсу.


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

Аналогично эти термины применяются в компьютерных системах, где традиционно под идентификацией понимают получение вашей учетной записи (identity) по username или email; под аутентификацией — проверку, что вы знаете пароль от этой учетной записи, а под авторизацией — проверку вашей роли в системе и решение о предоставлении доступа к запрошенной странице или ресурсу.

Однако в современных системах существуют и более сложные схемы аутентификации и авторизации, о которых я расскажу далее. Но начнем с простого и понятного.
Читать дальше →

Мультизагрузка в wysiwyg редакторе

Reading time3 min
Views11K


Суть вот в чем, есть редактор (для примера: imperavi.com/redactor) и есть необходимость загружать сразу много картинок за один раз. В идеале простым перетаскиванием, а в нашем случае редактор кушает только одну картинку за раз. Это нужно поправить.

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

Эффективная разработка логотипа, часть 1: символы, метафоры и возможности интуиции

Reading time8 min
Views44K
Ни одному дизайнеру не удаётся всё время создавать восхитительные работы. Создание хорошего дизайна требует значительных усилий, но достигать удивительного результата порой получается совершенно не напрягаясь. Многие дизайнеры следуют интуиции во время творческого процесса, и включают общепринятые символы и метафоры в свои работы просто потому, что они «чувствуют» их уместность. Интуицией можно воспользоваться любой, а особенно полезна она в творческой деятельности. Она ведёт дизайнеров к решениям, согласующимся с общепринятыми знаниями.

На дизайн бывает три реакции: да, нет и ОГО! К «ого» и нужно стремиться.

— Милтон Глейзер


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

Интуитивный процесс дизайна


Интуиция – это бессознательное восприятие

— Карл Юнг


Всегда есть люди, отметающие то, что нельзя измерить. Но многие мыслители отдавали должное интуиции. Альберт Эйнштейн, Ричард Бакминстер Фуллер, Карл Юнг, Рэй Бредбери, Стив Джобс и даже Алан Тьюринг, знаменитый логик и криптоаналист, понимали, что математические доказательства основываются на «интуиции и гениальности». Великие мыслители и футуристы отводят интуиции ключевую роль в процессе решения задач. Для дизайнеров интуиция – это не нечто чужеродное, это больше похоже на дыхание. В интуиции, как в воде, плавают многие творцы, в то время, как их интеллект диктует формулу для исполнения и оформления конечного продукта.
Читать дальше →

Эффективная разработка логотипа, часть 2: использование природных шаблонов

Reading time7 min
Views25K
Часть 1

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

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

Человек изобретает вещи, навязывая форму природе. Человек открывает вещи, обнаруживая шаблоны природы.

— Алан Флетчер


Основное свойство шаблонов – повторяемость. Их можно читать, как истории. Человечество изучало язык природы для выживания. Периодическая миграция сдат, проход созвездий по небосводу и свойства различных почв – это всё примеры шаблонов, создающих ожидания, от которых мы зависим. Дизайнеры используют природные шаблоны, поскольку на них можно положиться. Биомимикрия важна не только для дизайнеров продукта. Графика, вдохновлённая биологией, может сделать логотип сильнее, ссылаясь на шаблон, известный на подсознательном уровне всем людям.

image

Взаимоотношения природных шаблонов и дизайна


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

Эффективная разработка логотипа, часть 3: влияние геометрии на разработку логотипов

Reading time10 min
Views35K
Часть 2

Галилео знал об этом. Все древние цивилизации, оставившие след в культуре, знали это. Простые формы составляют основу геометрии вселенной. Люди много чего изобрели, но простые формы придумали не мы. Мы открыли их, наблюдая за природой. Понимание основных форм и их функций научило нас ориентации в пространстве и времени, вдохновило на математику, технологию, языки и эволюцию.
Вселенную нельзя прочесть, пока мы не выучим язык, которым она написана. Она написана языком математики, а буквы его – треугольники, круги и другие геометрические фигуры, без которых человек не способен понять ни единого слова.
— Галилео Галилей

Геометрические инструменты


image

Набор простых форм использовался в искусстве всех культур: круг, пересекающиеся линии, треугольник, квадрат и спираль. Культурный антрополог Анжель Арьен изучала и записывала общие черты видов искусств несколько десятков лет, и нашла повторяющиеся формы, использующиеся во всех видах искусства. Она назвала их «пять универсальных форм».

image

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

Немного геометрии


Цель логотипа – передать нечто клиенту самым простым, но всеобъемлющим способом. Простые формы рассказывают об основных свойствах организации непосредственным способом, и используются во всех видах дизайна – графическом, интерьерном, ландшафтном, продуктовом, индустриальном и архитектурном.
Для меня ни один детский опыт не принёс такой уверенности в собственных исследовательских возможностях, как геометрия.
— Ричард Бакминстер Фуллер

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

Сетки для адаптивного дизайна

Reading time7 min
Views214K


Мы собрали наиболее частые темы, связанные с сеткой в адаптивном дизайне, чтобы «повысить резкость» термина как такового и систематизировать практические знания: как настраивать сетку в дизайн-макете, по каким параметрам делать расчет, какие особенности адаптивной среды учитывать и на какие детали обращать внимание.
Читать дальше

Обработка 1 миллиона запросов в минуту c Go

Reading time8 min
Views39K
Предлагаю читателям «Хабрахабра» перевод статьи главного архитектора компании Malwarebytes о том, как они достигли обработки 1 миллиона запросов в минуту всего на 4 серверах.

У нас в Malwarebytes мы переживаем бешеный рост и с тех пор, как я присоединился к компании около года назад в Кремниевой Долине, одной из моих основных обязанностей было проектирование и разработка архитектур нескольких систем для развития быстрорастущей компании и всей необходимой инфраструктуры для поддержки продукта, который используют миллионы людей каждый день. Я работал в индустрии антивирусов более 12 лет в нескольких разных компаниях, и знаю, насколько сложными получаются в итоге эти системы, из-за колоссальных объемов данных, с которыми приходится иметь дело ежедневно.
Читать дальше →

Потоки, блокировки и условные переменные в C++11 [Часть 1]

Reading time8 min
Views457K
В первой части этой статьи основное внимание будет уделено потокам и блокировкам в С++11, условные переменные во всей своей красе будут подробно рассмотрены во второй части
Читать дальше →

58 признаков хорошего интерфейса

Reading time16 min
Views382K
У хорошего интерфейса пользователя высокая конверсия и его просто использовать. То есть, он хорош и для бизнеса, и для использующих его людей. Вот список опробованных нами идей.

1 Один столбец вместо нескольких


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

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

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity