Заголовок
Текст комментария*
npj@ahe:Заглавная страница журнала (2007-11-17 02:28:39) — состав рабочей группы


Применение НПЖ


Что такое НПЖ
Это гибрид (причем чрезвычайно гибкий) wiki и блогов, хотя на этом его свойства не заканичваются (чтобы с этим работать не нужно знать про HTML, а еще пользователи, зарегистрированные на одном узле (сайте) могут работать со своими аккаунтами на других узлах (сайтах)).


С некоторой оговоркой НПЖ – НетПроектЖурнал можно назвать CMS – но это
не вполне корректо. Это opensource разработка широко известных в узких кругах
людей из Екатеринбурга (они же разработчики WackoWiki).


Пример коммерческой эксплуатации движка: http://www.dkvartal.ru. Неимоверно легок в установке, но вот на интерфейс многие жалуются. А Денис Николаев на нем запустил вот такое ledcommunity.


Авторы подзабили на проект НПЖ, но жить ему это не мешает.




Как установить свой собственный ~НПЖ-узел – инструкция


В записях этой РГ вы найдете помощь по использованию НПЖ
Добавить новый документ про использование НПЖ


Все документы:


На других сайтах
На Хабре: NPJ – эффективное средство для ведения проектов и документации


Зарегистрированы: 217 человек
Из них за последний месяц заходили 4


vtqveant@ahe (Константин Соколов)
14:40 14.03.2008
Доступ: публичный
Опубликовано в: npj@ahe
НПЖ на MySQL 5.0, PHP 5.2.5

Добавил в DBAL::DBAL() (core/classes/DBAL_adodb.php)


// MySQL 5 strict mode compatibility
$this->conn->Query(«SET GLOBAL sql_mode='MYSQL40'");

vtqveant@ahe (Константин Соколов)
00:54 03.02.2008
Доступ: публичный
Опубликовано в: npj@ahe
Возобновление разработки НПЖ

Вся документация по новой версии НПЖ будет размещаться на сайте http://dev.olspire.com


Если у вас есть мысли о том, что должно войти в следующий релиз, пожалуйста, откомментируйте список задач, размещенный на сайте NPJnext.

vtqveant@ahe (Константин Соколов)
01:11 29.12.2007
Доступ: публичный
Опубликовано в: npj@ahe
“event”

Начав делать шкурку для рабочих групп, я полубессознательно сделал в ней закладку «События», которая, очевидно, показалась мне необходимой по причине того, что «события» – это, в сущности, именно то, чем занимаются рабочие группы в реальном мире. (Простой тим-митинг – это уже событие =)


Чтобы эта хорошая мысль превратилась в хорошее начинание, потребовалось также осознать, что одним из наиболее адекватных выражений концепта «событие» в вебе 2.0 является .


В контексте НПЖ я вижу его воплощение примерно таким:


1) Форма для создания события – пример
2) Таблица “events” в БД целиком новая, которая хранит записи для событий сразу целиком в XHTML и отдельные поля + информация о группе/группах, пользователе, создавшем событие, участниках события (на базе «рефов» как-нибудь)
3) Список с событиями группы в «форме ленты»
4) Привязка location к Google Map
5) Нотификация по почте (или on-site, в стиле вконтакте) за некоторое время до события
6) phpMicroformats class library, hKit Microformats Toolkit for PHP5


FYM
1) hCard для профилей
2) rel="tag" для тeгов => облако тегов
3) XFN в стиле dikiy.com
4) OpenID + hCard auth в стиле GetSatisfaction.com

vtqveant@ahe (Константин Соколов)
12:42 25.12.2007
Доступ: публичный
Опубликовано в: npj@ahe
FYI

После недавнего падения npj.ru и его подъема вот такое состоялось важное обсуждение: http://www.npj.ru/in/webdev/by/ak/4164/


В частности, цитирую Кусо:


«Оторвали htcron, похоже, что все залетало»


«Потенциал ускорения вижу в двух вариантах
    • упростить запрос, оставив в лентах только публичные записи (для автора показывать, понятно, все). Это серьезное ухудшение сервиса, но должно немного подстегнуть производительность. Делается очень быстро
    • сегментировать две самые большие таблицы (records, records_ref) по кварталам и переписать так, чтобы запрос шел к двум квартальным таблицам. Делается существенно дольше, зато решит проблемы с производительностью на довольно долгое время.»
vtqveant@ahe (Константин Соколов)
10:53 17.12.2007
Доступ: публичный
Опубликовано в: npj@ahe
Анонс документа: Шкуры для НПЖ

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


Abstract


В данном документе рассматривается процесс создания шкур (скинов) для НПЖ и описываются некоторые важные для этого дела особенности системы, а именно: структура шкуры, программный контекст, движок шаблонов и синтаксис шаблонов, переменные, доступные из шаблонов, обнаруженные проблемы.

vtqveant@ahe (Константин Соколов)
11:19 14.12.2007
Доступ: публичный
Опубликовано в: npj@ahe
Какие бывают статы

