Русский
Русский
English
Статистика
Реклама

Wiki

От небольшого вики-портала до хостинга

13.09.2020 06:20:51 | Автор: admin

Предыстория


Я как-то пытался создать статью на паре вики-проектов, но их потерли так как они не имеют энциклопедической ценности, и вообще походу если ты пишешь о чем-то новом и неизвестном это принимается за пиар. Через некоторое время моя статья была удалена. Я сначала расстроился, но в обсуждении для меня было приглашение на другой небольшой вики проект обо всем (а потом мне предложили написать статью еще для одного сайта). Я о нем никогда не слышал, но все равно был рад написать статью для сайта, которым кто-то занимается. Кстати оба проекта обновляются, есть в поиске и их читают для меня это было достаточно чтобы написать обзор на свой проект. Оба сайта кажется были на движке MediaWiki или каком-то похожем, и внешне походили на любой другой популярный вики-портал.

От вики-сайта до вики-движка


image

С тех пор стало интересно сделать тоже вики-сайт с упором на IT-проекты ведь это было бы привлекательно для многих людей, которые хотят рассказать о своем продукте. И еще я хотел сделать свои уникальные структуру сайта и оформление, которые могли бы подойти для многих других проектов. После того как сайт был готов, я сделал админку и выложил код на Гитхаб. В первую очередь потому, что об open source проекте можно написать, и сделать его не простым каталогом сайтов; к тому же я был бы рад, если кто-нибудь захотел бы сделать сайт на моем движке.

Попытка заделать хостинг


К сожалению мало кто будет выбирать вики-движок для node.js, большинство веб-мастеров предпочтут то, с чем уже имели дело, а это PHP, к тому же под PHP настроены большинство существующих хостингов. А для node.js пришлось бы арендовать VPS.

Мне очень хотелось сделать свой продукт более доступным. Идею вики-хостинга подал Фэндом. Вики-хостинг сделал бы мой движок доступным для гораздо большей аудитории, а также это выделило бы его среди сотен других (действительно сотни одних только cms для wiki). Я написал скрипт ghost.sh, который поднимает портал на новом домене (создает рабочий каталог для сайта, копирует в него дефолтный код движка, создает базу данных с пользователем и паролем, настраивает для всего этого права доступа), а также в админку добавил ссылку на cloud commander, который предоставляет доступ к файлам из рабочего каталога сайта для чтения и записи. Остается только прописать ручками в DNS-менеджере новый домен, и добавить его в запуск в основном скрипте. Собственно хостинг пока на стадии бета-версии возможно у первых клиентов будут некоторые ляпы в первое время запуска. (Вообще у меня раньше никогда не было опыта по созданию такого проекта как хостинг, возможно я некоторые вещи сделал неправильно или плохо, но у меня стартовал запуск первого сайта на движке (сайт для хостинга) и он замечательно работает, и я даже сегодня залил на него обновления)
image

Результат


Но в целом очень привлекательно:

  1. Создать сайт на моем хостинге может даже далекий от веб-разработки человек;
  2. Мониторинг активности на главной странице;
  3. Есть картинка-превью для страниц;
  4. Красивое оформление, в том числе для мобильных;
  5. Адаптирован к поисковикам;
  6. Полностью на русском языке;
  7. Быстрая загрузка страниц;
  8. Простая админка, включая доступ к файлам движка из рабочего каталога (прямо из браузера, CloudCommander);
  9. Простой код сервера (чуть более 1000 строк, код клиентских скриптов около 500);
  10. Можно вносить правки в исходники;


Сразу напишу чего на данный момент не хватает, что может вас оттолкнуть, чтобы вы зря не тратили время. Возможно некоторые из пунктов будут реализованы в ближайшее время.

  1. Нет регистрации пользователей и делегирования прав доступа. Публикация после ввода капчи.
  2. Дерево пользовательских комментариев к страницам может быть недоступно к индексации из-за ajax.
  3. Если Вам нужны какие-то уникальные служебные функции, возможно их нет. Но базовый функционал реализован полностью.


PS


Движок называется WikiClick, официальный сайт с хостингом wikiclick.ru. Код проекта на GitHub.
Подробнее..

Можно ли улучшить поиск сложных товаров в интернет-магазинах (или Яндекс Маркете)?

17.01.2021 10:16:16 | Автор: admin

