26.04.2012, 21:54
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Collection – фреймворк для управления данными
Всем привет!
Хочу представить всем свою разработку (хотя уже как то представлял давно, но тема забилась оффтопом).
Данный фреймворк даёт очень мощное и гибкое АПИ для управлениями данными, в принципе есть всё, чтобы использовать, как полноценную СУБД.
Краткий список возможностей: - Копирование, перемещение, удаление, слияние, сортировка и группировка;
- Статистические функции;
- Запросы по сложным фильтрам;
- Хранение данных в DOM Storage;
- Пространства имён;
- DOM шаблонизатор;
- Интерпретатор SQL.
Фреймворк написан на чистом JavaScript, однако для работы с DOM он использует сторонние библиотеки (для поиска узлов), из коробки есть поддержка: jQuery, DoJo, Mootools, Prototype, QSA (надеюсь Devote не против ), Sizzle. Хотя расширить этот список не составит труда.
Сфера применения огромна: например используя Collection можно за пару дней написать очень мощный табличный процессор, оффлайн БД для настольных приложений и т.д.. Сейчас я занимаюсь одним стартапом, где пробую свой велосипед на сервере (node.js), как основную СУБД, также Collection используется в некоторых сервисах Yandex.
Имеется подробный мануал и документация на сайте проекте: http://www.collection-js.com
Сама либа: http://www.collection-js.com/files/c...lection.min.js
Github: https://github.com/kobezzza/Collection
Чтобы понять, что же это такое, рекомендую прочитать: http://www.collection-js.com/manual/part-1.html
С уважением, Андрей!
ЗЫ: просьба не разводить холивар и оффтоп.
Последний раз редактировалось kobezzza, 28.10.2012 в 20:50.
|
|
27.04.2012, 22:45
|
|
Модератор Всея Форума
|
|
Регистрация: 14.05.2009
Сообщений: 4,021
|
|
Сообщение от kobezzza
|
надеюсь Devote не против
|
Думаю, он будет только рад
Какие заметные отличия от похожего инструмента Follow.js?
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф
|
|
27.04.2012, 23:32
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Сообщение от B~Vladi
|
Какие заметные отличия от похожего инструмента Follow.js?
|
В коридор выйдите оба и поговорите. Вы в соседних комнатах сидите
|
|
27.04.2012, 23:33
|
|
Модератор Всея Форума
|
|
Регистрация: 14.05.2009
Сообщений: 4,021
|
|
Сообщение от Kolyaj
|
В коридор выйдите оба и поговорите. Вы в соседних комнатах сидите
|
Он сейчас в отпуске
Да и другим, возможно, интересно
Кстати, чувак, который это делал, рядом со мной сидит.
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф
|
|
27.04.2012, 23:45
|
|
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
Сообщение от Kolyaj
|
В коридор выйдите оба и поговорите. Вы в соседних комнатах сидите
|
Ты сделал мою ночь)
|
|
28.04.2012, 00:07
|
|
Модератор Всея Форума
|
|
Регистрация: 14.05.2009
Сообщений: 4,021
|
|
Сообщение от trikadin
|
Ты сделал мою ночь)
|
Эмм, переведи?
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф
|
|
28.04.2012, 00:15
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Сообщение от B~Vladi
|
Какие заметные отличия от похожего инструмента Follow.js?
|
Не знал про данную либу, посмотрел, интересно Но всё же у нас с ней мало чего общего, т.к. у меня основной упор делается именно на управление данными (т.е. я действительно очень серьёзно к этому подошёл, возможны перекрёстные ссылки, лимитируемость, группировки и т.д.), а не на их представление.
Изначально, когда я начинал писать свой Collection, мне нужен был только общий интерфейс стандартных методов для массивов и объектов, затем меня увлекла идея написания своей СУБД на JS, которая могла бы работать как на клиенте, так и на сервере.
Пример некоторого запроса на моём Collection:
// создадим новую коллекцию (структура может быть любой)
var db = new Collection({
users: [
{name: 'Андрей', age: 22},
{name: 'Вася', age: 25},
{name: 'Гоша', age: 19},
{name: 'Петя', age: 27},
{name: 'Стас', age: 23}
],
nmb: [1, 2, 3, 4, 5]
});
// запросим данные из кластера users о всех людях старше 20-ти и моложе 25-ти
// затем сохраним данные в новую коллекцию в стеке (назовём test) и назначим её активной
db.get('users >> :el.age > 20 && el.age < 25', '>>>test');
// теперь отсортируем по полю name
db.sort('name');
Чтобы понять что за магия с символами и т.д. достаточно прочитать мануал: http://www.collection-js.com/manual/part-1.html (там 10 глав, не более 30-ти минут чтения).
Я потратил на разработку сего чуда почти 3 года и последние 2 месяца трудился над мануалом и докой, хотелось бы услышать критику что ли) Ну а так, на следующем js meetup я уже обязательно про неё расскажу сам)
ЗЫ: завтра я уже выйду на работу, т.к. отпуск брал только на 5 дней)
Последний раз редактировалось kobezzza, 28.04.2012 в 00:22.
|
|
28.04.2012, 00:32
|
|
Модератор Всея Форума
|
|
Регистрация: 14.05.2009
Сообщений: 4,021
|
|
Ну на следующем митапе я тоже собираюсь рассказать про свой адский шаблонизатор.
Вообще, идея агрегирования обработки данных мне понравилась, пугает только синтаксис запросов - далеко не самый низкий порог вхождения. Например мне не понятно почему при первом вхождении el используется двоеточие, а потом нет?
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф
|
|
28.04.2012, 09:17
|
|
猫
|
|
Регистрация: 07.06.2007
Сообщений: 7,504
|
|
Сообщение от B~Vladi
|
почему при первом вхождении el используется двоеточие, а потом нет?
|
Я по началу думал, что:
чтобы найти в строке управляющую конструкцию, а затем её просто запоминаем и нет нужды указывать двоеточие дальше.
А затем натолкнулся на вот эту строку:
'(:el.sex == "female" && el.age > 18) || (:el.sex == "male" && el.age < 30)'
А потом я наткнулся на такую строчку:
':el == <:i:>'
Может я не нашел, но в учебнике напрочь отсутствует сгруппированное объяснение всех этих конструкций: ':el', '<:i:>'
и принцип парсера строки(как например в доке mysql) или просьба ткнуть меня носом.
Ещё у меня вопрос:
collection умеет работать с типами: "дата","время"?
По возрасту и прайсам всё понятно, 12 и т.д. целые числа, а по сложнее, с плавающей точкой например или дата и время?
зы: смотрел быстро, мог не найти где это описано, но я не нашёл.
зы2: по ссылке( ) ходил, не дошло про магию с символами.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
Последний раз редактировалось Gozar, 28.04.2012 в 09:20.
|
|
28.04.2012, 09:22
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Сообщение от kobezzza
|
где пробую свой велосипед на сервере (node.js), как основную СУБД
|
А как это на сервере работает? Всё в памяти хранится?
|
|
|
|