Обновить
256K+

JavaScript *

Прототипно-ориентированный язык программирования

248,05
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Chrome extension — с шахматами и библиотекаршами

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

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

Доступные инструменты:
Content Scripts, Background Pages, Message Passing

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

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

Пишем плагин для jQuery

Время на прочтение8 мин
Охват и читатели249K
Эта статья призвана дать представление об основных правилах, подходах, дающих наилучшие результаты, и распространённых ошибках, на которые стоит обратить внимание при разработке плагинов для jQuery.
Читать дальше →

Описание и валидация древовидных структур данных. JSON-Schema

Время на прочтение6 мин
Охват и читатели85K

Многие сервисы и приложения (особенно веб-сервисы) принимают древовидные данные. Например, такую форму имеют данные, поступающие через JSON-PRC, JSON-REST, PHP-GET/POST. Естественно, появляется задача валидировать их структуру. Существует много вариантов решения этой задачи, начиная от нагромождения if-ов в контроллерах и заканчивая классами, реализующими валидацию по разнообразным конфигурациям. Чаще всего для решения этой задачи требуется рекурсивный валидатор, работающий со схемами данных, описанными по определённому стандарту. Одним из таких стандартов является JSON-Schema, рассмотрим его поближе.
Читать дальше →

Реализация фоновой загрузки файлов на сервер Caché

Время на прочтение10 мин
Охват и читатели5.4K
У разработчиков веб-приложений на Caché и Ensemble часто возникает задача «file upload» — загрузки файлов с браузера. Недавно на форуме по Caché на SQL.ru снова возникло несколько вопросов о том, как сделать фоновую загрузку файлов. Решил описать как это можно сделать с использованием технологий CSP и ZEN.
Читать дальше →

Fronteers 2012 — лучшая конференция по клиентской разработке, часть 2

Время на прочтение4 мин
Охват и читатели3.8K
Fronteers logo

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

Плюс пару слов о Jam Session, который проходил за день до конференции.

Видео записи всех докладов уже доступны на Vimeo.

Открытый блокнот второго дня конференции.

(осторожно, под катом присутствует тяжелая графика)
Читать дальше →

Buildy: песочница для взрослых на HTML5

Время на прочтение1 мин
Охват и читатели38K
Buildy — многопользовательская онлайн-игра, в которой можно строить всё, что угодно, без всякой определённой цели, просто так. Это трехмерный мир в изометрической проекции, в котором можно использовать готовые объекты из библиотеки (их больше четырёх с половиной тысяч!) или рисовать свои в редакторе. В игре есть чат, с помощью которого можно согласовывать свои действия с другими игроками. Кроме общего для всех мира Goon World III, в который по-умолчанию попадают все новые игроки, можно создавать свои закрытые площадки, доступ к которым возможен только по инвайтам.


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

Визуализируем геоинформацию из логов на web-карте в реальном времени

Время на прочтение9 мин
Охват и читатели17K


Дабы не было двусмысленностей, обозначу суть. При приёме на новую работу мне дали тестовое задание, которое кратко можно описать так: «Написать аналог Glow для геовизуализации событий входа пользователей в кастомерку интернет-магазина». Проще говоря, необходимо мониторить лог системы на предмет возникновения определенных событий и в случае оных выполнять (в данном случае) отображение точки на карте, которая будет определяться IP-адресом пользователя. Цель реализации: создать приятную на вид «игрушку» для презентационных целей, способную погрузить смотрящего в нирвану гармонии и эстетического наслаждения. Основным условием было использование в процессе разработки стека Java-технологий, чем обусловлено принятие многих решений. Кроме этого, было решено реализовать это в виде одностраничного сайта. А поскольку с Java и web я был знаком крайне поверхностно (писал в основном на C/C++), пришлось многому научиться. Что ж, будем разбираться вместе.
Статья рассчитана на интересующихся и начинающих, однако не «разжевывает» простые вещи, с которыми можно ознакомиться с помощью документации или специализированных статей. Наиболее полезные ресурсы, ссылка на исходники (распространяются по лицензии BSD) и ссылка на рабочую версию приведены в конце статьи.

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

ExtJS: легкий способ мультизагрузки и валидации файлов (используем HTML5 File API)

Время на прочтение4 мин
Охват и читатели18K
Если вам нужно валидировать загружаемые пользователем файлы не только на сервере, но и на клиенте, или вы хотите позволить пользователю выбрать сразу несколько файлов для загрузки (multiple=”multiple”) то, скорее всего, вы столкнетесь с некоторыми трудностями при использовании Ext.form.field.File.

Суть проблемы


Проверить расширение загружаемого файла, если пользователь выбрал только один файл, не составит труда — просто объявляем vtype и смотрим value input-а:

Ext.apply(Ext.form.field.VTypes, {
    file: function(val, field) {
        var types = ['rtf', 'pdf', 'doc'],
            ext = val.substring(val.lastIndexOf('.') + 1);
        if(Ext.Array.indexOf(types, ext) === -1) {
            return false;
        }
        return true;
    }
    ,fileText: 'Invalid file'
});

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

Конвертируем видео… в SVG

Время на прочтение5 мин
Охват и читатели27K
Так уж сложилось, что испокон веков единственный кроссбраузерный способ показать анимацию в браузере без JS — анимированный gif. Был бы у него JPEG-based аналог — и интернет мог бы быть совсем другим… Современные альтернативы, например APNG — работает не везде и со столь же небольшим сжатием, а долгожданный тэг <video> страдает от патентов.

Хочу поделится результатами моего небольшого академического эксперимента по конвертированию видео в формат SVG (которое затем при везении можно просто показать через <img src="">).

