id: Гость   вход   регистрация
текущее время 13:59 19/03/2024
Владелец: SATtva (создано 14/09/2006 22:50), редакция от 27/08/2014 10:40 (автор: SATtva) Печать
Категории: софт, сайт проекта, ошибки и баги, разное, сообщество
создать
просмотр
редакции
ссылки

Движок openSpace: разработка и доработка


Пожелания и предложения по развитию программной платформы openSpace следует публиковать в параграф Идеи (если она будет принята в план разработки, то её перенесут в параграф Сделать).
Убедительная просьба вносить сообщения обо всех обнаруженных ошибках в работе сайта, багах и недоработках непосредственно в текст страницы (параграф Исправить), но не в комментарии документа!
Основой платформы сайта служит движок openSpace, представляющий собой сильно модифицированную wiki-систему WackoWiki. Выбор пал на нее из-за простоты устройства, модульности, позволяющей легко изменять систему и подгонять под специфические нужды, наконец, субъективная характеристика — код написан на PHP, и для хранения данных используется БД, а не файловая система.


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

Сделать


  • Элементы страницы для работы с сетью доверия
  • Компонент динамического управления рабочими группами
  • Компонент администрирования пользовательских профилей
  • Дополнительный флаг для прав доступа: изменение свойств и правка документа должны быть подтверждены подписью PGP
  • Усиление защиты аккаунтов:
    • привязка (salt) в пользовательских паролях (защиты от тривиальных и идентичных паролей, rainbow-атак)
    • хранить в базе данных H(H(pwd)), в cookie — H(pwd) (защита при компрометации БД), снимаю шляпу перед Стивом Мёрдоком

Переход к бета-стадии (v0.9b)

  • Инсталлятор
  • Права доступа на участие в опросах (и просмотр определённых опросов?). Также указывать ID опросов для упрощения ссылок на них. Возможность комментирования опросов. (Перенести опросы в адресное поле документов, но использовать специфический хэндлер?)
  • Соответствие XHTML 1.0 Transitional
  • Универсальная (многоязычная) адресация страниц. Требуется: 1) заглавная страница для каждого языка, 2) уникальный ключ на поля { lang, tag(?), supertag }.
  • Вывод страниц в кодировке UTF-8
  • Полный рефакторинг кода:
    • хэндлеры, действия и административные модули переписать в классы вместо inline-php
    • вынести lang-strings действий и хэндлеров в самостоятельные динамически подгружаемые lang-файлы

Исправить


    • Поправка: более детальное тестирование показало, что в определённых случаях проблема сохранилась. Однако, стало возможным отключение части функций типографики (в частности, обработки кавычек) без ущерба для остальной функциональности. Окончательное решение пока не найдено.
  • Несколько подряд вызываемых редакций одного и того же комментария имеют один и тот же урл, что приводит к невозможности редактировать несколько раз подряд один и тот же комментарий в браузерах с активным использованием хэша (links, elinks и другие).
    • Примечание: в связи с технической сложностью и нехваткой времени решение этой проблемы отложено на будущее.
  • При использовании BBCode-разметки если использовать цитирование в списке, сообщение выводится некорректно (большая часть не выводится вообще), не говоря уже о корректном форматировании.
    • Обход: использовать только wiki-разметку в указанном случае.
  • Нет связи с главным ключём при подписывании материалов, т.е. при смене подключа для подписи выдаёт: "неопределенная ЭЦП ключом 0x12345678, не зарегистрированным на сайте". Чтобы избежать такой ошибки, нужно либо вручную обновить ключ на сайте (удалить и загрузить по-новой), либо отправить на сервер ключей и дождаться, пока сайт в плановом порядке обновит его сам.
  • В броузере Opera не отображается панель Wiki разметки, что делает неудобным оформление постов. Прошу обязательно исправить.
    • Код панели разметки несовместим с Оперой. Он целиком заимствован из WackoWiki. Если разработчики решат его исправить, исправление будет принято и в oS. Либо исправьте сами и пришлите патч.
  • Поиск: если в поле "Автор" указать "Гость", то поиск не срабатывает. Контрпример: поиск слов "pgpru" или pgpru* возвращает "Результатов не найдено", хотя есть (один из примеров) /comment43978.
  • При вставке ссылки, содержащей кириллические символы, копированием из firefox (например, из русской википедии), бьётся кодировка, и ссылка становится нерабочей (сайт не делает преобразование "URL-encoded → UTF-8").
    • Обходной путь: перенабирать кириллические символы в ссылках руками при вставке в вики-документы.

