Перейти к контенту

Мои доработки


Рекомендуемые сообщения

К сожалению, пока доработки моего форума не покатят в категорию модов и хаков, которые можно установить по "делай раз, делай два", но могут быть полезны кому-то, кто будет переделывать у себя что-то сам. А со временем, глядишь, родится и полноценная система модов :D

 

Значит, что у меня в оригинальных доработках.

 

1. Есть своя система разметки, достаточно старая, давно расширяемая и регулярно улучшаемая. Ею пользуются моя самопальная CMS (глядишь, через пол-годика, когда доведу и причешу - выложу. А так - этой системе уже года четыре или пять ;) ), чат и - форум на iBF 1.2

 

2. Поскольку система разметки "необратимая", то iBF модифицирован так, что хранит и исходники сообщения и скомпилированные версии. Поскольку хранятся они в разных таблицах, то на общей загрузке MySQL это не сказывается. Такая же система использовалась раньше и в UBB6. В принципе, доработки iBF на эту тему укладываюстя в несколько изменённых строк, так что руки дойдут - опишу, как это делается. Но, скорее всего, это уже будет iBF 2.0 Кроме всего прочего, кстати, эта система удобна тем, что при замене доски достаточно только внести изменения на предмет сохранения исходников и вызова своего языка разметки, а сама система разметки остаётся неприкосновенной.

 

3. Система разметки глубоко модульная. В пределе один тэг (или пара тэгов) - один файл. Т.е. чтобы подключить свой тэг - нужно просто файл с его обработкой положить в отдельный каталог и никакого другого кода править не нужно. Очень удобно при обновлении версий.

 

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

 

ссылка:

[http://host/path/link.htm|Пример ссылки]

 

Жирный шрифт - традиционно:

[b]Жирный шрифт[/b]

 

Их комбинация, часть ссылки - жирная:

[http://host/path/link.htm|[b]Ссылка куда-то там...[/b]]

 

Ну, теоретическую часть, вроде, закончил пока.

Ссылка на комментарий
Поделиться на других сайтах

Вот, а сюда - буду пока кидать куски кода, делающие то или иное :D

 

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

 

Хм... Подумал тут и решил, что удобнее будет детально всё расписывать у себя (чтобы было в одном месте), а сюда кидать анонсы и тут же вести обсуждение с местным людом ;)

 

Итак, первая часть -

 

Обработка ссылок, Замена ссылок на заголовки страниц

http://forums.airbase.ru/index.php?showtopic=27399

 

Модуль, отвечающий за замену простых ссылок на заголовки страниц, на которые они ведут.

 

Особенности

- Поддерживаются одноуровневые редиректы

- Поддерживаются перекодировки из кодировок тех страниц, на которые они ведут.

- Корректно выделяются ссылки, оканчивающиеся на точку, запятую или иной знак препинания, заключённые в скобки.

- Если заголовок вытащить не удалось, текстом ссылки остаётся сама же ссылка. То же самое - для FTP-ссылок.

- Длинные ссылки без заголовка урезаются до 80 символов.

- Длина заголовка обрезается по границе 256 символов.

- Целевая кодировка модуля - UTF-8.

 

Требования

- Установленный в системе модуль HTTP_Request из PEAR ( http://pear.php.net )

Ссылка на комментарий
Поделиться на других сайтах

Только я чего подумал: ведь форум сам обращается к html странице и чтобы узнать заголовок скачивает её? Т.е. получается внутрений оплачиваемый из кармана трафик? У тебя как с этим?
Ссылка на комментарий
Поделиться на других сайтах

Входящий трафик на хостингах обычно бесплатный.

Кроме того, это требуется лишь один раз, при написании (или редактировании) сообщения.

В базу у меня сохраняется уже конечный вариант.

 

Вообще, причешу понемногу основные модули - выложу и их обработчик.

 

А там и вставку в форумы. Но это уже скорее под iBF2.0

Ссылка на комментарий
Поделиться на других сайтах

Поскольку хранятся они в разных таблицах, то на общей загрузке MySQL это не сказывается.

только база толстеет =)

Такая же система использовалась раньше и в UBB6

не будем забывать и то что она на файлах.

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

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

 

ведь форум сам обращается к html странице и чтобы узнать заголовок скачивает её?

если и определять заголовок, то достаточно тянуть не всю страницу а только часть до тэга </TITLE>

Ссылка на комментарий
Поделиться на других сайтах

Грызун

Пишешь в посте www.yandex.ru

В обычном форуме он тебе разметит ссылку так:

www.yandex.ru

А с этим модом разметит: Яндекс

Ссылка на комментарий
Поделиться на других сайтах

Чтобы его ставить надо форум знать :D

Кстати, Balancer замедление форума (на анализ удалённых html файлов) будет нехилое.

Входящий трафик на хостингах обычно бесплатный.

Ну кому как. Нам так не повезло..

Ссылка на комментарий
Поделиться на других сайтах

>только база толстеет =)

 