«Статы», как их называют создатели НПЖ в комментариях к коду, это переменные, доступные из шаблона страницы, в которых хранятся данные о загруженной странице. Задаются они в методе UtilitySkin::AssignRecordStats(). В родных шкурах этот метод вызывается в мэджике (tpl_magic) Path, что имхо очень неправильно, т.к. этот мэджик выводит пермалинк, а инициализация «статов» оказывается побочным эффектом (причем далеко не очевидным – поди найди, где это, если заранее не знаешь). «Статы» же могут использоваться и дальше – и используются. Поэтому в своих шкурах я выношу инициализацию статов в отдельный мэджик.

Вот какие они бывают:


  • Record.Stats.Address – адрес загруженной страницы
  • Record.Stats.Security – доступ
  • Record.Stats.Security.Icon
  • Record.Stats.Security.IsPublic
  • Record.Stats.Journal0 – пользователь
  • Record.Stats.Journal1 – сообщество (?)
  • Record.Stats.Journal2 – рабочая группа
  • Record.Stats.ChangedByName – имя (точнее, user_name) редактировавшего последним
  • Record.Stats.ChangedBy – очевидно, id 
  • Record.Stats.ChangedDT – timestamp последней редакции
  • Link:Record.Stats.ChangedBy – ссылка на журнал последнего редактировавшего
  • Record.Stats.Type – ?
  • Record.Stats.TypeName
  • Record.Stats.Ref
vtqveant@ahe (Константин Соколов)
05:38 12.12.2007
Доступ: публичный
Опубликовано в: npj@ahe
Почему падает соединение с БД?

К размышлению. Пока не понимаю


Это гугл-бот вешает сайт, php (видел, что Suhosin patch ругали за такое поведение) или все-таки мои скрипты косячат?


Сайт периодически вываливается с таким предупреждением:
mysql_connect(): too many connections


при попытке войти в PhpMyAdmin у хостера соединяться отказывается, говорит: no space left on device и другое разное.


error.log
[Wed Dec 12 05:10:30 2007] [error] [client 66.249.65.239] ALERT – canary mismatch on efree() – heap overflow or double efree detected (attacker '66.249.65.239', file '/usr/home/14944/npj.mathlingvo.ru/html/index.php')


access.log
66.249.65.239 – - [12/Dec/2007:04:36:40 +0300] «GET /npj/themes/crabla/js/override.js HTTP/1.1» 200 486 “-» «Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" npj.mathlingvo.ru

  1. 249.65.239 – - [12/Dec/2007:04:36:40 +0300] «GET /npj/themes/absent/js/md5.js HTTP/1.1” 200 8827 “-» «Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" npj.mathlingvo.ru

vtqveant@ahe (Константин Соколов)
10:44 09.12.2007
Доступ: публичный
Опубликовано в: npj@ahe
Синхронизация комментариев

Новый экшен SyncComments page="user@node:document"


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


Хороший вопрос: зачем? :)

vtqveant@ahe (Константин Соколов)
09:27 04.12.2007
Доступ: публичный
Опубликовано в: npj@ahe
Анонс документа: NPJ Plans

Общая идея


Четко выделить и сделать понятными для пользователей зоны рабочих групп, личного пространства (блоги) и общих сервисов (репозиторий, библиографии). Первые две реализуются с помощью шкур (особое оформление и доступ к необходимым функциям из веб-интерфейса), (всплывают вопросы usability и дизайна, которые мне не потянуть! – Vtqveant), сервисы реализуются с помощью модулей. Сколько-нибудь значительного переписывания движка хотелось бы избежать.


Что и как именно уже сделано – читать здесь.

vtqveant@ahe (Константин Соколов)
05:25 30.11.2007
Доступ: публичный
Опубликовано в: npj@ahe
Анонс документа: Captcha

Капча (только для гостей). Смотреть здесь.


Код на память см. здесь.


TODO: Спамбот умудрился загнать свои ништяки в форму регистрации... Надо к ней тоже капчу сделать
UPD: ...что уже сложнее, потому что форм-процессор фигачит поля формы сразу в БД, в т.ч. и капчу, что, естественно, приводит к ошибке и tracelog'у. Фак, этот форм-процессор мне не нравится совсем.

vtqveant@ahe (Константин Соколов)
14:56 22.11.2007
Доступ: публичный
Опубликовано в: npj@ahe
NpjModule, xajax, tinyMCE

Пример модуля для НПЖ – связка xajax и tinyMCE


здесь (смотреть лучше под FF, потому что tinyMCE какой-то попался кривой и под IE не пашет, а возиться с ним я не буду, потому что это просто пример...) UPD: ok-ok, мои кривые руки. Все работает!


Код на память см. в документе.

vtqveant@ahe (Константин Соколов)
17:48 21.04.2007
Доступ: публичный
Опубликовано в: npj@ahe
Танцы с бубном

