Pull to refresh

NPJ — эффективное средство для ведения проектов и документации

Reading time11 min
Views6.9K
Ведение документации на свою рабочую сеть давно стало правилом хорошего тона для любого уважающего и считающего себя профессионалом системного администратора. Дело здесь вовсе не в служебных обязанностях, а скорее в прямой необходимости.


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

Очень часто работа с Open Source проектом (не важно разработка его или установка) тесно связана с чтением и написанием документации. Все мы знаем, что память человека обладает избирательностью и имеет свойство убирать “на дальнюю полку” неиспользуемые в данный момент знания. Количество же таких знаний напрямую зависит от вашего опыта работы и размера серверного парка вашей компании.

По своему опыту могу сказать, что пара десятков грамотно написанных (собственноручно) документов по настройке “типовых” решений – сильно облегчают жизнь и навсегда избавляют от мучительных воспоминаний. Больше нет раздумий о том, что же я на этот раз забыл куда прописать и какой нюанс, встретившийся когда-то, никак не может всплыть из глубин моей памяти. Не стану отрицать, наверное, существуют супер-профессионалы, которые помнят всё и всегда, но мне такие не известны. Гуру, с которыми мне приходилось общаться нет-нет, да и говорили в ответ на вопрос “Что-то такое было… Я точно не помню.”

К чему я всё это? А к тому, что привычку писать (хотя бы даже для себя) документацию о настройке сервисов, в которых столкнулись с проблемами, о встретившихся тонкостях и особенностях — можно смело назвать весьма полезной привычкой и крайне необходимой практикой. Это логическое продолжение привычки многих людей – записывать в КПК, документы и другие менее удобные для поиска информации источники.

