Метка «mongodb» - 3

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

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

Особенности

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

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

Здравствуй!

В этой открытой лекции я попытался сжато рассказать и показать полный цикл (full stack) разработки веб-приложений на JavaScript.

Начнем мы с короткого введения в язык, потом в двух словах поговорим о клиентской части, в частности, об MVC фреймворках вроде Angular.js, после чего перейдем на серверную часть: Node.js и MongoDB. В конце обсудим возможность автоматизации разработки и сборки проектов с помощью Grunt.js.

Скачать слайды и исходные коды.

Лекция была записана в офисе компании ChocolifeЧитать полностью »

Я, будучи разработчиком мобильных приложений, часто нуждаюсь в 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

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

Отчёты и графики для travis ci и drone.io
В больших проектах уже довольно давно привык к плюшкам ci: прогону тестов, отчётам и автоматическому деплою. При разработке небольших проектов этого не хватает. 1 и 3 покрывает travis-ci(ну или drone.io), но вот визуализации результата нет никакой.

И сразу придумалось простое решение:

  • прогонять анализаторы на стороне ci;
  • отправлять их себе;
  • парсить результат и красиво отображать.

И это всё вылилось в небольшое приложение — coviolations.io(исходники сервера и приложения), сейчас оно

  • работает с публичными и приватными репозиториями на github;
  • работает с travis-ci, drone.io и при желании с jenkins;
  • умеет парсить результат pep8, sloccount, python unittest, pip-review и testem;
  • умеет рисовать статус-плашку Отчёты и графики для travis ci и drone.io;
  • не умеет работать с репозиториями организаций.

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

Делаем админпанель для MySQL и MongoDB на Node.js

Хотим «phpMyAdmin» (читай web GUI) для ноды

Отсутствие универсальных веб-интерфейсов для управления распространенными СУБД, несколько усложняет освоение Node.js, а разворачивать рядом другой веб-сервер и другой язык с инфраструктурой, ой как не хочется. Открывать порты и управлять базами, подключаясь с другого сервера или со своего рабочего компьютера — это и неудобно и есть соображения безопасности. Поэтому мы решили включить такой инструмент в платформу для веб-приложений Impress, которую анонсировали, о которой я немного писал и которая доступна в открытом коде для всеобщей пользы. Задумка такая: реализовать простой и удобный унифицированный интерфейс для СУБД, которые чаще всего применяются в с Node.js, позаботиться о быстром развертывании (просто скопировать папку) и независимости от среды. В бета-версии уже поддерживаются MySQL, MongoDB и в скором времени очередь дойдет до PostgreSQL и Oracle.
Читать полностью »

В интернете не так много статей о производительности GridFS, вот одна из них Serving files out of GridFS которая показывает, что отдача файлов из GridFS медленнее чем с диска в 6 раз.
Но в той статье есть недочет — в тестировании обращение идет к одному файлу, а при этом файл кешируется на уровне nginx либо файловой системы что дает отрыв по сравнению с GridFS. Да и неплохо проверить свежий GridFS, 3 года прошло как никак.
Поэтому я решил провести собственное тестирование, с обращением по разным именам файлов.

Есть 52 тыс файлов — постеры к фильмам, общий объем 2Гб, средняя картинка весит 40кб. Копия файлов на ext4, копия в GridFS.
Виртуалка 512Мб с 1 ядром. Ubuntu server 12.04 LTS 64bit, настройки Nginx/1.4.1 стандартные.
Тест рассчитан на low-cost сервер, для мощных серверов результаты будут другие.

Способы отдачи файлов:
1) Nginx — статика
2) Gevent через nginx
3) 2 x Gevent через nginx (балансировка)
4) Gevent напрямую
5) Gevent через nginx (unix socket)
для пунктов 2-5 использовался http сервер на Python + Gevent который отдавал файлы из GridFS

Способы нагрузки:
1) ol, t2 — Обращение к одному url, 2 потока
2) ol, t10 — Обращение к одному url, 10 потоков
3) t2 — Обращение к разным url, 2 потока
4) t10 — Обращение к разным url, 10 потоков

Производительность GridFS
Читать полностью »

Решение транспортной задачи при помощи генетического алгоритма как часть SOA

Приветствую уважаемое читатели!

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

Формулировка задачи

Википедия формулирует задачу следующим образом — задача об оптимальном плане перевозок однородного продукта из однородных пунктов наличия в однородные пункты потребления на однородных транспортных средствах (предопределённом количестве) со статичными данными и линеарном подходе.

Например – необходимо спланировать доставку бутылей воды по городу, известны потребности каждого заказчика, грузоподъёмность транспортных средств и расстояния между точками.

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

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

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

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

в 11:40, , рубрики: mongo, mongodb, orm, php, метки: , , ,

Прошла неделя с тех пор как я начал использовать MongoDB в качестве базы данных.
В качестве ORM изначально использовал mongodm, так как она написана в наиболее близком к моему стилю.
Но, по мере использования выяснились некоторые проблемы, например, использование 1Гб памяти при полной выборке по относительно небольшой коллекции: библиотека пыталась сразу создать все модели. Также указание соединения и названия коллекции в модели — не слишком удобно.

В связи с тем, что переписывать по сути надо не так много (4 файла в оригинале), написал за пару дней свой вариант, в своем стиле, и выложил сегодня на github.

Итак, представляю kanon-mongo:
Читать полностью »

Впервые столкнувшись с MapReduce, я продолжительное время искал реальные примеры применения. Пресловутый поиск слов в тексте, встречающийся в каждой второй статье о MapReduce, искомым примером считать не будем. Наконец, на двух курсах по Big Data на Coursera, я нашёл не только живые примеры, но теоретическую подоплёку для более глубокого понимания происходящего. Возможность применить полученный багаж знаний не заставила себя долго ждать.

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


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