Возможно, те кто постарше, еще помнят price.ru. Вот и я еще помню те времена, когда Яндекс Маркета не было вообще. И даже был период, когда я пытался делать аналог price.ru для американского заказчика, и при этом amazon.com был у нас всего-лишь одним из многих сайтов - источников сведений о товарах (книгах, CD-ROM и т.п.), при том не самым крупным, и еще был живой yahoo... В общем, с тех пор многое изменилось.

Потом появился Яндекс Маркет, сильно вырос Амазон, и скажу прямо - много лет я использовал их как основной инструмент для поиска нужных мне товаров. А теперь вот подумываю, не уйти ли куда-то, на e-katalog скажем (шутка, там свои проблемы)? Или найти другое решение, получше?

Почему, спросите вы? Ну, в первую очередь потому, что поиск. Поиск категорически перестал меня устраивать.

Попробуем описать для начала, с какими проблемами я сталкивался при поиске. Яндекс Маркет тут будет как пример, но многое из описанного касается и других похожих сайтов (Амазон - первый же кто приходит на ум, и там все почти так же плохо).

Как выглядит поиск здорового человека? Ну, как-то вот так наверное :)

Если что, это реальный скришнот с мобильного приложения Маркета, сделанный с год назад. Сочетание страницы про IPhone и фото циркулярки от DeWalt сделало тогда мой день. Ну ок, это был баг, его исправили, так что забудем про это и вернемся к реальному поиску и его результатам.

Я буду использовать в качестве примеров поиск инструмента, как ту область, которая мне близка и понятна. В области компьютерного железа, да и пожалуй, в любой другой области, где есть технически сложные товары, мы будем видеть плюс-минус тоже самое.

Начнем с того, какие на мой взгляд, бывают интернет-магазины?

  • Узко специализированные. В нашем случае это например магазин Рубанков, инструменты и прочие товары для столярки. Его отличает от прочих то, что там знают о существовании компаний-производителей японского ручного инструмента Silky, или известнейшей канадской инструментальной компании Veritas. И продукция этих производителей не просто есть на сайте, но и, как правило, в наличии. Специализация не значит, что тут вы найдете все - скажем, инструмент элитного уровня от производителя Bridge City вы вообще в РФ скорее всего не купите. Но тем не менее, тут есть многое.

  • Просто специализированные. Это например Все Инструменты. Тут вы тоже сможете найти товары от той же Silky - но в наличии только одна пилка (из обширного ассортимента в десятки моделей).

  • Не специализированные. Ну это просто Яндекс Маркет, и большинство тех, кто продает на нем. Магазины из двух предыдущих пунктов тут тоже представлены, но структура каталога - от Маркета. Так вот, в нашем конкретном случае Маркет вообще не знает о существовании таких производителей, как Silky или Veritas, и даже если товар (скажем пилу) вы сможете найти - то не через каталог и выбор производителя. А поиск по Veritas приведет вас в лучшем случае к швейным машинкам.

В чем состоят проблемы неспециализированных магазинов при поиске товаров любого относительно узкого сегмента? Ну, наверное проблем тут больше одной, опишу их как я вижу.

Во-первых, это отсутствие специалистов именно в узком сегменте, которые бы детально разбирались в товаре. При этом слово "узкий" не следует понимать буквально, потому что узкий сегмент инструмента, к примеру, это на самом деле широчайший ассортимент, которые растет и меняется каждый год. И который производят как известные солидные фирмы, так и мелкие (в основном китайские) фирмочки. Результат - неполные и неточные описания товаров.

Во-вторых, типовая, уже скорее техническая проблема - это отсутствие уникального идентификатора у товара. Очень часто один товар продается в разных комплектациях. Компьютер в памятью 8 или 16 гигабайт из коробки, инструмент в картонной коробке или кейсе, с теми или иными дополнительными приспособлениями либо расходкой. При этом в сущности, это одна и та же модель - но стоимость дополнительной расходки, кейсов, памяти и пр. вполне может составлять значительную часть цены. Эта проблема приводит к дублированию позиций в поиске, и затрудняет выбор лучшего предложения.

Ну и наверное третья - небольшая глубина и ширина каталога в специализированных разделах. Скажем, при том что в Яндекс Маркете есть 14 (sic!) типов ручных рубанков - там все равно нет например грунтубелей. Ну т.е. даже если у продавца такой появится - в поиске он все равно будет валяться в общей куче (то, что в Яндекс Маркете при этом в основном вообще одна китайская дешевка - это отдельная история, тут я бы винил скорее покупателей, что лучше берут - то и в продаже).