Идеи


  • Возможность загрузить в профиль электронную визитку (vCard ver. 3.0) и её подпись.
  • Автоматическое получение метки времени на каждую редакцию документа.
  • Замена RSS 2.0 на Atom 1.0 (RFC 4287), как на свободный и более современный формат.
  • Добавить тэг [offtopic] (можно сокращённо [off]), чтоб по умолчанию (без клика) показывал бы только одну строку, в начале которой он стоит, а по клику веcь блок до закрывающего тега [/off]. Или даже сделать тег [subtopic имя_подтемы], при клике на котором будут раскрыты все субтопики с этой подтемой.
  • Было бы не плохо сделать древовидными комментарии: ответ на комментарий дается под конкретным постом, а не просто в общей ветви. Так же полезно добавить возможность отображения комментариев как с первой записи, так и с последней (новые записи в начало)
  • Надпись "Комментарий добавлен" лучше сделать зелёной.
  • Поиск попросту не работает, use-case нулевой, я в шоке! (пункты 2 и 3 — крайняя необходимость, 1, 4, 5 и 6 — можно отложить на потом):
    1. Так называемый
      стандартный поисковый синтаксис: знаки "плюс", "минус", "звездочка", скобки и т.д
      должен быть описан, либо дана ссылка на его описание. Мне, например, совершенно неочевидно есть ли отличие "слово1 + слово2" от "слово1+слово2". Так же, не ясно как использовать скобки. Выводить каждому эти правила эмпирически — не лучший подход.
    2. Очень существенная часть полезной информации размещена как комментарии к каким-то, зачастую слабо связанным с темой самого комментария, темам. Найти эти комментарии очень трудно. Ввиду этого наличие переключателя "Не искать в комментариях страниц" при отсутвии переключателя "Искать только в комментариях страниц" — форменное издевательство. Предлагается реализовать. Да, и лучше писать "в комментариях к станицам", а не "комментариях страниц" (страницы сами комментируют?) — так точней и звучит лучше.
    3. В выводе результатов поиска вместо того, чтобы (как и делают поисковики типа гугла) показывать кусок текста, содержащий искомое слово или их комбинацию, всегда выводится начало комментария. Не трудно догадаться, что если искомое слово (предложение, цитата) — где-то в середине "простыни", часто посвящённой ответу на несколько слабо связанных между собой вопросов, то догадаться, где же оное среди десятков безликих шапок комментариев, практически невозможно. Это ключевой момент, который полностью обесценивает наличие поиска на сайте. Если трудно сейчас реализовать вывод контекста, путь хотя бы найденные комментарии выводятся полностью, целиком.
    4. В выводе результатов поиска, в порядке очень странного и необъяснимого исключения, показывается сам вики-сорс со всей текстовой разметкой вместо того, чтобы показывать собственно результат её действия. Это улучшает восприятие? Кроме того, это существенный privacy leak: одно и то же "на печати" можно получить разными способами и используя разные форматы (BB, вики-разметку и т.д.), и в самих комментариях этого не будет видно, зато отлично видно в поиске: кто, и как в точности использует эту разметку и какие именно из её элементов.
    5. В поле "Автор" логично было бы включить поддержку списка пользователей (не забывайте, что Гость — тоже пользователь!). Т.е. если указано "SATtva, unknown", это бы значило "все документы/комментарии, опубликованные либо SATtva'ой, либо unknown'ом".
    6. Было бы очень кстати реализовать поиск по документам/комментариям, появившимся за последние n месяцев (или m лет, если им больше года), добавив соответствующее поле/параметр. Часто хорошо помнится, когда примерно было опубликовано то или иное, но вот поисковику на сайте это не объяснить.
  • Разрешить при создании темы вводить ограничения для комментаторов. Например, запрещать им писать под гостем, чтобы псевдоним в теме был обязателен. Или, если более общо, можно разрешить вводить допусимую (для создателя темы) долю таких комментариев (на каждой странице или во всей теме)
  • Выделение цитат <[цитата]> неудобно по двум причинам: нужно переходить в латинский регистр и символы разные. А ведь это одно из наиболее часто используемых форматирований! Ну и поскольку в первую очередь оптимизировать надо самое частое, то хорошо бы добавить возможность выделять цитаты на русском регистре и повтором символа, например ;;цитата;;. Или лучше \\цитата\\ – даже на шифт не надо нажимать.
  • При использовании сносок (разметка наподобие ((*1)) и ((#1))) оные относятся ко всей странице, а не к комментарию, где они нужны (т.е. если в одном комментарии уже есть первая сноска, то первую сноску во втором комментарии необходимо нумеровать как минимум с двух). Лучше, когда каждый комментарий — "корнем" для собственных сносок. При желании сослаться на объект в других комментариях или на объект в самом топике можно воспользоваться другими элементами wiki.
  • Появление нового опроса не отображается в "последних изменениях". Почему бы не добавить? Сайт проще всего отслеживать по странице последних изменений и последних комментариев — там должны быть отражены все изменения, произошедшие на сайте. К тому же, было бы намного удобней иметь не 2 страницы ("комментариев" и "изменений"), а одну, где все изменения отражены.
  • Подобно черновикам в wiki удобно было бы иметь поддержку «черновых комментариев»: возможность к каждому треду обсуждений писать и сохранять черновик комментария, который не будет никак отображаться в треде до тех пор, пока не будет официально отправлен. Мотивация: длинные комментарии, дорабатываемые втечение длительного времени, пишутся долго и при этом нигде не сохраняются, кроме как во временном буфере сообщений, потому падение браузера приводит к потере всего комментария. Можно подумать над тем, как такую опцию сделать непротиворечащей анонимности (иметь черновики комментариев так же для гостей).
  • Сделать поддержку тегов для форумных веток и новостей. Теги могут придумываться/назначаться пользователями и меняться постфактум. Это позволило бы объединять набор новостей на определённую тему (к примеру, cold boot атаки) в одну виртуальную тематическую подшивку, а также упростило бы поиск.
  • Подобно тому, как это сделано для самих тредов и новостей, хотелось бы иметь возможность просматривать referrers для каждого комментария на сайте (список тем и комментариев, которые на него ссылаются). Цель — упрощение тематического поиска.
  • Ряд обёрток (box, wacko) не закрывают контекст в конце комментария, из-за чего конец комментария не является реально концом, и один комментарий начинает обтекать другой при неаккуратном форматировании. В итоге, из-за ошибок в разметке одного гостя портится форматирование и последующих постов от других гостей. Исправить.
  • Имеется проблема с двойным минусом при его использовании в комментировании wiki-сорса. PoC: %%(comments) тест -- тест%%
  • Подстроку вида Гость (24/05/2013 13:02) автоматически превращать в ссылку, если она встречается в тексте.
  • 10 – 50 – 100 – 500 комментариев на страницу. 20 листов комменариев, невозможно читать, а так развернул одной страницей, полистал, и задача поиска пропадает, F3. Можно открыть страницу в режиме печати (ссылка в правом верхнем углу).
  • Большинство форумов и, например, livejournal поддерживают стандартный обычный html. Почему бы не сделать так, чтобы разметку можно было прямо в комментариях оформлять, да и плюс с поддержкой стилей? Было бы здорово и очень просто.
  • SatVa, запили, что бы можно было youtube ролики вставлять в ветвь обсуждения? Нафиг.
  • SatVa, верни картикни? Например, всякие блок-схемы тех же шифров, иногда, лучше 1 раз увидеть, чем пять листов прочитать. Локальные изображения работают. Поддержка удалённых неприемлема из-за HTTPS mixed content.
  • Сделать тэг, чтобы можно было что-то убрать под кат (например исходник LaTeX-формулы, которая вставлена картинкой).
    • На данный момент может быть убрано в html-комментарий: %%(comment) текст %%

 
На страницу: 1, ... , 14, 15, 16, 17, 18, ... , 26 След.
Комментарии [скрыть комментарии/форму]
— Гость (06/11/2012 21:55)   <#>
Отправлял только что /comment57483. Ожидая, пока загрузится страница, перезагрузил /proekt/kommentarii вот эту. После перезагрузки первой страницы мой комменатрий оттуда вообще исчез (нет ни в предварительном просмотре, ни как отправленного), зато на странице последний комментариев красуется вот это чудо.

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

Скриншот есть, логи есть, произошло минуту назад. SATtva, Вы будете и дальше отрицать наличие проблемы? Кто написал такой движок, что надпись "Введен неверный ответ на тест Тьюринга. Пожалуйста, повторите попытку." может появляться на некомментируемых страницах?!
— Гость (06/11/2012 22:00)   <#>
Вспомнил, что Вы просили высылать куки при разборе полётов. В данном случае у меня двое кук почему-то, описание их в TBB идентично: 02dbe8f1bb72fd492b79835ad5fed2e6 и c0d0749f0981d5262583b7c798e8f3f2.
— SATtva (06/11/2012 22:09)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118
SATtva, Вы будете и дальше отрицать наличие проблемы?

В данном случае буду. Сообщения типа "Комментарий добавлен" или "Неверная капча" передаётся in thread-unsafe way — какая страницы откроется первой, там оно и появится. Исправлять эту мелочь у меня нет ни малейшего желания, оно того не стоит. К отправке самого комментария/темы этот нюанс отношения не имеет.

Здесь, очевидно, Вы ввели неверную капчу, что и привело к появлению данного сообщения, из-за чего комментарий также не был отправлен. Вот то, что он исчез из поля ввода — это действительно проблема, я посмотрю.
— Гость (06/11/2012 22:23)   <#>
Спасибо. Думаю, что больше информации, чем я уже предоставил, предоставить не смогу. Напишите, если что-то найдёте. Иногда комментарий не исчезает, а появляется в другой ветке, страницу которой в этот момент перезагружал (как уже добавленный, если капча удачная, или как предпросмотр с предупреждением, если капча неверная). В данном случае страница последних комментариев некомментируемая, потому, когда контексты страниц смешались, предпросмотр там появиться не смог, а, значит, комментарий попросту исчез, и мне его потом пришлось набирать заново.
— Nostr (01/12/2012 15:41)   профиль/связь   <#>
комментариев: 3   документов: 0   редакций: 0
У данного проекта есть репозиторий?
— SATtva (01/12/2012 15:51)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118
Нет. Практически весь новый функционал быкпортирован в wackowiki, лучше используйте его на данном этапе.
— Гость (04/12/2012 00:11)   <#>
Почему конец обёртки wacko не коррелирует с концом комментария? Из-за этого последующие комментарии начинают обтекать предыдущий комментарий. Как сделать box необтекаемым остальным текстом? Что не так в обёртке (wacko wrapper=page wrapper_width=800 wrapper=box wrapper_align=left)?

Добавил в замечание текст документа, в "идеи".
— SATtva (04/12/2012 01:14)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118
Не всякая разметка рассчитана на применение в комментариях.
— Гость (04/12/2012 18:05)   <#>
Ссылку на коммент unknown'а с использованием box, где ничего не плывёт и не обтекает, помните? Вот это ему расскажите.

Если блок в принципе может быть необтекаемым, то не важно, где он — в комментариях или в самих вики-документах. Или вы вообще отрицаете поддержку необтекаемых блоков как класса?
— Гость (04/12/2012 18:23)   <#>
Есть один грязный трюк: доставлять нужное число переводов строк после завершениях box/wacko:



где вместо XX нужно подставить %%. Поскольку ширина блока фиксирована принудительно, число нужных переводов строк не зависит от ширины страницы/монитора пользователя. Вот так это выглядит:

[тест]
Если блок в принципе может быть необтекаемым, то не важно, где он — в комментариях или в самих вики-документах. Или вы вообще отрицаете поддержку необтекаемых блоков как класса?




[/тест]

Но я не уверен, что unknown делал именно такой трюк. Может, у него это как-то естественно получилось чисто из-за того, что выделенный блок текста был большим. В качестве первого слова в блоке можно писать как wacko, так и box, это вроде бы ни на что не влияет.
— SATtva (04/12/2012 22:24, исправлен 04/12/2012 22:24)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118

Граждане, вы определитесь, вам шашечки обтекаемый нужен блок или нет? Замените обработчик на shade — и будет вам счастье.


Если блок в принципе может быть необтекаемым, то не важно, где он — в комментариях или в самих вики-документах. Или вы вообще отрицаете поддержку необтекаемых блоков как класса?

Собственно: %%(wacko wrapper=shade) text %%


Ещё раз повторяю: обтекаемые блоки в комментариях, особенно в коротких, будут давать неожиданные результаты, не нужно их там использовать. С необтекаемыми блоками проблем не будет.

— Eridan (04/12/2012 23:11)   профиль/связь   <#>
комментариев: 254   документов: 9   редакций: 753
Тут принимают предложения? Тогда добавить кнопочки расширенного редактирования над полем поста. То есть кнопка при нажатии на которую появляются дополнительные кнопки.
— Гость (05/12/2012 02:19, исправлен 05/12/2012 13:15)   <#>
Граждане, вы определитесь, вам шашечки обтекаемый нужен блок или нет? Замените обработчик на shade — и будет вам счастье.

Естественно, шла речь про то, как сделать необтекаемый. Ваше решение (wacko wrapper=shade) короткое и изящное для этих целей, спасибо.


Если вы посмотрите на /proekt/wiki/makrosyformattery, то там форматтеры описаны чуть лучше, чем никак (в оригинальной wackowiki, кажись, та же проблема, когда-то давно смотрел). Чтобы не захламлять общую страницу про движок, откомментировал там. нет, не откоментировал. Движок до такой степени говно, что даже когда описываешь какое он говно, его глючит. Набрал охеренный классный комент, сделал форматирование, сводную таблицу свойств форматтеров, но при очередном нажатии на предпросмотр он вывел https://pgpru.com/proekt/wiki/makrosyformattery/addcomment с пустой страницей (уже не первый раз такое). Пытался извлечь, загрузив принудительно страницу https://www.pgpru.com/proekt/wiki/makrosyformattery?show_comments=1&p=last#preview, но нет, коммента уже нету. Была бы опера, сделал бы alt + ← и всё было бы ОК, вместе с текстом в окне редактирования. Но жопорукие пейсатели firefox не знают такой простой вещи, как сохранение контекста, поэтому alt + ← и alt + → понимаются как "страницу перезагрузить" (хотя нахера, если есть ctrl+r или F5, если так уж хочется?). Настроение совершенно гадкое. Редактирование текста заставляет постоянно жать на предпросмотр, потому с внешним редактором работать и постоянно тереть/копипастить текст в окно редактирования неудобно. Начинаешь писать короткий текст, потом он разрастается, потом, если вовремя не сохранил копию, трындец ему :( Вот всё, что случайно осталось в буфере от того сообщения:

у shade нет ни опции выравнивания (wrapper_align), ни ширины (wrapper_width), т.е. если их указать, они попросту ни на что не влияют. Ширина окаймления подбирается под ширину страницы автоматически (т.е. shade не только необтекаем, но и ширина нерегулируема), переводы строк внутри текста проставляются автоматически.

Спасибо, Вам, SATtva, за ваш отличнейший движок. Я знаю, что он works for you и был written just for fun, можете мне об этом не напоминать. В общем, для себя я разобрался, как оно на самом деле работает, а другим, видимо, об этом знать не надо.

— Гость (05/12/2012 03:32)   <#>
boxshadepagetext
Окаймление++
Обтекание+×1+
Выравнивание влево/вправо+×12 +
Автоматический перевод строк+++
Задание ширины блока+×1+3
1Опция не имеет смысла, т.к. ширина блока всегда равна ширине страницы.
2Только влево.
3Если самому переводы строк не ставить, ширина блока фиксирована движком приблизительно на уровне 90% от ширины страницы.
Настроение совершенно гадкое

Эх, если сейчас не напишу хоть что-то, это не напишет уже никто и никогда. Кратко, основные идеи:

  • Форматтеры wacko и box всегда взаимозаменимы (контрпримеры не нашёл).

  • Обёртки форматтеров (box, shade, page и text), видимо, взаимоисключающие, но если указано несколько таких обёрток в опциях к форматтеру, движок не поругается (что плохо), а возьмёт какую-то из них из списка (наверное, первую).

  • Если к какому-то форматтеру указана неприменимая опция (например, wrapper_width к shade), движок её считает комментарием в смысле %%(comments) хахаха%%. Т.е., например, %%(wacko wrapper=box всякая херня)%% — валидный форматтер.

  • Модель форматтеров явно неполна. Например, нельзя сделать необтекаемый блок текста, выравненный вправо с автоматическим переводом строк внутри него, что часто нужно для эпитафий эпиграфов. Не всегда есть возможность задать тип выравнивания (влево/вправо) и автоматичность перевода строк. Про отступ на фиксированную величину даже не заикаюсь.

Сводная таблица свойств приведена.

Примерная ГРАММАТИКА:
Пишем %%([hl] ОСТАЛЬНОЕ ОСТАЛЬНОЕ ... ОСТАЛЬНОЕ)%%, где «ОСТАЛЬНОЕ» может повторяться сколько угодно раз, причём

iОСТАЛЬНОЕ = [ ФОРМАТТЕР | ОБЁРТКА_ФОРМАТТЕРА | ОПЦИЯ_ОБЁРТКИ_ФОРМАТТЕРА | КОММЕНТАРИЙ ]

ФОРМАТТЕР = [ wacko | comments | box | nb | fyi | email | icq | icq_l | icq_m | php | sql | html | ini | css | pascal | java | css | diff | dtd | javascript | mysql | php | python | sql | xml ]

ОБЁРТКА_ФОРМАТТЕРА = wrapper=[ box | shade | page | text ]

ОПЦИЯ_ОБЁРТКИ_ФОРМАТТЕРА = [ wrapper_width=ЧИСЛО | wrapper_align=[ left | right ] ]

КОММЕНТАРИЙ = всё остальное, что угодно.

P.S.: hl указывается, только если ФОРМАТТЕР = [ css | diff | dtd | javascript | mysql | php | python | sql | xml ]
— SATtva (05/12/2012 13:22, исправлен 05/12/2012 13:26)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118
Набрал охеренный классный комент, сделал форматирование, сводную таблицу свойств форматтеров, но при очередном нажатии на предпросмотр он вывел https://pgpru.com/proekt/wiki/.....ormattery/addcomment с пустой страницей (уже не первый раз такое).

Это не имеет отношения к движку и/или его проблемам — на сервер была повышенная нагрузка, скрипт не отработал за отведённое время и был убит веб-сервером. Такое встречается сплошь и рядом, не только у нас. (К слову, сейчас имеет место такая же фигня и решается она достаточно просто без нужды погружаться в фрустрацию — нажать F5 с переотправкой POST-запроса.)

На страницу: 1, ... , 14, 15, 16, 17, 18, ... , 26 След.
Ваша оценка документа [показать результаты]
-3-2-1 0+1+2+3