Танцы с бубном вылились в создание форматтера ./npj/formatters/highlight/censored, позволяющего вывести HTML/JS в обход всякого форматирования (а если быть точным, то в обход ./lib/safehtml/safehtml.php), что позволяет, например, включить объект в страницу или использовать разные скрипты (например, можете нажать ), iframe и другие разности (см., например, как сделана подписка на странице блога Матлингво и скрипт для аплоада). Что пока не получилось сделать – Google Maps API и еще хочется подружить JS c PHP на сервере (чтобы пароли тырить ну и всякое такое... шутка :). UPD: подружил :) см. здесь


В общем, теперь вы можете просто насладиться песенкой Idan Raichel's Project «Если ты уйдешь».


vtqveant@ahe (Константин Соколов)
13:55 21.04.2007
Доступ: публичный
Опубликовано в: npj@ahe
Общая архитектура НПЖ и некоторые частности ее реализации

Начало обзора здесь, дальше по ссылкам.


Рассматриваются:


  • Общая структура
  • Движок форм + мой простейший работающий пример
  • Перечень свойств и методов класса TemplateEngine с комментариями авторов
  • Мой собственный работающий TemplateEngine
  • Мои размышления о классе RequestHandler и о САМОМ ГЛАВНОМ ОБЪЕКТЕ

На подходе:


  • Класс Principal – система авторизации и разграничения пользовательских полномочий
  • Класс Module, тестовый модуль и мой собственный модуль
  • Новые Actions
  • Класс Helper и с чем его едят не самый важный класс, отложим рассмотрение

vtqveant@ahe (Константин Соколов)
10:07 16.04.2007
Доступ: публичный
Рубрики: НПЖ
Опубликовано в: npj@ahe
Анонс документа: forminc.php

Печальная повесть о том, как я встраивал форму для регистрации в страницу НПЖ.


UPD: с появлением форматтера ... эта повесть стала не такой уж печальной :) Например, вот как чудесно работает мой скриптик для аплоада (vtqveant@ahe:upload) – любо-дорого. URL загруженного файла выводит с помощью хитрой придумки в обход всего.

denisnikolaev@ahe (Denis Nikolaev)
01:53 25.03.2007
Доступ: публичный
Опубликовано в: npj@ahe
Yandex и Хостинг

По результатам чата (Константин Соколов, Татьяна Ландо, Денис Николаев)
По поводу поисковика:

  • Yandex не ищет и не содержит в индексе сайты ahe.org.ru и ledcommunity.org.ru, хотя еще примерно месяц назад все было в порядке. По результатам проверки на http://webmaster.yandex.ru/check.xml) выдается сообщение: Результат поиска: страниц — 0, а иногда даже: К сожалению, мы не смогли дождаться ответа от http://ahe.org.ru. Рекомендуем обратиться к вашему хостеру для улучшения времени ответа сервера.
  • Yandex ищет некоторые записи в поиске Yandex.Блоги (http://blogs.yandex.ru/).

По поводу хостинга:

  • Мнения по поводу качества хостинга разделились. Константин: «скорость работы нпж – это проблема нпж». Остальный участники считают иначе. (Иногда страницы открываются дольше минуты).
  • Константином предложено использовать команду tracert ahe.org.ru для того что бы определить, в каком месте происходит задержка.

Итог

  • Решений о дальнейших действиях по обоим вопросам не принято.
vtqveant@ahe (Константин Соколов)
22:44 16.03.2007
Доступ: публичный
Опубликовано в: npj@ahe
Cribademic skin

Операция по сращению criba и academic: ./npj/themes/academic/css/wacko.css и override.css подверглись правке. (Касается заголовков и оформления основного текста (в т.ч. отступы в <li> исправились, когда я указал “padding:? 0 0 25px”). Смотрел только под IE6 и FF2 – все нравится.
Делалось для группы openspace@ahe

vtqveant@ahe (Константин Соколов)
02:33 01.03.2007
Доступ: публичный
Опубликовано в: npj@ahe
Анонс документа: Исправления и добавления к нашей инсталляции NPJ


1/20/2007
Link()

12/1/2006
upload.php

???
Косяк со шкурой minikui

vtqveant@ahe (Константин Соколов)
01:12 01.03.2007
Доступ: публичный
Опубликовано в: npj@ahe
Анонс документа: Что можно делать с CSS в НПЖ

Это обычный заголовок


Это самый обычный текст. WackoWiki-разметка, по сути, то же, что и <span style="className">...</span> (ну или <p>...</p>). Поэтому ее можно перезаписать, поместив нужные значения style внутри WackoWiki-тегов. А можно и вообще на них забить. Вот несколько простых, но эффектных примеров.

vtqveant@ahe (Константин Соколов)
22:48 25.02.2007
Доступ: публичный
Опубликовано в: npj@ahe
Анонс документа: Заморочки с парсингом rss-фида, формируемого НПЖ, при его трансляции в ЖЖ с помощью rss2lj

Замеченные проблемы


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

Скрыть комментарии | Добавить комментарий

#221 @ 16:33 15.10.2006
Комментирует Sergey Dmitrievsergeydmitriev@ahe
Все дискусии в которых участвовал пользователь

Давно хотел такую штуку http://dkvartal.ru/kulakov/discussions


Это потом сделали или в НПЖ тоже есть такая функциональность?