Таким образом, мы имеем, с одной стороны, объяснимый недостаток специалистов, которые разбирались бы в товаре, его пользовательской ценности, комплектации, отличиях моделей друг от друга, а с другой - кучу этих самых моделей, которые отличаются непойми чем. На выходе получается тоже довольно странно. Вот например это - фрагмент моих закладок:

Что мы тут видим? Яндекс Маркет знает, что был вот такой товар, Bosch Biturbo GKT 18V-52 GC бла-бла-бла (в конце концов, я же как-то его в закладки поместил, правда?). И он раньше продавался, а теперь (в этом магазине) не продается. Но он был, и Маркет знает про него достаточно, чтобы его найти. В теории... а попробуем найти реально?

Я не буду приводить вам полный скриншот результатов поиска, они длинные.

Что мы тут видим? Мы видим, что именно этого товара в списке результатов нет. А есть куча других, которые сюда попали не иначе, как по недоразумению. Ну то есть, с одной стороны - в списке куча пил, в названии которых встречается 18V или 18В. С другой - вот на третьей позиции пилка от Bosch на 12 вольт. С третьей - есть пилы сетевые. Есть Bosch PRO и Bosch DIY (несовместимые друг с другом). Есть вообще другие производители. Но самое смешное то, что в длиннющем списке есть лишь одна сетевая погружная пила, которая реально является аналогом искомого товара - на восьмом месте в списке. Ну т.е. на 99% результаты поиска - мусор.

Если вы вдруг не заметили: оно ищет по 18V. А по слову the в английском тексте они не пробовали искать? Нашли бы намного больше :) Где же ваш ИИ, в конце концов?

Решение?

Главный вопрос - что с этим можно сделать? Если бы директором был я (с), то я бы пошел по пути, который давно опробован (скажем, в картах), и пусть не идеально, но работает. Пусть у вас (а в данном случае у вас - это ни у кого) нет специалистов, которые глубоко разбирались бы в товарах, зато у вас есть сообщество. И это сообщество как раз разбирается - ну хотя бы настолько, насколько ему это нужно. Следует сделать так, чтобы каталог товаров был устроен наподобие wiki. И дать возможность пользователям самим расширять и исправлять характеристики товаров.

Сейчас некоторые карточки товаров уже отличаются от других. Вот конкретно эта - предложение магазина itUnite:

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

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

Одна из вещей, которые сообщество могло бы сделать - это как раз убрать это дублирование, т.е. отметить в каталоге, что вот эти карточки - это комплектации или предложения одного и того же товара. Вторая - это занести в каталог такие малоизвестные :) фирмы, как канадская Veritas, или Lee Nielsen, научить софт различать японские пилы катаба и дозуки, и учитывать многие другие тонкости. По сути - пополнять и исправлять каталог на постоянной основе.

Вернемся еще раз к нашей Bosch Biturbo GKT 18V-52 GC. Почему сегодня результаты поиска нерелевантны? Потому что они очевидно не учитывают один из признаков этой пилы - она погружная. Т.е. мы можем нажать на рукоятку, и погрузить диск в материал. Все пилки с префиксом GKS этого не умеют, так что аналогом не являются. С другой стороны, есть ли у найденных товаров что-то общее? Да, есть - у некоторых. Буковка G в обозначении пилы показывает, что пила умеет работать по направляющей шине. Т.е. GKT 18V-52 GC умеет, и GKS 18V-57 G тоже. И как ни странно, но умеет и GKS 12V-26 - хотя в обозначении этого признака в виде буковки тут G нет. Что-то из атрибутов можно было бы извлечь, применяя методы типа машинного обучения, NLP и т.п. Но проще всего - доверить это сообществу.

Дав конечному пользователю возможность редактировать атрибуты, можно было бы позволять ему добавить к некоторым из этих товаров аттрибут "погружная", или атрибут "работа по шине". Что характерно - если попробуете сейчас эти свойства найти в описании, то вы их не найдете. На самом деле все еще чуть сложнее, потому что есть разные типы шин, и лишь некоторые из них совместимы, так что работа по шине - это на самом деле тип поддерживаемой шины, от которого мы приходим к моделям самих шин, и уже к их атрибутам).