Академического — потому что проблемы кросс-браузерной совместимости далеки от решения, и потому в нынешнем виде это едва-ли где-то применимо.
SVG — это не только векторная графика, но и 3 а то и 4 метра качественного видео...
Читать дальше →

Web разработка на node.js и express. Глава 2 — тестирование приложения

Время на прочтение8 мин
Охват и читатели50K
Не прошло и полгода как я наконец добрался до написания второй главы учебника. Первую главу я тоже немного переработал с учетом пожеланий хабражителей, так что можете снова ее просмотреть — Web-разработка на node.js и express. Изучаем node.js на практике

Глава 2. Демонстрационное приложение и первые тесты



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

Adobe Edge Animation, Chrome 23 и мозговых протуберанцев пост

Время на прочтение1 мин
Охват и читатели15K
История следующая — делаем веб-проект. Заказчик хочет чтобы было красиво как на флеше, но не на флеше, потому что на айпаде надо. Ок. Берем некоего Adobe Edge (тогда ещё 0.6 ) в качестве инструмента для создания сложной анимации на js\CSS3\HTML5. Всё получается. Вау. Пока мы идём к продакшену — Edge идёт к релизу, класс!

Прошло несколько времени и вот уже Edge зарелизился. 1.0.0.0, однако!!!
Дополировываем, кладём для release preview заказчику, а в ответ: «это что ещё за ...?»

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

Lo-Dash

Время на прочтение2 мин
Охват и читатели34K
Прим. переводчика: underscore.js — одна из самых известных и любимых javascript-библиотек. Но мало кто знает, что есть её более удачный клон. В одном из своих проектов мы без каких-либо проблем перешли на него и теперь решили познакомить с ним других читателей Хабрахабра.

Lo-Dash — это полноценная замена* для Underscore.js. Lo-dash имеет более высокую производительность, избавлен от некоторых багов underscore и даёт некоторые новые возможности.


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

Ближайшие события

Отдача мелкой графики

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

Преимущества произвольных тегов, или как я отказался от HTML разметки

Время на прочтение6 мин
Охват и читатели42K
Уже какое то время использую/разрабатываю библиотеку MaskJS. Вначале использовал её только как движок для шаблонов, а со временем, она полностью заменила HTML. В статье расскажу какими преимуществами обладает компонентный подход в разработке приложений и данная реализация в частности. Если выделить по-пунктам, то мы получим приблизительно такой список:
  • Скорость
  • Обработчики тегов
  • Пре- и Пост-процессоры
  • IoC
  • Изоляция/Декомпозиция
  • Разметка — Модель — Код — Стили

Более подробно о самой библиотеке и примеры можете посмотреть здесь — libjs/Mask, a исходники тут — github/Mask
Читать дальше →

Большое обновление ObjectScript 0.99-vm3. Часть 1: Регистровая виртуальная машина

Время на прочтение7 мин
Охват и читатели6.2K
ObjectScript — новый встраиваемый и очень легкий объектно-ориентированный язык программирования с открытым исходным кодом. ObjectScript расширяет возможности таких языков, как JavaScript, Lua, Ruby и PHP. Вы можете ознакомится с первоначальным синтаксисом языка в этой статье.

ObjectScript 0.99-vm3 — новая быстрая виртуальная машина и новые возможности.

Убраны некоторые операторы, например, clone, numberof и др. заменены функциями. Последнее значение в функции возвращается автоматически. Добавлена короткая запись для доступа к членам объекта — @varname, новый короткий синтаксис для объявления функций и мн. др.
Читать дальше →

Сборка клиентских JavaScript шаблонов

Время на прочтение3 мин
Охват и читатели18K
Я много пишу на JavaScript, и если вам при работе с шаблонами, как и мне, надоело экранировать окончание строк, следить за именами шаблонов и собирать их перед каждым билдом, это решение для вас, jsttojs — утилита для прекомпиляции клиентских шаблонов в JavaScript.
Читать дальше →

Привлекательные экспериментальные плагины на JavaScript

Время на прочтение2 мин
Охват и читатели50K

Вступление


Я безумно люблю различные эксперименты на JS. Они словно позволяют заглянуть нам в будущее, и посмотреть, каким захватывающим и футуристичным оно будет. Когда вы будете просматривать приведенную подборку, вы наверняка вспомните про еще недавнего короля — Adobe Flash, а затем осознаете, насколько быстро CSS и JavaScript лишили его трона. Современные браузеры позволяют нам использовать множество различных эффектов и анимаций без сильных тормозов. Однако слово «экспериментальный» подразумевает ряд ограничений, как например некорректное отображение в некоторых браузерах (IE), кроме того, подобные плагины будут, скорее, отличным концептуальным дополнением для персональных страниц, а не для использования в больших проектах.

Meny


image

Meny — трехмерное меню, которое помимо своей визуальной притягательности еще и экономит место на экране. При наведении (или свайпе на тачскрине, что важно), меню «выезжает» с отличным эффектом.
Читать дальше →

Вышла версия 1.0.0 кросс-браузерного фреймворка для создания расширений Kango

Время на прочтение1 мин
Охват и читатели6.7K

Спустя полтора года разработки вышел финальный релиз фреймворка Kango.
С помощью Kango можно создавать расширения сразу под 5 браузеров (Chrome, Firefox, Opera, Safari, Internet Explorer) используя общий JavaScript код.
Читать дальше →

Вышел KnockoutJS 2.2.0

Время на прочтение1 мин
Охват и читатели6.9K
Steve Sanderson сообщает о релизе следующей версии knockoutjs.

Как всегда в таких случаях исправленно много ошибок, оптимизированна структура кода, настроена производительность и так далее.

О новых возможностях под катом
Читать дальше →