Pull to refresh
222
0
Павло @TheShock

Senior JS Developer

Send message

После всех асинхронных вызовов

Reading time3 min
Views8.4K
Итак, мы пишем приложение с кучей асинхронных запросов. Нам надо отправить два асинхронных запроса и обработать их результат только после того, как будет получен результат обоих. Например, это могут быть ассинхронные обращение к файлу и запрос к базе, результат которых надо сложить вместе и обработать. Или два аджакс запроса.
Но особенность асинхронных запросов в том, что мы не знаем, какой из них придёт первым, а какой — последним. Решают это разными способами, но я не видел еще красивого и изящного. В топике я расскажу, как я это вижу.
var process = processFsAndDb.after('fs', 'db');

asyncFsAccess( file, process.fs);
asyncDbAccess(query, process.db);

Читать дальше →
Total votes 71: ↑67 and ↓4+63
Comments114

Геттеры и сеттеры в Javascript

Reading time5 min
Views48K
Javascript — очень изящный язык с кучей интересных возможностей. Большинство из этих возможностей скрыты одним неприятным фактором — Internet Explorer'ом и другим дерьмом, с которым нам приходится работать. Тем не менее, с приходом мобильных телефонов с актуальными браузерами и серверного JavaScript с нормальными движками эти возможности уже можно и нужно использовать прям сейчас. Но по привычке, даже при программировании для node.js мы стараемся писать так, чтобы оно работало в IE6+.

В этой статье я расскажу про интересный и не секретный способ указывать изящные геттеры и сеттеры и немножко покопаемся в исходниках Mootools. Частично это информация взята из статьи John Resig, частично лично мой опыт и эксперименты.
function Foo(bar){
    this._bar = bar;
}

Foo.prototype = {
    get bar () {
        return this._bar;
    },
    set bar (bar) {
        this._bar = bar;
    }
};


Читать дальше →
Total votes 104: ↑92 and ↓12+80
Comments68

«Spirit»: Node.js MVC Framework

Reading time13 min
Views8.1K

Привет, ребята! С этого момента я хочу начать цикл статтей с подробностями по созданию сообственного MVC фреймворка для node.js, название которому будет — Spirit.

Первая статья будет состять из четырех частей:
1. Идея и миссия фреймворка
2. Настройка сервера
3. Создание каркаса фреймворка
4. Создание продвинутого и удобного роутера

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

Читать дальше →
Total votes 77: ↑65 and ↓12+53
Comments87

node.js сокращатель ссылок

Reading time6 min
Views8K

Привет, Хабр! В этой статье я пошагово рассмотрю создание простого веб-приложения — сокращателя ссылок на node.js, используя mysql-libmysqlclient, MooTools на сервере и jQuery на клиенте. Статья предполагает, что читатель уже прошёл упражнение «Hello world» и разобрался в самых основах node.js.
Читать дальше →
Total votes 56: ↑52 and ↓4+48
Comments60

Правильный захват контекста в Javascript

Reading time5 min
Views37K
Довольно часто во многих статьях я вижу, как люди захватывают контекст this для использования в анонимной функции и удивляюсь — то, что уже стало стандартом — просто ужасная практика, которая противоречит всем канонам программирования. Вам знакома такая запись?
var self this;
Может вам тоже стоит переосмыслить этот аспект?
Читать дальше →
Total votes 113: ↑87 and ↓26+61
Comments147

Дворовой бридж — соревнование ИИ (libcanvas)

Reading time7 min
Views216K

Предлагаю устроить спортивное программирование — написание ИИ на Javascript для игры в дворовой бридж. Предоставляю уже готовую игру на libcanvas и изящный интерфейс для создания AI. Все, что вам надо — браузер, немного азарта и знание JavaScript. Первый этап — вы программируете свой ИИ, играя против него. Второй этап — вы программируете свой ИИ и он играет против лучших из первого этапа. После второго этапа проводим турнир и объявляем итоги. Уверен, что получим много фана и удовольствия. Победителям — слава и почет. Если победят не зарегистрированные на Хабре — готов предоставить инвайты.