Ну и добавив атрибуты, нужно сделать возможным потом по ним искать, естественно. Понятно, что дать редактировать описания и заголовки тоже было бы неплохо. Тогда не было бы таких карточек товаров, как вот эта:

Проблема тут в том, что это не плитка. На ней нельзя готовить, ее даже нельзя поставить так, чтобы нагреваемая поверхность была горизонтальна. При этом в отзывах (год назад) это уже было явно написано. И что вы думаете, хоть кто-то озаботился тем, чтобы поправить заголовок? Только сообщество, на мой взгляд в состоянии такое привести в нормальный вид.

Что еще можно и нужно улучшить?

Стоит заметить, что редактировать сообществу нужно позволять не только атрибуты, но и метаданные о них (тип данных, по сути), потому что сегодня органы управления поиском - это отдельная боль. Скажем, как выглядит чекбокс курильщика? А вот он:

В чем тут проблема? В том, что выбор между аккумуляторным и сетевым инструментом не сводится к "покажите мне только аккумуляторные". На самом деле - это выбор из трех вариантов, только аккумуляторные, только сетевые, и мне все равно. Самое смешное, что зайдя в какой-нибудь соседний раздел вы имено такой набор из двух чекбоксов (или трех радио) и увидите. А почему тут иначе? А фиг его знает. Кто-то когда-то так решил - и все.

И это я еще на начал вспоминать о том, то бывают инструменты, умеющие работать как от сети, так и от аккумулятора. Скажем, из того что сразу пришло в голову - пылесос DeWALT DCV582.

Замечу так же, что если в основу разметки атрибутов положить что-то типа RDF, и некоторые атрибуты сделать URI, то можно было бы легко делать связи между товарами, скажем, принтером, и его расходниками, лобзиком и пилками для него, ну и так далее. Причем связи типизированные, не просто "см. также", а именно для этого инструмента подходят вот такие аккумуляторы.

В общем-то, такое решение это совсем не новость, его можно посмотреть, взглянув скажем на JIRA (я тут говорю не только про связи между страницами, но и про набор полей, и их вид). Ну то есть, в природе существуют продукты (правда, сделанные совсем для других целей), которые позволяют настраивать UI под себя, в зависимости от того, что именно мы показываем, и весьма гибко.

Выводы

Для начала, хочу отметить, что все что выше описано, не является проблемами, специфичными именно для Яндекс Маркета. Скажем, поиск Амазона в аналогичных ситуациях ведет себя ничуть не лучше, и знание Амазона о производителях тоже оставляет желать. Что с упомянутым e-katalog? Ну тут ситуация чуть другая, судя по всему (я вижу лишь то, что я вижу снаружи) тут за сайтом стоит именно и только пополняемый каким-то способом каталог моделей, поэтому части проблем либо нет, либо они иного сорта. Реально он меня больше устраивает в ряде специфических ситуаций, когда нужно найти не "что-то вроде вот этого", а "конкретно вот это, и если можно - подешевле". Но ассортимент, а в итоге объем и глубина каталога тут явно меньше, поэтому шансы найти что-то редкое вообще стремятся к нулю.

Понятно, что у меня нет готового решения. Это лишь предложения, основное из которых - отдать часть работы по поддержке каталога товаров сообществу, раз уж все равно поддержка того же Яндекс Маркета/Амазона с этой работой явно не справляется. Прекрасно представляю все сложности реализации такой идеи на готовом продукте. Но мне кажется, этот путь - чуть ли не единственно возможный путь реального наполнения интернет-каталога знаниями о реальных товарах.

Подробнее..

Из песочницы Свободная веб-энциклопедия для любых IT-проектов на собственном движке

06.08.2020 02:22:56 | Автор: admin

Введение


Когда я пытался продвигать свой последний проект (веб-чат), я столкнулся с тем, что о нем фактически негде написать. Ситуация касается не только wiki-проектов, а вообще всего рунета. Крупные сайты ведут такую политику, что Вы не можете написать о своем проекте Вы должны либо купить рекламу, либо о Вас должен написать кто-то еще. Если рассматривать конкретно wiki-сайты, то даже на Лурк или Викиреальность попасть проблематично, не говоря уже о таком гиганте как Википедия. Хотя потом я нашел пару небольших wiki-порталов без цензуры, для которых написал два уникальных обзора на свой чат. Они меня и вдохновили на создание свободного wiki-ресурса для IT-разработок.

