Эксперимент
Вложений: 1
Вздумалось мне провести один эксперимент, связанный с разработкой одного маленького проекта на JavaScript.
Суть эксперимента в том, что разработка будет вестись открыто, причем настолько открыто, что абсолютно любой желающий может ввести правки и комментарии в исходные коды в режиме "realtime". Это будет обеспечиваться сервисом EtherPad, который, кроме всех прочих прелестей, поддерживает подсветку синтаксиса языка JavaScript. Сама разработка будет происходить по адресу http://etherpad.com/seek. Там, в режиме realtime, будут вводится правки и разрабатываться код. Любой желающий может выбрать себе имя, редактировать содержание и даже сохранить свою правку. Справа есть внутренний чат, в котором можно общаться с тем, кто в данный момент просматривает/редактирует страницу. В связи с тем, что все действия доступны любому, прошу выбирать себе ник, по которому вас можно идентифицировать, и внося правки — указывать свой ник в комментарии. Если вы хотите внести правку или замечание - напишите комментарий прямо в коде, с обязательным указанием ника, в формате: /** * paranichev: какой-то комментарий. */ Если какое-то место уже прокомментировано, сделайте пустую строку и начните свой комментарий, если вы хотите внести к нему поправку/замечание. Общие замечания лучше оставлять в комментарии в самом начале скрипта, чтоб было заметнее. Если поправили код и сохранили правку - отпишитесь и там, кстати, желательно правкам тоже давать осмысленные названия. И сохраняйте, пожалуйста, хронологический порядок правок и комментариев. Итак, о самом проекте. Я решил написать простейший движок CSS-селекторов, которые будут даже не CSS1 совместимы: поддерживаются только селекторы по имени тега, идентификатору и имени класса, причем только в одном направлении (без конструкций "+", "<"). Скрипт должен работать кросс-браузерно, причем использовать возможности querySelector и XPath, если они доступны в браузере пользователя. Размер конечного скрипта должен быть меньше 5 Кб. Теперь о тестировании. Чтобы разработка не ушла в дебри, весь скрипт будет покрыт тестами, которых, правда, пока что — нету. Но уже есть небольшая библиотека в приложении к этому сообщению. Если есть желание предложить какой-то тестовый случай, то файл с тестами будет находится тут — http://etherpad.com/seek-tests. Можно вносить правки и комментарии, как и в случае самого скрипта. В файл lib/seek.js (из приложения) нужно будет скопировать содержание скрипта seek, в файл tests/seekTests.js — содержание тестов, по ходу изменеий этих файлов. Если у вас есть возможность запустить тесты, то отпишите в комментариях к скрипту seek (если таких комментариев там еще нет), что "в таком-то браузере провалились такие-то тесты". Это поможет сохранить кросс-браузерность и тестировать переписанный код. Как идея? Если что-то из этого выйдет, все участники будут упомянуты в "special thanks" или в копирайтах, в зависимости от общего количества участия. Лицензия будет свободная. Добавлено: Подсветку включать в блоке справа "options", самая последняя галочка "highlight JavaScript syntax". |
Я, конечно, покажусь занудой, но я ни один скрипт не пишу, не ответив на этот вопрос: а зачем? Не эксперимент зачем, а скрипт этот зачем?
|
Kolyaj,
Вопрос "зачем?" может привести в ловушку полной инертности и безыдейности. Но в данном случае ответ "потому что интересно". |
Цитата:
Это типа то, что я делаю в свободное от всего остального время. |
Kolyaj,
А зачем тебе все это делать? :) Добавлено: Блин, EtherPad упал. |
Цитата:
Вот возьмем, например, твою идею. У нее нет аудитории. Те, кто заботится о размерах и производительности скрипта, используют свое или не используют селекторы вообще. Остальные же возьмут jQuery. Вобщем, как говорит один из сотрудников самизнаетекого, за идею 5, за реализацию 3. :) ИМХО, разумеется. |
Kolyaj,
Ну по крайней мере я сам буду пользоваться, а вообще, практической цели изначально не было. Мне просто не пришло ничего другого в голову, когда я подумал о разработке в таком формате. Все более сложное — слишком сложно, более простое — слишком просто. |
Цитата:
|
Андрей Параничев,
буду следить :) |
Покрыл написанную часть тестами (напоминаю, тесты тут), и уже выявил много ошибок и несовпадений.
Например, для меня явилось откровением, что querySelector избавляет от пересечений в результатах. Если у нас несколько селекторов, перечисленных через запятую, возвращают один и тот же элемент, то в результатах он появится только первый раз. Поскольку эмуляция этого поведения будет довольно требовательной к ресурсам, похоже, придется убить это умение в querySelector. |
У меня js не подсвечивается. Что я не так делаю?
|
Kolyaj,
В опциях справа галочка в самом низу. |
Часовой пояс GMT +3, время: 23:39. |