Читать дальше →
Total votes 42: ↑38 and ↓4+34
Comments21

«LibCanvas» — фреймворк для работы с Javascript Canvas, запущен сайт + игра «Asteroids»

Reading time1 min
Views6.4K
Здравствуйте. Я продолжаю развитие фреймворка для работы с Javascript Canvas, основанного на MooTools и предназначенного для создания анимаций, игр, ui и всего, что вы пожелаете. И сегодня — очень важный момент для этого фреймворка — публичный запуск официального сайта.

Добро пожаловать на

libcanvas.com



К запуску мы с greedykid и Nutochka портировали «Asteroids» — культовую игру восьмидесятых, но с более усовершенствованной графикой, которая работает во всех современных браузерах (да-да, про ie < 9 тут ничего не было). Работа над Астероидами показала мне потенциал этой технологии. Я уверен, что это далеко не предел, у меня есть идеи и даже интересные реализации и потому я продолжу развитие этого фреймворка. Ждите новых интересных приложений.
Читать дальше →
Total votes 79: ↑77 and ↓2+75
Comments81

HTML5 Audio и Game Development: баги браузеров, проблемы и их решения, идеи

Reading time6 min
Views11K
В топике я расскажу о нюансах использования тега <audio> в разных браузерах при разработке игр, о проблемах, с которыми я столкнулся и о том, как их решить. Объяснение будет идти паралельно с написанием обертки для удобной работы.
Читать дальше →
Total votes 74: ↑64 and ↓10+54
Comments85

«LibCanvas» — фреймворк для работы с Javascript Canvas, часть вторая

Reading time3 min
Views5.4K

Привет, Хабр! Я хочу рассказать тебе о новой библиотеке, которая помогает очень легко и изящно рисовать всякие штучки-дрючки на html5 canvas. Возможно, ты уже слышал о ней, но сейчас она пережила новое рождение. Что-ж, под катом я покажу тебе много интересненьких примеры, расскажу про нюансы работы и дам ссылку на грозу всех секретарш — почти работающий пасьянс «Косынка», созданную с помощью этой LibCanvas.

Читать дальше →
Total votes 48: ↑42 and ↓6+36
Comments54

«LibCanvas» — фреймворк для работы с Javascript Canvas

Reading time7 min
Views14K
Здравствуй, Хабр! Думаю, люди, которые следят за моим творчеством, заметили, что я очень увлекся рисованием на Canvas в JavaScript. Возможно это немного излишне, но ничего не могу с собой поделать, уж очень нравится эта технология. Так нравится, что я аж буду выступать на конференции с докладом о ней (Пономаренко Павел).

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

Читать дальше →
Total votes 74: ↑68 and ↓6+62
Comments52

ProgressBar — Javascript Canvas2d

Reading time4 min
Views6.2K

Здравствуйте. Последнее время я достаточно часто имею дело с JavaScript-canvas, особенно написание всяких игрушек, которые требовательны к трафику в силу необходимости загрузки множества картинок.
Обычно сначала загружается около 50-100кб сжатого JavaScript, после чего — энное количество картинок(например, 500кб, 2мб, 10мб и т.п.) и только после этого запускается сама игра. Можно, конечно, загружать по ходу, но отсутствие текстур врядли порадует игрока.
Потому я решил, что необходимо сделать какой-то приличный, симпатичный, легко-настраиваемый(чтобы быстро менять от проекта к проекту) прогресс-бар, но, обязательно без использования картинок. Под катом исходники под лицензией LGPL, небольшая инструкция, как это сделать и внизу статьи — ссылка на результат.
Читать дальше →
Total votes 90: ↑85 and ↓5+80
Comments31

Javascript Pseudo-3d Game. Stage 2

Reading time3 min
Views5.6K

(Большая картинка)

Здравствуйте, хабрасообщество. Постараюсь быть максимально кратким. Эта статья — продолжение ранее высказанной идеи о псевдо-3d игре на JavaScript. У меня были чуть другие планы, но я учёл пожелания и рекомендации из предыдущего топика и реализовал Stage 2 лучше, чем мог представить этот этап до первой статьи.