Зачем писать свой wiki-движок когда есть готовые?


Ну во-первых мне это было интересно. Создать готовый сайт по шаблону в несколько кликов скучно и не заслуживает внимания аудитории. А новая разработка со своим интерфейсом вероятно активнее будет привлекать интерес. К тому же мне кажется проще написать код под определенные задачи с нуля, взяв за основу какой-либо фреймворк для упрощения разработки, чем переделывать нагромождения чужого кода под себя.

image

Подробнее о 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
Подробнее..

Мистер X или стоит ли небольшой команде рассмотреть XWiki как возможную замену Confluence?

07.02.2021 02:13:24 | Автор: admin

Если я всё правильно понимаю, в феврале 2021 года Atlasian прекратил продажу серверной версии Confluence.

On February 2, 2021 Pacific Time (PT), the following changes will go into effect:

- End of new server license sales:You can no longer purchase or request a quote for a new server product.

- Updates to server prices:We will implementnew prices for server renewals and upgrades.

Получается, что отныне для серверной версии нельзя получить новые лицензии, в том числе пробные. И вроде бы ничего страшного, есть бесплатные облачные версии для команд размером до 10 человек. Также можно получить лицензию на версию Data Center. Но что делать, если оба эти варианта не приемлемы?

Требования

Поскольку в моём случае, требования к пространству для документации были не очень высокие, а команда не превышала 25 человек, было принято решение посмотреть в сторону бесплатных альтернатив. После изучения примерно 20 Wiki систем (и не только) наиболее интересной заменой для Confluence мне показалась Xwiki.

В этой статье я кратко рассмотрю способность XWiki заменить для нас базовый функционал Confluence.

На мой взгляд Confluence весьма популярный бренд, претендующий на позицию "стандарта" для портала корпоративной документации. Поэтому возможны случаи, когда люди просто хотят привычный инструмент, не зависимо от реальных потребностей в функционале, это может затруднить переход на другую вики систему.

В нашем случае по факту нужен был весьма скромный набор требований:

  • бесплатность (или низкая стоимость);

  • возможность установки на свой сервер;

  • русификация;

  • удобное редактирование контента (WYSIWYG или Mardown);

  • шаблоны страниц;

  • повторное использования контента;

  • настройки внешнего вида;

  • история версий;

  • аннотации или комментарии к тексту;

  • управление доступом к страницам для пользователей и групп;

  • возможность со временем установить расширения если понадобится.

По факту данный набор требований могут удовлетворить разные решения для документирования. Но судя по порталу Xwiki, она позиционируется именно, как opensource альтернатива Confluence. Поэтому выбор пал именно на неё. Кстати почетное второе место в списке заняла BlueSpice MediaWiki, но мне показалось, что там в бесплатной версии количество доступных расширений меньше.

Установка

На текущий момент для загрузки доступны две версии Xwiki:

  • Stable - включает более новый функционал, но менее стабильна. Цикл обновления примерно раз в месяц.

  • LTS - по сути прошлогодняя версия, для которой регулярно выпускаются важные исправления и багфиксы.

Для каждой из версий доступны разные способы установки: WAR Package, Docker, или установка из репозитория (Debian / Ubuntu). Xwiki можно установить и в Windows, но я пробовал только установку в Linux Mint. Главное при установке тщательно следовать инструкциям (установка из репозитория / Docker).

При установке с помощью образа Docker рекомендую установить DemoFlavor, чтобы быстро познакомится с наиболее распространенными приемами использования Xwiki, все ненужные расширения, потом можно будет спокойно удалить.

Удовлетворение потребностей

Пробежимся по вышеуказанному списку требований:

Бесплатность и возможность установки на свой сервер

Xwiki - opensource проект. Установка на свой сервер доступна абсолютно бесплатно. Есть коммерческая версия в облаке, но это для нас. Также есть платные плагины, например улучшенный форум, но острой потребности в них пока нет.

Русификация и редактор

В последних версиях Wiki все критически важные вещи переведены на русский, кое-где не переведены заголовки устанавливаемых приложений, но работа над переводом еще продолжается. Более того при желании Wiki можно сделать мультиязычной.

У Xwiki есть свой стандарт разметки, чем-то напоминающий MediaWiki, при желании можно подключить Markdown, можно писать в чистом HTML, но в принципе TinyMCEв качестве визуального редактора весьма удобен.

