Введение
Когда я пытался продвигать свой последний проект (веб-чат), я столкнулся с тем, что о нем фактически негде написать. Ситуация касается не только wiki-проектов, а вообще всего рунета. Крупные сайты ведут такую политику, что Вы не можете написать о своем проекте — Вы должны либо купить рекламу, либо о Вас должен написать кто-то еще. Если рассматривать конкретно wiki-сайты, то даже на Лурк или Викиреальность попасть проблематично, не говоря уже о таком гиганте как Википедия. Хотя потом я нашел пару небольших wiki-порталов без цензуры, для которых написал два уникальных обзора на свой чат. Они меня и вдохновили на создание свободного wiki-ресурса для IT-разработок.
Зачем писать свой wiki-движок когда есть готовые?
Ну во-первых мне это было интересно. Создать готовый сайт по шаблону в несколько кликов — скучно и не заслуживает внимания аудитории. А новая разработка со своим интерфейсом вероятно активнее будет привлекать интерес. К тому же мне кажется проще написать код под определенные задачи с нуля, взяв за основу какой-либо фреймворк для упрощения разработки, чем переделывать нагромождения чужого кода под себя.
Подробнее о wikiclick.ru
Wikiclick.ru — это свободная веб-энциклопедия об IT-разработках. Здесь Вы можете написать о своем сайте, приложении, сервисе, игре или другой разработке, например о своем фреймворке или библиотеке и Ваша статья не будет расценена как спам. А навигатор автоматически создаст древовидное оглавление для Вашей страницы по h1-h6 заголовкам. На странице с Вашим проектом также будет доступно обсуждение в виде дерева комментариев. Созданную страницу можно будет найти в журнале версий, в поиске по сайту, выборке по указанным тегам, или в соответствующем разделе, к которому относится Ваша разработка. В обзоре проекта можно ограничиться лишь небольшим описанием, а сообщество со временем дополнит статью. Также Вы можете прикрепить картинки.
Сейчас модно делать мультиязычные сайты, но прошлый проект научил меня, что я понятия не имею как продвигать сайт в другой стране, и как его модерировать, когда знаешь только технический английский, поэтому я отбросил эту идею еще на старте. Хотя, возможно, я в дальнейшем реализую мультиязычность в самом движке.
О движке WikiClick
Сервер написан тяп-ляп — много дублирующегося кода, комментарии полностью отсутствуют, а некоторые строки написаны в обход методов фреймворка, например визуализация. Но в остальном я его причесал: он отлично работает и быстро настраивается под себя (если только Вас не смущает отсутствие админки). Вся разработка WikiClick заняла у меня около месяца.
Мне нравится, каким получился движок WikiClick — он компактный, красивый, быстро работает, код сервера уложился в 1000 строк. В журнал версий новая запись идет только в том случае если страница написана с другого ip или в другой день — этот механизм позволяет сохранять все ключевые версии страницы, не набирая кучу идентичных дубликатов с правками от одного пользователя. Свои комментарии сохраняются в сессию, и пока она не истекла, их можно отредактировать. Хорошая адаптивная верстка почти сходу налезла на мобильную версию. Обсуждение в виде дерева комментариев внизу страницы кажется более удобным чем на Википедии или на Лурке (Хотя я не являюсь активным участником этих проектов и мое мнение спорное). Использование HTML-кода в содержании страниц выглядит более гибким и скорее всего будет более привычно разработчикам. А навигатор по заголовкам получился гораздо проще тех, что я нашел в интернете, и работает на стороне клиента, не создавая нагрузку на сервер. Он выполнен на jquery и подходит для повторного использования, хотя требует от автора соблюдения последовательности заголовков:
if ($('.cords').length) {
$h = 'h1, h2, h3, h4, h5, h6';
$ah = $('article').find($h);
if ($ah.length >=3) {
$('.cords').html('<div>Справка</div><ul class="level0" data-level="0"><ul>');
$ol = $('.level0');
$str = '';
$.each($ah, function(i, elm) {
if (i < $ah.length-1) {
a = $ah.eq(i).prop('tagName'); b = $ah.eq(i+1).prop('tagName');
}
$(this).html('<selection id="H'+i+'">'+$(this).html()+'</selection>');
$str += '<li><a href="#H'+i+'">'+$(this).text()+'</li>';
if (i < $ah.length-1 && a>b) $str+='</ul>';
if (a<b && !(a=='H1' && b=='H2')) $str += '<ul>';
if (i == $ah.length-1) {
for (i = parseInt($(this).prop('tagName').substring(1)); i>=3; i--) {
$str += '</ul>';
}
console.log($str);
$ol.html($str);
}
});
}
}
P.S.: надеюсь, мой велосипед смог Вас заинтересовать (будем считать это бета-тестом).
Ссылки
wikiclick.ru
Проект на GitHub
Germanjon
Опыт показывает, что ресурсы (вики, форум) «обо всём» плавно превращаются в помойку, на которой Вася из Тамбова пишет «я сделал свою игру быки и коровы», а Коля из Сургута начинает гадить внутри статьи и рекламировать свой «хомяк на народе».
Рано или поздно, на таком ресурсе становится некомфортно и приходится вырабатывать свод правил, добавлять модераторов и включать репрессии.
Как планируется избежать подобного вектора развития?
4eckme Автор
У меня принимаются все разработки.