Что такое NPJ.
Для разработки документации из наиболее удобных инструментов можно выделить “НетПроектЖурнал” или просто NPJ. Он построен на принципах работы любого OpenSource проекта. Люди объединяются в сообщества (рабочие группы) и работают над какой-либо документацией. Для примера ведения проекта, могу привести весьма простой, но от того не менее удобный биллинг “cake” (http://npj.ru/cake). В данном случае, сайт проекта является и его главной страницей, и местом разработки документации, и местом поддержки проекта, так как NPJ гибкий инструмент и фактически может выступать в любом качестве. Для примера ресурса, основная цель которого разработка и сбор документации, могу привести npj.akeeper.ru Учитывая весьма продвинутые средства поиска по узлу NPJ – это крайне удобный инструмент.

Суть удобств:
• Установка и настройка, как правило, занимает 5-10 минут.
• Гибкость архитектуры позволяет создавать на вашем узле практически всё, что угодно – от банального блога (есть ресурс, где NPJ используется для ведения личных дневников livejournal) до серьёзного ресурса по разработке, представлению и ведению проекта.
• Сквозная авторизация на узлах других систем (о ней чуть ниже), позволяет вам принимать участие в работе на любых узлах, подключённых к общей сети NPJ узлов.
• На одном узле может быть создано сколь угодно много рабочих групп, каждой из которых допустимо заниматься своим независимым проектом.
• Рабочие группы могут быть – Публичные, Премодерируемые, Скрытые.
• Любая страница внутри узла может выступать в любом качестве – от обычного документа, до формы форума (об этом тоже чуть позже).
• Помимо участия в рабочих группах, пользователь узла всегда имеет собственный личный журнал и возможность создания своих документов.
• Гибкость настройки системы прав позволяет определить кто, к чему, какой будет иметь доступ. (Это касается, как документов и записей рабочей группы, так и документов с записями любого пользователя. Только вы решаете с каким доступом создаете запись или документ.)
• Несколько способов представления индекса и разбиения по категориям всей документации рабочей группы.
• Легкость поиска по всему узлу.
• В узле, при условии соответствующей настройки доступа, комментировать можно всё, а получать комментарии и отвечать на них можно прямо из вашего почтового клиента. (Больше никаких идиотских писем “Появился новый комментарий, на который вы подписаны. Пройдите по ссылке, чтобы его увидеть.” — забудьте! Жить стало значительно проще и удобнее.)
• При разработке документации ведётся история её изменения, которую всегда можно просмотреть и точно узнать какие правки и добавления были произведены. Более того, всегда можно вернуться к одной из сохранённых версий документа.
• Документ можно анонсировать по рабочим группам, сообщив таким образом о его существовании. Есть возможность создать дайджест.
• Благодаря Wiki разметке, писать документы не просто, а очень просто. И крайне приятно.
• Интерфейс для каждой группы, пользователя – настраивается индивидуально.
• Возможность прямо с центральной страницы увидеть: все документы, изменения в документах всех пользователей, ленту всех пользователей, ленту всех анонсов, список изменений в дайджестах и так далее.
• Поддержка RSS.
• Есть багтрекер.

Выше я упоминал сквозную авторизацию на разных узлах. Дело в том, что каждый узел “НетПроектЖурнала” имеет возможность войти в объединённую общую сеть. Это производится нажатием пары ссылок в настройках. Механизм работы этой системы довольно прост – при заходе на любую гостевую NPJ, система находит куки файл от родного (для вас) хоста и запрашивает у него вашу авторизацию. Если ваш хост авторизацию подтверждает, то на гостевом узле вы будете представлены под именем yournick@yourhost и вся ваша деятельность перестаёт быть анонимной. Почему это важно?

Благодаря авторизованной таким образом деятельности, вы можете подписаться на уведомления с разных узлов. Это одна из самых полезных функций NPJ. Можно получать уведомления о:
• Создании новых документов. В том числе, получать в письме весь новый документ, со всей разметкой.
• Изменениях в существующих документах.
• Анонсах на узлах (о создании новых групп, сообществ, разработок).
• Новых комментариях к записям, в том числе, отвечать на эти комментарии прямо из вашей любимой почтовой программы.
• Прочие уведомления.

Особого внимания заслуживает то, что любая страница журнала может выступать в совершенно разных качествах. Для пояснения, необходимо немного рассказать об архитектуре этой системы. Суть архитектуры “НетПроектЖурнал” можно было бы охарактеризовать как “вот вам пластилин, что на ум пришло, то и лепите”. Это значит, что каждая страница доступна для редактирования и может как содержать информацию в самой себе, так и являться (например) оглавлением для раздела. Вы можете создать ссылку в теле страницы на объект, который не существует. А сразу после сохранения созданной страницы можно перейти на эту ссылку и тут же создать документ, который будет по ней располагаться. И только вам решать будет это документом или очередным оглавлением, каталогом, индексом, гостевой книгой или чем-то ещё.

Потенциальный “минус”, который довольно скоро бросается в глаза – отсутствие возможности загрузки на сервер узла файлов через web-интерфейс. Другими словами, если вы хотите разместить в документе или где-то ещё ссылку на файл, то для размещения этого файла на сервере вам придётся воспользоваться помощью других сервисов.

Ещё одна деталь, на которую хотелось бы обратить внимание. NPJ написан c применением концепций ООП, а следовательно добавление функциональности не составляет особого труда. Например, в мою NPJ систему были внесены необходимые изменения, которые позволили использовать одну общую базу пользователей как для этой системы, так и для phpbb2 форума. Это оказалось весьма удобно, а реализация не заняла и двух дней.

Как NPJ выглядит и работает.
Для установки NPJ узла не требуется неординарных усилий. Всё происходит гладко и система встаёт, что называется, из коробки. На сайте проекта (http://www.npj.ru) содержится детальная информация по установке и там же можно всегда скачать последнюю версию системы. Начать работу лучше всего с изучения страницы npj.ru/npjdev/release. Для работы NPJ необходимы: Apache (возможно, он так же будет работать и с другими web серверами), MySQL, а так же PHP. На сайте проекта нет информации о минимально необходимой конфигурации компьютера для установки. Однако, я устанавливал npj на linux машины следующей конфигурации (p3, 256 mb ram, 10 gb hdd) и никаких проблем в работе не замечал.

Я не буду описывать процесс конфигурирования нового узла, так как уже выше было сказано – исчерпывающая информация находится на сайте разработчиков. (который представляет из себя такой же NPJ узел) Единственное, обращу ваше внимание на две настройки. Если вы хотите получать уведомления на почту, то придётся создать почтовый аккаунт для NPJ и обеспечить к нему pop3 доступ. Настройки для этого прописываются в файле config_tunes.php. И если вы хотите принимать участие в работе на других узлах с теми приятными мелочами, что были описаны выше, включите интеграцию вашего узла в общую сеть. Это делается двумя кликами на странице администрирования – npj.example.ru/manage/nns.

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

Рис 1. Пример внешнего вида личного пространства.
Рис 1. Пример внешнего вида личного пространства.

Вы можете выбрать несколько вариантов оформления узла для вас, а так же умолчания для тех пользователей, которые не сделали собственных предустановок. Первое делается в настройках вашего профиля, а второе, соответственно, в настройках узла. По-умолчанию, выставлен стиль “simplifica”, но многие предпочитают более аскетичный стиль “academic”. Мне, правда, не нравится ни тот, ни другой, так как их функциональность для меня не подходит. Я использую “minikui”, который вы можете видеть на рисунке. Его основное преимущество – удобство в быстром доступе к множеству функций и свойств страницы. Например, к своему стыду, я так и не понял, как в стиле “academic” добиться быстрого и удобного (а главное постоянного, вне зависимости от просматриваемой страницы) доступа к поиску.

Есть и другие причины заглянуть в пользовательские настройки. Например, там есть выбор между использованием вики/вака разметки и более наглядного редактора в стиле MS Word.

В личной области вы можете вести свой дневник (как тот же livejournal) и, например, таким образом протоколировать для себя разработки на узле. Там же у вас есть возможность создавать собственные документы, не привязанные ни к какой рабочей группе. Строго говоря, рабочие группы вообще не обязательный атрибут, если узел создавался не с целью обеспечения какого-либо проекта, которым занимаются много людей. Мне известно не мало случаев, когда NPJ ставили на собственной локальной машине и использовали исключительно в личных целях.

Как только вы увидите всё это богатство, возникнет вопрос – как же всем этим пользоваться. К сожалению или к счастью, NPJ имеет достаточно высокий “уровень вхождения”, поэтому на первых порах у пользователей возникает множество вопросов о способах взаимодействия с узлом. Здесь на помощь приходит выражение, которое уже прозвучало выше – каждая страница узла это “пластилин”, из которого вы можете “лепить” что угодно. Для того, чтобы понять о чем я говорю, просто кликните дважды на любой странице узла. Например, на центральной. И если вы обладаете администраторскими правами – получите окно для редактирования страницы.

Рис 2. Начинать творить можно отсюда.
Рис 2. Начинать творить можно отсюда.

Начиная с этого момента, вы можете как угодно до неузнаваемости изменить главную страницу вашего узла. Воспользуйтесь ссылкой на описание различных тегов и разметки – www.npj.ru/node/chastyevoprosy/zapisizhurnala/wikisintaksis. Есть неписанные стандарты оформления главной страницы. Однако, следовать им вовсе не обязательно. Вы можете поссмотреть, как могут выглядеть заглавные страницы просто попутешествовав по разным узлам.

Рис 3. Типичное оформление главной страницы узла.
Рис 3. Типичное оформление главной страницы узла.

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

Рабочие группы на узлах NPJ это фактически разграничение прав между пользователями узла. Они существуют для определения политики выдачи (отображения) информации, с которой работают члены группы, а так же для определения прав доступа каждого члена. Группы могут быть публичными, премодерируемыми, а так же, как уже упоминалось, скрытыми.

Рис 4. Рассматриваем группы более внимательно.
Рис 4. Рассматриваем группы более внимательно.

Члены групп могут обладать разными правами, от читательских до менеджерских (администраторских). Разумеется, в пределах своих групп. Если пользователь является менеджером пусть даже основной рабочей группы node@имяузла – это не означает, что он становится администратором узла.

Если вы создали рабочую группу (или же решили использовать уже существующую), то можете сразу приступить к оформлению и наполнению её материалами. Для этого достаточно зайти на страницу группы, которая, как правило, выглядит имяузла/имярабгруппы и точно так же, как на центральной странице, кликнуть на ней дважды. Откроется уже знакомое окно редактирования.

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

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

Рис 5. Начинаем мять “пластилин”.
Рис 5. Начинаем мять “пластилин”.

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

Теперь заполним первую страницу текстом, а на второй сделаем оглавление.

Рис 6. Две инкарнации одинаковых страниц.
Рис 6. Две инкарнации одинаковых страниц.

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

В любой момент, вы можете просмотреть код практически любой страницы (причем, не обязательно только вашего узла). Для этого достаточно набрать npj.example.ru/page/source и вы получите указанную страницу в wiki разметке.

Надеюсь, теперь вы поняли, что каждая страница NPJ узла это шаблон, в котором может находиться всё, что вам заблагорассудится. Фактически, это можно представить как кучу html файлов, которые между собой увязаны так, как вы сами посчитали необходимым. От кучи обычных html текстов их отличает только удобство использования, удобство редактирования и прочие “полезности”, что уже были озвучены выше.

Использование NPJ в работе.
Какую конкретно документацию вести в NPJ, решать вам. От себя я могу поделиться той схемой, благодаря которой у нас навсегда исчезла проблема ответа на вопрос (начальству или самому себе) что где находится и как оно работает. Эта схема использовалась нами в компании “Город-Инфо”.

Рис 7. Структура рабочей группы “Город-Инфо”.
Рис 7. Структура рабочей группы “Город-Инфо”.

Как видно из рисунка, фактически, все области работы службы системных администраторов компании здесь освещены. Разумеется, часть информации не отображена на схеме и включена в пункты “прочая”, но и того, что отображено более чем достаточно для понимания. Стрелками отображены ссылки между разделами. На самом деле, множество перекрёстных ссылок находится и внутри документов, но отобразить это на схеме не представляется возможным.

Там же нами велась разработка документации, которая впоследствии предоставлялась клиентам и заказчикам. NPJ позволяла не только вместе выполнять такие работы, но и отслеживать изменения в документе. А так же предоставляла площадь для дебатов по поводу внесения тех или иных изменений. В последствии, там же должна была начаться разработка целого пакета документации, так как именно это средство было признано наиболее подходящим для проведения такой работы (разработка с участием географически сильно удалённых пользователей), но к тому времени я покинул компанию.

Не буду рассказывать, как нам помогала в работе документация составленная в NPJ. Достаточно того, что мы забыли что такое “гадать” или в чем-то сомневаться. Просто открываешь браузер и вся детальная информация перед глазами.

Выводы.
Способов применения в работе узла NPJ ровно столько, сколько вы сможете придумать. Может быть, вы предпочтёте записывать в собственный журнал интересные находки “на будущее”, а в документах сохранять (к примеру) особо удачные конфигурационные файлы или же их описание. Может быть, вы создадите отдельную рабочую группу, где будете вести всю документацию по своей сети. А может, вы посветите свой узел поддержке какого-либо проекта, разработкой которого в данный момент занимаетесь или же только планируете заняться.

Многие тонкости работы NPJ остались за рамками статьи. Причин для этого несколько. Во-первых, не смотря на то, что я давно пользуюсь этой системой – для меня ещё не все тонкости раскрыты. Во-вторых, многое из оставленного за рамками статьи относится к редко используемому и далеко не всем будет интересно. Например, использование “Сообществ”, внутри которых создавать документы нельзя. Эта такая дискуссионная форма, но применения ей я не нашёл, поэтому в своём рассказе пропустил. А самую сложную проблему в использовании NPJ, понимание как это работает, хочется надеяться, я помог вам разрешить.

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

akeeperКоршунов Алексей.
Впервые опубликовано в журнале «Системный администратор».
Tags:
Hubs:
+12
Comments27

Articles