Шаблоны страниц, повторное использования контента

Как и в Confluence для страниц можно использовать уже готовые шаблоны или создать свой.

Повторное использование контента в базовой версии можно реализовать через вставку соответствующего макроса. При этом можно вставить как страницу целиком, так и фрагмент между заголовками одного уровня.

Настройки внешнего вида

Можно выбрать тему для сайта, выбранную тему можно разукрасить, к страницам можно применять свои собственные скины, можно добавлять css стили и javascript, управлять меню и панелями. Не весь функционал интуитивно понятен, но главное, что есть возможность.

История версий, аннотации или комментарии к тексту

Для каждой страницы хранится история версий, можно настроить обязательное оставления комментария об изменениях.

Аннотации тоже есть, сделаны на базе расширения функционала комментариев к странице.

Управление доступом и установка расширений

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

Бесплатных расширений много, хотя многие из них бестолковые. Например можно подключить интерпретатор python и писать код внутри страницы. Или подключить DrawIO и чертить схемы прямо на страницах Wiki.

Есть встроенный инструмент для создания собственных мини-приложений на базе Xwiki.

В принципе никто не запрещает самостоятельно разработать расширение, но для этого нужно знать Java.

Больше чем ожидали

Есть еще множество занятного функционала который нам пока не нужен:

  • интеграция с OpenOffice (LibreOffice);

  • форум и инструмент для учета идей;

  • календари, собрания, учет задач;

  • блоги и голосования;

  • создание нескольких Wiki (видимо аналог пространств в Confluence)

Думаю со временем, что-то из этого может оказаться востребованным.

Заключение

Xwiki не смотря на некоторую медлительность, за счет своего функционала и его потенциальной расширяемости показалась, мне в долгосрочной перспективе более удобным решением чем GitLab Wiki, DocuWiki, DjangoWiki и другие вики движки, а также другие решения имеющие функционал для документирования (например, Onlyoffice или Youtrack).

Но есть правда в бочке мёда и большая ложка дегтя, помимо вышеупомянутой медлительности (которая в 12-й версии уже не так заметна, как в 11-й), у Xwiki есть еще один недостаток - небольшое сообщество пользователей. На форуме часто отвечают одни и теже люди, а описание некоторых более сложных функций очень сложно найти. Но с базовыми вопросами, как правило больших проблем не возникает.

В целом я пока доволен выбором, да и люди вроде привыкли, так что если вы не притязательны, у вас достаточно воли и терпения, а также есть навыки верстки сайтов, то Xwiki вполне можно рассмотреть как замену Confluence.

Эта публикация получилась достаточно поверхностной, но последняя статья на Хабре по запросу Xwiki была почти 5 лет назад, поэтому я решил что все же стоит "сверить часы" и опубликовать свой взгляд на актуальную версию.

Если история с Xwiki покажется вам интересной, то я напишу еще одну статью, в которой уже более подробно опишу некоторые функции и приемы, которые мне пришлось освоить в процессе первых месяцев её эксплуатации.

Подробнее..

Все на панель! или несколько полезных приемов настройки панелей Xwiki

11.04.2021 14:15:43 | Автор: admin

В прошлой статье я предложил рассмотреть Xwiki, как бесплатную замену Confluence и заодно пообещал поделиться несколькими советами по настройке.
Вот уже больше полугода я использую Xwiki в качестве базы знаний для небольшой команды разработчиков.
В процессе работы у меня возникали определенные трудности, документация не помогала, а ответов на англоязычном форуме приходилось ждать с большим вожделением, чем первого глотка пива в выходной.

Мне бы хотелось облегчить жизнь энтузиастам из волшебного мира документирования, поэтому я решил поделится своими наработками.
На текущий момент я планирую подготовить мини цикл из четырех - пяти статей про Xwiki.

В первой статье мы погорим о простых вещах, которые не отнимут у нас много времени, а именно:

Прежде чем мы начнем, хочу признаться, что я далеко не "гуру" в программировании и настройке Xwiki, так, что это просто "не очень элегантные" советы, которые тем не менее работают.

Весь материал статьи я проверял в версиях Xwiki 12.10.5 и 13.2 с установленной Demo Flavor. Также в статье подразумевается, что вы обладаете правами администратора.

Оглавление страницы в боковой панели

