Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Эксперимент (https://javascript.ru/forum/project/3082-ehksperiment.html)

Андрей Параничев 16.03.2009 22:27

Эксперимент
 
Вложений: 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 16.03.2009 22:32

Я, конечно, покажусь занудой, но я ни один скрипт не пишу, не ответив на этот вопрос: а зачем? Не эксперимент зачем, а скрипт этот зачем?

Андрей Параничев 16.03.2009 22:36

Kolyaj,
Вопрос "зачем?" может привести в ловушку полной инертности и безыдейности. Но в данном случае ответ "потому что интересно".

Kolyaj 16.03.2009 22:53

Цитата:

Сообщение от Андрей Параничев
Вопрос "зачем?" может привести в ловушку полной инертности и безыдейности.

Да ладно. Заглянул в свой todo-лист, работы минимум на полгода с учетом исключения ну очень смелых идей.

Это типа то, что я делаю в свободное от всего остального время.

Андрей Параничев 16.03.2009 22:57

Kolyaj,
А зачем тебе все это делать? :)

Добавлено:
Блин, EtherPad упал.

Kolyaj 16.03.2009 23:28

Цитата:

Сообщение от Андрей Параничев
А зачем тебе все это делать?

Большинство имеют практическую цель, хотя и в основном для себя. Некоторые отчасти для самообразования. Но совсем без практических целей нет.
Вот возьмем, например, твою идею. У нее нет аудитории. Те, кто заботится о размерах и производительности скрипта, используют свое или не используют селекторы вообще. Остальные же возьмут jQuery.
Вобщем, как говорит один из сотрудников самизнаетекого, за идею 5, за реализацию 3. :) ИМХО, разумеется.

Андрей Параничев 17.03.2009 00:31

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

x-yuri 17.03.2009 08:40

Цитата:

Все более сложное — слишком сложно, более простое — слишком просто
улыбнуло :)

Kolyaj 17.03.2009 09:11

Андрей Параничев,
буду следить :)

Андрей Параничев 17.03.2009 17:59

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

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

Поскольку эмуляция этого поведения будет довольно требовательной к ресурсам, похоже, придется убить это умение в querySelector.


Часовой пояс GMT +3, время: 21:48.