nodeJS Быстрый веб-сервер на javascript движке V8

7Янв/122

Пишем онлайн игру на NodeJS, Express и Socket.IO

Скриншот игры

Мало кто сегодня может сказать что не знает о NodeJS, последнее время о нём много говорят и пишут.
Я свой путь ознакомления с NodeJS начал полгода назад, тогда для меня это была просто интересное и новое, я и подумать не мог что уже через полгода это станет моим основным инструментом для разработки.

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

Но сейчас я чувствую в себе силы чтобы уже написать полноценный обучающий и не унылый материал от новичка до реального работающего приложения. Это будет не просто приложение, а онлайн игра с использованием самых популярных инструментов Express и Socket.IO, да-да, мультиплеер, который сможет сделать любой средне-статистический js разработчик.

О том, что такое Express и Socket.IO уже писали много где, поэтому описывать ещё раз я не буду, уделив больше внимания процессу разработки.

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

Итак, решено! Начинаю делать крестики-нолики.

23Окт/110

Очередь сообщений на node.js и memcacheq

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

19Июл/110

Яндекс выложил первые блоки для своего web-фреймворка БЭМ

Веб-фреймворк БЭМ на основе Node.js, разрабатываемый в недрах Яндекса, обзавёлся сегодня первыми блоками, инструментами и тестовым проектом, в котором можно увидеть простой пример использования. К БЭМ прилагается шаблонизатор на основе гибрида JSON и XSLT.

Чтобы установить и опробовать БЭМ, надо произвести следующие действия:

echo 'export NODE_PATH="'$(npm root -g):$NODE_PATH'"'>>  ~/.bashrc
sudo npm install -g bem
sudo npm install -g xjst

Подробнее о работе с фреймворком можно почитать в вики проекта.

6Июл/110

Kue — очереди с приоритетами на основе Redis

Если в Вашем проекте необходимо выполнять какие то задачи в фоновом режиме, будь то отправка почты или перекодирование видео, Вам следует присмотреться к Kue — инструменту для управления очередями задач с поддержкой приоритетов, метаданных и удобным веб-интерфейсом.

4Июл/110

Хранилища данных в Node.JS. MemcacheDB

MemcacheDB

Сегодня я расскажу, как начать работать с MemcacheDB в Node.JS

2Июн/112

Native JavaScript Templates (nJSt). Шаблонизатор, построенный на нативном JavaScript

Приветствую тебя, читатель. Гоняясь за идеей сделать шаблонизатор, основанный на нативном JavaScript — я кое к чему пришёл. В Node.JS для реализации этой задачи нашлось всё, что я мог пожелать, и выполнить задачу получилось настолько же нативными средствами. Например, главным инструментом послужил модуль VM для выполнения изолированного от внешней среды JavaScript-кода. Шаблонные вставки — это чистый JS, но туда не попадают всяческие опасные инструменты вроде скальпеля, require, global и др.

Перед тем как приступить к подробному разбору полётов, сразу взглянем на пример использования, который скорей нагляднее отразит суть, чем что-либо ещё. Код создания сервера приводить не буду, просто опишу сам шаблон и парсинг под определённым контекстом.

HTML-шабон:

<html>
<head>
    <title>#{PageTitle}</title>
</head>
 
<body>
    <h1>#{PageTitle}</h1>
 
    <ul>
    <# for (var i=0; i<List.length; i++) { #>
        <li>
            <#
                if (typeof List[i] !== 'object') {
                    show(List[i]);
                } else {
                    show(List[i].name +' - '+ List[i].note);
                }
            #>
        </li>
    <# } #>
    </ul>
</body>
</html>

Контекст:

var context = {
    PageTitle: 'jJSt test',
    List: ['First', {name:'Second', note:'2th'}, 'Third'],
};
var result = njst.parse(html, context, {debug:1});

© unclechu

20Май/110

Учимся создавать маленький парсер шаблонов

Приветствую тебя, читатель. Ещё давеча я даже не знал о существовании Node.js, но зато успел увесисто поработать с JavaScript, после которого так не хочется писать на чём-либо другом. Многие, кто вник в JS и его дзен, что всё есьм — объект, в замыкания, анонимные функции, предпочитают работать только с ним. Однажды с товарищем обменивались мыслями о PHP, покритиковали скудные и неудобные возможности ООП, и я тут выдал: «вот бы вместо PHP на серверной стороне писать на JS», — на что получил мгновенный ответ: «nodejs тебе в руки». Не долго думая я начал рыть по wiki и другим ресурсам, далее в кротчайший срок я поднял Ubuntu Server на Virtual Box и поставил туда сам Node.js.

Сразу предупреждаю, что если вы не работали с JavaScript или просто скудно с ним знакомы, начните именно с него, иначе Node.js может показаться вам тёмным лесом. Хочу познакомить вас с языком сразу на практике, и так же показать идею по опять же практическому применению. Я приведу пример реализации маленького парсера шаблонов, всё это уложится в 2-а небольших файла, нарочито без излишеств, чтобы наглядно и прозрачно посмотреть «как это работает».

© unclechu

13Апр/110

Пишем модель для Redis

В целях изучения Redis и nodejs, давайте напишем небольшую модель.

Итак, задача

Для примера, пусть мы пишем бота, который посещает веб страницы. А сохранять мы будем адреса сайтов и время когда заходили на сайт.

Итак, давайте приступим. Первое что нам нужно это скачать модуль для работы с Redis в nodejs, рекомендуемый к использованию модуль лежит по адресу: https://github.com/mranney/node_redis и его легко можно установить из менеджера пакетов nodejs выполнив команду:

npm install redis

Автор библиотеки рекомендует так же использовать hiredis, библиотека для разбора ответов Redis, что увеличивает производительность модуля. Устанавливать все так же просто из менеджера пакетов nodejs.

npm install redis hiredis

API библиотеки практически полностью повторяет API Redis, поэтому можно сразу смотреть список команд Redis и использовать их.

Метки записи: , Читать полностью
13Апр/112

Хранилища данных в Node.js: MySQL

Mysql + Node.jsВ последнем проекте появилась необходимость организации работы Node.JS с MySQL. Для создания данного взаимодействия существует несколько модулей, я решил использовать node-mysql, т.к. он предоставляет все необходимые мне функции.

25Фев/111

Задерживающий прокси а-ля xkcd

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

Метки записи: , Читать полностью