В админ-панели переходим в раздел Настройки интерфейса -> Мастер панелей и внизу страницы находим ссылку "Перейти к панелям". Ну или просто введите в адресную строку
{ваш домен с Xwiki}/bin/view/Panels/
В разделе "Создать новую панель"
Введите название панели (например, SideTOC}
и нажмите кнопку "Создать"
Тип панели оставьте - "View"
Описание - на ваше усмотрение.
В поле Содержимое введите код:

{{velocity}}{{context document="$services.model.serialize($doc.documentReference)" transformationContext="document"}}#set ($hasHeaders = [])#set ($mydoc = $doc.getDocument())#foreach ($block in $mydoc.getXDOM().getBlocks('class:HeaderBlock', 'DESCENDANT')) #set ($discard = $hasHeaders.add($block))#end#if($hasHeaders.size()>0) #panelheader('Table of Contents') {{box cssClass="sidetoc"}}{{toc/}}{{/box}}#end{{/context}}{{/velocity}}

Поясню для тех, кто только начал знакомство с данной Вики.

В Xwiki для автоматизации используется различные средства автоматизации и одно из них Appache Velocity. В данном случае весь код между тегами {{velocity}} {{/velocity}} будет обрабатываться как код на данном языке шаблонов.

В макросе {{context}} мы указываем контекст для которого будет выполнятся наш код.
В нашем случае это контекст основного содержимого страницы. Таким образом, наш скрипт будет думать, что он не внутри сквозной боковой панели, а внутри блока с текстом статьи. Это необходимо для того, чтобы получить заголовки из которых формируется оглавление.
блок
#if($hasHeaders.size()>0)
#panelheader('Table of Contents')
#panelheader('Table of Contents') {{box cssClass="sidetoc"}}{{toc/}}{{/box}}
#end

Выводит нам заголовок для панели и сами ссылки на разделы статьи, только в том случае если на странице есть заголовки из которых можно собрать оглавление.
Макрос {{toc/}} - непосредственно создает оглавление. Мы обрамим его в макрос
{{box cssClass="sidetoc"}}, чтобы иметь возможность удобной стилизации блока. Но об этом немного позже.

Теперь необходимо вставить нашу панель в верстку страницы.
Я решил разместить блок слева.
Чтобы сделать также в админ-панели перейдите на страницу Мастер панелей -> вкладка "Список панелей" и просто перетащите панель с названием SideTOC на панель слева (справа).
Если перетаскивание не сработает, вы можете добавить панель в ручную
На вкладке "Макет страницы" в поле "ПАНЕЛИ СЛЕВА" (или справа) добавив "Panels.SideTOC".
например, Panels.Applications,Panels.Navigation,Panels.SideTOC

Не забудьте нажать кнопку "Сохранить".
Выглядеть будет примерно так:

На странице без заголовков блок не будет видно.
Я специально сделал заголовок "Основы" заголовком второго уровня, чтобы показать уровни вложенности.
Возможно вы захотите немного изменить внешний вид панели, тогда вернемся к её редактированию.

Но прежде убедимся, что у нас включен расширенный режим редактора.
Перейдите на страницу вашего профиля. Нажмите кнопку "Редактировать"
В разделе "Настройки" найдите пункт "Тип пользователя" и выберите значение : "Продвинутый" (Advanced). Теперь нам точно будет доступен редакторов объектов.

Откройте страницу созданной ранее панели, вы можете найти её на странице списка панелей или просто перейдя по адресу {домен}/bin/view/Panels/SideTOC.
Теперь у кнопки "Редактировать" доступен список с дополнительными вариантами.
Выберите пункт "Объекты".

В поле "Новый объект" выберите StyleSheetExtension и нажмите кнопку "Добавить"

Xwiki очень функциональна и позволяет поменять css стили практически для любого элемента. В данном случае мы поменяем стиль класса siidetoc, который был указан в макросе {box}.
Введите любое название например sidetoc, а затем CSS код:

.sidetoc {  border:0px;  margin:0px;  padding:0px;  width:100%;}.sidetoc ul {  padding-left:2px;  list-style-type:disc;  font-size:1em;  padding:0px;  margin-left:0px;}.sidetoc li {  padding-left: 0px;  margin-left:5px;  list-style-type:disc;}

В поле "Использовать это расширение" обязательно выберите "В этой вики" ,

Не забудьте сохранить страницу.
Проверяем нашу главную.
Теперь панель выглядит немного по другому:

