Доброго времени суток. Мне хотелось бы поделится с хабросообществом о своем опыте использования Node.JS на живом проекте. Пять месяцев назад я начал воплощать одну из своих старых задумок — сервис достижений.
При разработке проектов я предпочитаю придерживаться точке зрения, что выбор технологии должен быть обоснован дешевизной ее использования. Поэтому для своего проекта я выбрал стек — Node.JS + mongoDB, так как это те технологии, которыми я лучше всего владею.
Метка «node.js» - 14
Node.JS для стартапа или о проблемах на продакшене
2013-01-05 в 13:49, admin, рубрики: javascript, mongodb, node.js, метки: javascript, mongodb, node.jsИгра-викторина Что это?
2013-01-03 в 17:41, admin, рубрики: Facebook, node.js, викторина, Вконтакте, Песочница, метки: Facebook, node.js, викторина, Вконтакте Играли в отгадай город по фото, автомобиль по бамперу или фильм по стоп-кадру? Под катом небольшая история о приложении Вконтакте/Facebook которое облегчает этот процесс.
Читать полностью »
Подключение модулей без явного использования require или аналог namespace
2013-01-03 в 16:35, admin, рубрики: javascript, node.js, require, загрузка файлов, метки: node.js, require, загрузка файловПри работе с node.js часто приходится подключать файлы, расположенные не в текущей директории, и даже не в поддереве текущего каталога. Поэтому часто в модулях можно наблюдать что-то вроде
var obj = require('../../../a/b/c/someModule');
Для меня гораздо удобнее подключать файлы относительно корня проекта (модуля), например
var obj = require(base_dir + '/a/b/c/someModule');
Однако и в этом случае довольно много писанины и необходимо откуда-то получать base_dir.
Для себя я нашел решение проблемы, позволяющее больше не писать require и не узнавать base_dir:
var obj = lib.a.b.c.someModule;
Кому интересно решение — прошу под кат.
Читать полностью »
Атакуем через HTML тег а
2013-01-02 в 12:31, admin, рубрики: html, node.js, браузеры, Вконтакте, интернет, информационная безопасность, метки: html, node.js, Вконтакте, интернет, информационная безопасность Тег a — это не только ценный мех, но и инициализация window.opener.
В этой статье вас ждет рассказ об одной особенности данного тега и способы решения проблемы.
Клонирование объектов в Node.js: Быстрее, глубже, нежнее!
2012-12-28 в 9:13, admin, рубрики: clone, lodash, node.js, nodejs, underscore, Блог компании «Alawar Entertainment», метки: clone, lodash, node.js, nodejs, UnderscoreНе так давно, прочитав статью idoroshenko «Почему eval — это не всегда плохо», я задумался, можно ли использовать подход с генерацией тела функции для клонирования объектов. Даже написал небольшую библиотеку для этого. Бенчмарки давали невероятные результаты, но применимость этого подхода ограничивалась лишь множественным клонированием одинаковых объектов.
Поэтому и у меня возник вопрос: неужели в v8 нет другой возможности избежать расходов, связанных со множественным пересозданием скрытых классов? Ведь это составляет основные траты ресурсов, когда мы клонируем объекты. Как оказалось, такая возможность действительно есть: в самом v8 у объектов существует метод v8::Object::Clone. Этот метод клонирует объекты в широком смысле этого слова, то есть собственно объекты, а также массивы, даты, регулярные выражения, функции и т.д., при этом сохраняя все их свойства, в том числе нестандартные (например, именованные свойства массивов) и даже скрытые.
Была только одна маленькая проблема. Этот метод использовался только в недрах node.js, и не был открыт наружу, для javascript'а.
Читать полностью »
Вышло обновление JavaScript шаблонизатора ECT
2012-12-17 в 7:55, admin, рубрики: javascript, node.js, template engine, шаблонизатор, метки: javascript, node.js, template engine, шаблонизаторРовно три месяца назад я представил хабрасообществу JavaScript шаблонизатор ECT. Вчера для него вышло обновление, о котором я хочу рассказать в этой статье.
Вы знакомы с ECT?
ECT это JavaScript шаблонизатор со встроенным CoffeeScript синтаксисом (отсюда и название: Embedded CoffeeScript Templates). ECT изначально разрабатывался с упором на максимальную производительность и при этом он предоставляет разработчику богатый набор функций.
Что нового?
Обработка асинхронных ошибок с сохранением контекста запроса в connect/express
2012-12-09 в 7:55, admin, рубрики: asynchronous, connect, express, node.js, метки: asynchronous, connect, express, node.jsТе, кому приходилось разрабатывать более-менее большие web-проекты на node.js, наверняка сталкивались с проблемой обработки ошибок, произошедших внутри асинхронных вызовов. Эта проблема обычно всплывает далеко не сразу, а когда у вас уже есть много написанного кода, который делает нечто большее, чем выводит «Hello, World!».
Суть проблемы
Централизованная обработка исключений в Node.JS. Часть 2
2012-12-07 в 4:53, admin, рубрики: exception handling, javascript, node.js, nodejs, Блог компании «Alawar Entertainment», метки: exception handling, node.js, nodejs
Четыре месяца назад я писал о том, как можно удобно ловить исключения в node.js, в том числе и асинхронные, то есть те, которые брошены кодом, который вызван event loop'ом. В той статье я использовал модуль control-block для борьбы с ними, так как стандартный блок try-catch не справлялся.
Как оказалось, примерно в то же время Adam Crabtree выпустил стабильную версию похожего на control-block модуля под названием trycatch.
Читать полностью »
Вышел AWS SDK для Node.js
2012-12-06 в 13:39, admin, рубрики: Amazon EC2, amazon s3, Amazon Web Services, AWS, javascript, node.js, метки: Amazon EC2, amazon s3, Amazon Web Services, aws, javascript, node.js Вернер Фогель, CTO Amazon на прошедшей конференции re:Invent заявил, что использует Node.js для своих повседневных задач. А 4 декабря вышел официльный AWS SDK для Node.js. Теперь нет необходимости в использовании сторонних библиотек, опасаясь за их стабильность, и пытаться понять их документацию.
Читать полностью »