По любому исходник лучше хранить отдельно, чем декомпилировать потом результат. При редактировании никаких неоднозначностей, удобнее цитировать, искать и т.п. :D

 

>не будем забывать и то что она на файлах.

 

Угу. С файлами работать сильно сложнее ;)

 

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

 

Сделай мне регулярное выражение, которое корректно по парам отпарсит или вложенные тэги, скажем, {quote} ... {quote} ... {/quote} ... {quote} ... {/quote} ... {/quote} или позволит использовать транслируемое выражение в качестве параметра {tag | {b}param{/b} } :)

 

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

 

Мой же парсер, вполне м.б. и ошибётся в каких-то условиях, но пока такие не попадались :)

 

>если и определять заголовок, то достаточно тянуть не всю страницу а только часть до тэга </TITLE>

 

Есть предложение как скачать страницу до тэга </title>? :) Побайтово вручную через сокет? Мало того, что большинство серверов сейчас всё равно буферизируют обмен, так ещё и по сети пакеты по 1.5 кБ всё равно обычно ходят ;)

 

> а мона по русски обЪеснить что этот мод конкретно даёт, а то что то до меня не дошло

 

Это не мод, это для тех, кто пишет сам моды.

 

>Кстати, Balancer замедление форума (на анализ удалённых html файлов) будет нехилое.

 

Пока с серьёзным замедлением не сталкивался. До пары секунд. Хотя, конечно, и массивов на несколько десятко ссылок у меня никто не постит :)

 

>Ну кому как. Нам так не повезло..

 

Гм. На сервере и входящий платный? Я уже несколько лет таких провайдеров не встречал. Впрочем, "повезло" тут не подходит, т.к. я, например, сам хостера выбираю :D

 


 

Да, к чему я - выложил подправленную версию.

http://forums.airbase.ru/index.php?showtop...ndpost&p=413103

Исправлена обработка ссылок, с вплотную стоящими после них тэгами

Добавлено в [mergetime]1086725465[/mergetime]

Выложил на http://forums.airbase.ru/index.php?showtop...ndpost&p=413110 модуль обработки смайликов без их предварительного прописывания где-то. Все файлы валятся в один каталог и отображаются или по коду :<имя_файла>: или по алиасу, прописаному в отдельном файле.

Ссылка на комментарий
Поделиться на других сайтах

Впрочем, "повезло" тут не подходит, т.к. я, например, сам хостера выбираю

Когда ВСЁ устраивает и всё работает отменно, особенно начитавшись раздел "хостинг" данного форума, решишь, что уж лучше с платным входящим трафиком, чем делать гигантскую работу по переносу форума на дрйгой хостинг. А вдруг потом обратно? :D

Ссылка на комментарий
Поделиться на других сайтах

Song - систему надо писать так, чтобы её перенос проходил безболезненно :D

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

 

lools - нет. Добавить - да. Просто - нет :) Потому оно и в разделе Tips & Tricks, а не в форуме модов :)

 

Вот дойдут руки описать мод сохранения исходников в iBF, можно будет описать мод вызова этих функций. А с ним они уже просто кладутся в определённый файл в определённую папку и всё. Но под 1.x мне такое описание делать просто лень, так что буду ждать пререлиза 2.0, под неё и опишу.

Ссылка на комментарий
Поделиться на других сайтах

Song - систему надо писать так, чтобы её перенос проходил безболезненно

Дело не в трудности, а в нудности этой операции и проблемами с настройкой нового хостинга и пр.

Ссылка на комментарий
Поделиться на других сайтах

  • 4 недели спустя...

Внимание, ошибка в HTTP/Request!

 

В строке 962 файла HTTP/Request.php записано:

$this->_body = gzinflate(substr($this->_body, 10));

 

Во-первых, при перезагрузке mb_substr, substr отрезает уже не 10 байт, а 10 символов. Во-вторых, в этих 10 символах может встретится \x00 и тогда строка вообще пустая возвращается.

 

Залатать можно так:

$this->_body = gzinflate(preg_replace("!^.{10}!","",$this->_body));

Т.е. удаляем первые 10 символов p-regexp'ом.

 

Пример ссылки, на которой обламывается вариант с substr() - http://forum.lockon.ru/viewtopic.php?t=1541

 

Под Win - всё ок. Ошибка возникает в Linux RH 7.3

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

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

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.