Re: Codepedia :)
От: buriy Россия http://www.buriy.com/
Дата: 26.09.05 11:39
Оценка:
Здравствуйте, Зверёк Харьковский, Вы писали.

Давайте посмотрим на уже имеющиеся реализации, в меру собственных возможностей.

Например, я пользуюсь периодически ActiveState Python CookBook.
http://aspn.activestate.com/ASPN/Cookbook/

В связи с этим прокомментирую ваши мысли:

ЗХ>Единица хранения

ЗХ>Один snippet — это некий набор единиц языка (классов, функций), не зависящий от сторонних библиотек (кроме стандартной библиотеки данного языка), служащий однозначно формулируемой цели, и могущий быть использованным "как есть", без переделки.
IMO, Snippet не должен быть больше одной функции по размерам. Ни в коем случае не C++-проект, как на CodeProject!!!
Все, что больше одной функции — называется "библиотекой" и должно удовлетворять всем требованиям библиотеки.

ЗХ>Поскольку однозначного имени (по которому любой программист его найдет) snippet'у дать нельзя, ему дается краткое описание и набор тегов (соответственно, поиск сниппета на сайте — отбор по тегам).

IMO, описание должен исправлять только модератор, набор тегов — любой желающий (с постмодерацией).

ЗХ>Редактирование snippets

ЗХ>Редактировать сниппет может кто угодно.
IMO, редактировать сниппет должен создатель (прочитав комментарии) или модератор, или доброволец, при необходимости.
ЗХ>Для редактирования сниппета сайт должен предоставлять полноценный редактор кода (подсветка, автоотступ, сворачивание веток, autocomplete стандартной библиотеки).
Последнее требование сводит на нет возможность реализации в обозримом будущем всей затеи.
Возможно, лучше было бы автовыравнивание по выбранным стандартам кодирования при отправлении кода.
ЗХ>Необходимо ввести сниппет и юнит-тест на него (код выполняющий проверку корректности сниппета и одновременно — демонстрацию его возможностей).
IMO, юнит-тесты в случае "snippet порядка размера функции" не нужны вообще — ведь любой может откомментировать snippet и указать его ошибки и на что исправить этот код.
ЗХ>После этого сервер выполняет проверку.
На хостинге компиляторы размещать?
ЗХ>Проверяется: синтаксис и компилируемость кода, стиль (на сервере существуют некоторые правила, типа длины имен переменных и прочая); выполняется юнит-тест. Результатом выполнения юнит-теста является список тестов, которые код прошел/не прошел, а так же (в идеале) покрытие кода тестами (какие классы/функции в выполнении юнит-теста задействованы не были).
ЗХ>Код, не прошедший проверку на компилируемость, запостить нельзя. Код, не прошедший критические тесты, запостить нельзя. Код, не прошедший некритические тесты, запостить можно, в каталоге он будет показан как "сниппет такой-то — проходит 80% тестов".
Это был план развития сайта на следующие 10 лет
А вот из того, что можно быстро осуществить — это рейтингование snippets и возможность рейтингования комментариев как "важных".
IMO, комментарии обязательны и желательно должны быть древовидными. Из-за линейности комментариев и присутствующего там флейма и оффтопика потом ничего не разобрать.
ЗХ>Поиск и выбор snippets
ЗХ>Поиск идет по тегам и просто через поисковую систему. [далее пропущен тяжелоосуществимый бред]
IMO, хороший поиск и индексирование сайта поисковыми системами обязательно.
Также обязательным является кластеризация. Она не обязательно должна быть навороченной, главное, чтобы она стремилась к тому, что один snippet попадал в одну категорию. Так, для начала разделов 5 будет вполне достаточно.
В этом плане юзабилити koders.com и ru.livecode.org очень низкое, что и определяет степень их использования разработчиками. Сайт, который будет активным, должен быть открытым и для поисковиков.
Обязательно должна быть возможность прийти на сайт из интернета, набрав в поисковике нужный запрос, и попасть сразу на страницу примера. Пример: поищите в google "php open file" — наглядный пример, как все должно работать.
Еще пример. RSDN подкачал. Пример: поищите "rsdn getdllversion" или "site:www.rsdn.ru getdllversion" — и где тут сообщения могучего форума RSDN по данной теме? Более того, отмазка "ищите в поиске на rsdn" оказывается неконструктивной. Я пользуюсь каждый день как минимум десятком сайтов. Стоит ли мне запоминать, в каком месте на каждом сайте расположен запрос поиска, и потом мучиться с его убогой, или просто особенной сортировкой в результатах выдачи? (Честно говоря, именно из-за плохого поиска и появляются сообщения, которые уже на 20 раз обсуждались — человеку проще задать вопрос, чем найти его)

ЗХ>Административное устройство

ЗХ>По всей видимости, кроме модераторов (чья функция — как всегда — пресекать хулиганство и вандализм) нужны maintainers (добровольцы-энтузиасты), которые станут более-менее регулярно просматривать новые и измененные сниппеты, выбрасывать никому-не-нужные, рефакторить плохо-написанные и т.п.
IMO, maintainers — это и есть модераторы, а твои модераторы — это администраторы...

ЗХ>На закуску — проблемы реализации

ЗХ>Крутейшая среда с рефакторингом и веб-интерфейсом, серверная, выдерживающая дикие нагрузки — это не шубу в трусы заправить. Других проблем не видать Возможно, нагрузку можно каким-то образом перенести на клиента (скачивается программа, в которую уже встроен редактор; каким-то образом полагаться на установленный у клиента компилятор, и т.п.). JetBrains, ау?!
Это был самый настоящий бред. Советую поискать бритву Оккама, она должна у вас быть где-то поблизости.
IMO, форма с подсветкой кода и автовыравниванием после нажатия кнопки "preview" будет смотреться замечательно.
А легкий submit без обязательной постмодерации (но только для зарегистрированных пользователей!) — необходимое условие для быстрого пополнения сайта.
/bur
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.