Основными заданиями Stage 2 были перенос плоскости игры из вида сверху в вид от первого лица (в одном из следующих этапов вид сверху вернётся в виде карты) и создания алгоритма-проходильщика для того, чтобы пользователи могли обмениваться лабиринтами и быть уверенными в их проходимости (алгоритм построен не на правиле руки, а потому найдёт выход даже в отделённой комнате).

Читать дальше →
Total votes 109: ↑96 and ↓13+83
Comments101

Javascript Pseudo-3d Game

Reading time2 min
Views6.5K

Здравствуйте, Хабрасообщество.
Я очень люблю JavaScript за его изящество, красоту и много других преимуществ. А еще я очень люблю на нём писать. Более того, я люблю писать не только стандартные вещи, но и то, что обычно на этом языке мало кто пишет. В этой серии статтей я хочу подробно рассказать о создании кроссбраузерной (IE6+, Chrome, O9+, Fx2+, Konq) псевдо-3д игры на JavaScript+DOM (без использования Canvas) в несколько этапов. Игра будет подобна к первым Might and Magic. В планах сделать передвижение по лабиринту с видом сверху, потом с видом от первого лица, затем населить лабиринт монстрами, ловушками, дверями, а в конце добавить сетевую игру с серверной частью на PHP и, естественно, не забыть про многофункциональный редактор карт. Уверен, со временем и предложениями появятся и другие идеи.

Итак, презентую готовый первый этап игры.
Читать дальше →
Total votes 102: ↑89 and ↓13+76
Comments53

jQuery.keyboard v0.2.0

Reading time4 min
Views5.6K

Снова приветствую Хабрасообщество. Недельку назад я выкладывал свою либу jQuery.keyboard. Там было несколько недостатков, нереализованных идей, да и огромное количество предложений и положительных отзывов побудили меня к быстрому написанию новой версии
Читать дальше →
Total votes 85: ↑74 and ↓11+63
Comments59

Не кроссбраузерный event

Reading time3 min
Views3.3K
Здравстуйте, уважаемое хабрасообщество. Реквестирую консультацию.
Позавчера, во время разработки jQuery.keyboard столкнулся с абсолютной браузерной несовместимостью, ужасно неприятной непоследовательностью и т.д. в возврашении значения event.keyCode в различных браузерах. На удивление, единственный, кто меня порадовал — IE 6 (ies4linux) и больше всех огорчила — опера 10. Хромиум и фокс же ж вернули приблизительно одинаковый результат.
Читать дальше →
Total votes 49: ↑34 and ↓15+19
Comments46

jQuery.keyboard v0.1.0

Reading time2 min
Views5.5K

У меня есть на примете как минимум два проекта, в которых понадобится активное управление с помощью клавиатуры. Поэтому, я сел и написал удобный и красивый плагин для jQuery, который выкладываю во всеобщий доступ под свободной лицензией LGPL.
Читать дальше →
Total votes 141: ↑136 and ↓5+131
Comments82

Object-oriented PHP

Reading time5 min
Views1.5K
Здравствуйте. Хочу презентовать хабрасообществу альфа-версию новой open-source библиотеки на PHP для работы с примитивами(string, integer, float и array) как с объектами.

Под катом — короткое описание, ссылка на гуглокод, описание целей и планов.
Читать дальше →
Total votes 104: ↑70 and ↓34+36
Comments122

Full Hierarchy — иерархические структуры в базах данных

Reading time5 min
Views16K
Здравствуйте. В этой статье я хотел бы написать про один очень интересный способ хранения иерархических структур в базах данных, не относящийся при этом к общепринятым и общеизвестным трём (Adjacency List, Nested Set, Materialized Path). Я не встречал в интернете упоминания о нём, о чём очень удивлен, ведь, по моему мнению, — это лучший и единственный способ хранить иерархические структуры. При разработке console-like форума я воспользовался именно этим способом, о чём ни на грамм не жалею. Это авторская статья и ни одно предложение не было вставлено метотодом копипаста.

Под катом способ, который я назвал Full Hierarchy
Total votes 74: ↑65 and ↓9+56
Comments108

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Date of birth
Registered
Activity