Если сходу не нашли 10 отличий, то был добавлен буллет у записей второго уровня и немного изменены отступы.

Миссия выполнена можем переходить к следующему пункту.

Cвоя панель навигации справа / слева

Предположим, что стандартное меню навигации нас не устраивает и мы хотим сделать отдельную панель для очень важного раздела "Моя любимая пицца".
Для начала создадим сам раздел. Пусть он будет в корневом уровне сайта.
Перейдите на главную страницу и нажмите кнопку "Создать".
Введите название и какое-нибудь содержимое в редакторе. Затем аналогичным образом, создайте еще пару дочерних страниц.

Сейчас информация о нашей любимой пицце отображается в разделе "Навигация".

Мы хотим убрать эти страницы из раздела "Навигация" и перенести в свою собственную панель.
Для начала уберем ссылки на пиццу из стандартной панели навигации.
В админ-панели откройте раздел "Настройки интерфейса" - > "Панель навигации".
Перетащите раздел "Моя любимая пицца" в раздел "Исключенные страницы".

Теперь перейдите в соседний раздел "Меню" и нажмите кнопку "Добавить новую запись".
Введите название панели, например, PizzaMenu.
Удаляем заглушку. Если у вас WYSIWIG редактор нажмите кнопку "Источник" и вставьте следующий код:

{{documentTree root="document:xwiki:Моя любимая пицца.WebHome" compact="true"/}}

Ну или вы можете просто вставить макрос "Дерево страниц" и добиться также настроек.

В поле "root" первая половина значения - document:xwiki: - это особенность структуры адресов Xwiki, Вы со временем разберетесь в тонкостях, а вот вторую часть: "Моя любимая пицца.WebHome", можно легко узнать перейдя на страницу "Моя любимая пицца.WebHome" и открыв внизу вкладку "Информация".

В поле "МЕСТО ОТОБРАЖЕНИЯ МЕНЮ" выберите - "Внутри левой панели".
В поле "ОБЛАСТЬ ВИДИМОСТИ МЕНЮ" выберите - "Current Wiki".
Не забудьте сохранить.

Боковые панели к сожалению, не включатся автоматически, их надо добавить вручную.

Перейдите на страницу Админ-панель -> Мастер панелей.
И добавить в левую панель строку: Menu.PizzaMenu.WebHome

Например, вот так:

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

Осталось немного навести марафет.

Давайте заменим заголовок панели.
Перейдите на страницу меню. Через админ-панель или просто по адресу:{домен}/bin/view/Menu/PizzaMenu/

Аналогично прошлому разделу откройте редактор объектов.
Разверните "UIExtensionClass" и в тег {{menu}} добавьте: id="PizzaMenu".
Замените значение в "#panelheader("PizzaMenu"), на то что вам больше по душе. Например так:

Если хотите можете аналогично примеру с оглавлением подредактировать CSS стиль блока (именно для этого мы и добавили id="PizzaMenu").
Создайте объект для настройки стилей и введите:

#PizzaMenu ul.jstree-children{  padding-left:0px !important;}

Сохраняем изменения и видим. что теперь наше меню, практически не отличить от родного меню с навигацией. Если постараетесь можете заменить буллеты и добиться идеального сходства, но я не стал.

Добавляем свои советы в панель подсказок

В самом верху справа у нас есть панель случайных подсказок. Допустим мы решим добавить туда несколько своих советов на русском языке.

Для этого надо в любом месте создать страницу.
Я создам пустую страницу Tips в разделе Xwiki чтобы она не "мозолила" глаза.

Откройте редактор объектов и добавьте объект расширения интерфейса.

В поле "Extension Point ID" вставьте: "org.xwiki.platform.help.tipsPanel".
В поле "Extension ID" введите любое название, например, "grammarHelp".
В поле "Extension Scope" выберите "Current Wiki".
В поле "Extension Parameters" введите:

tip = Чтобы воспользоваться исправлением опечатки нажмите Ctrl+ПКМ

Аналогичным образом создайте на странице еще одно расширение. См. скриншот.

Остается только сохранить изменения и дождаться появления советов.

Если честно я хотел добавить еще примеров, но статья итак получилась объемной.
Впереди у нас интеграция с Figma, GitLab, Swagger и кастомные DocumentThree!
Постараюсь не затягивать со следующим материалом.

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru