yura3d |
Отправлено: 4 сентября 2009 — 17:12
|
ExBB Team ExBB Developer ExBB Mods Author
Покинул форум
Сообщений всего: 3394
Дата рег-ции: Февр. 2009
Откуда: Минск, Беларусь
Репутация: 353
|
Александр Михалицын пишет:Видел, что у некоторых участников форума стоит мой мод, но поставить ссылочку они конечно не догадались... Эх..
Ну во-первых, в условиях использования данного мода нет ни слова о необходимости установки ссылки на сайт автора, из этого следует что установка ссылки дело добровольное и не стоит по этому поводу обижаться. Во-вторых, я был бы готов поставить ссылки и на других своих проектах, была бы у этого мода поддержка кеширования подсвеченного кода, без кеширования парсинг большого объёма кода не лучшим образом сказывается на производительности Ну и в-третьих чисто дружеский совет - нужно заниматься больше совершенствованием движка и разработкой модов. Составлять правила и модерировать - тоже нужно, но некоторыми определёнными действиями можно вызвать только негатив пользователей, и ссылку на Ваш сайт тогда они точно не поставят. С другой стороны (сужу по своему опыту), люди ценят, когда им реально помогают, стоит только взяться за решение чьей-либо проблемы или за написание востребованного мода |
|
|
Александр Михалицын |
Отправлено: 5 сентября 2009 — 06:45
|
Super Member
Покинул форум
Сообщений всего: 723
Дата рег-ции: Февр. 2009
Репутация: 42
|
yura3d,
Цитата:Ну во-первых, в условиях использования данного мода нет ни слова о необходимости установки ссылки на сайт автора
Именно. Не вижу смысла кого-то заставлять. Просто это говорит о умении людей благодарить.
Цитата:этого мода поддержка кеширования подсвеченного кода
В разработке, я ведь говорил уже.
Цитата:Ну и в-третьих чисто дружеский совет - нужно заниматься больше совершенствованием движка и разработкой модов.
Надо, но это надо нам с тобой вместе делать, а ты свои наработки не выкладываешь... |
|
|
yura3d |
Отправлено: 5 сентября 2009 — 18:56
|
ExBB Team ExBB Developer ExBB Mods Author
Покинул форум
Сообщений всего: 3394
Дата рег-ции: Февр. 2009
Откуда: Минск, Беларусь
Репутация: 353
|
RomAndry пишет:Кстати ссылка на ExBB стоит в копирайтах.
Поскольку ссылка на наш форум поддержки прописана через редирект, формально процитированное утверждение неверно
Александр Михалицын
Реализация кеширования - это очень хорошо. Однако, судя по исходнику, кроме создания кешированной копии подсвеченного кода и в дальнейшем проверки её наличия со считыванием кода из файла, больше по кешированию ничего не сделано. А что делать в случае, если тема, в которой было много исходного кода, была удалена? Или, к примеру, если мне понадобится немного изменить опубликованный ранее код, соответственно изменится его MD5-хеш и будет создан новый файл с кешем, что в этом случае делать со старым? Нужно продумать систему управления кешем, чтобы при удалении тем/сообщений, изменении кода в сообщениях соответственно и удалялись или обновлялись кешированные данные. В противном случае кеш очень быстро замусориться неактуальными данными, которые (что самое обидное) занимают довольно много места на сервере
Александр Михалицын пишет:
Ну мне не очень смешно. Проверил мод, несколько раз подряд правил код в сообщении, после чего нажимал кнопку Предварительный просмотр. Итог - в папке кеша столько файлов, сколько раз была нажата эта кнопка, а ведь сообщение в конце концов даже не опубликовал, эти файлы остались на сервере, хотя данный кеш более не актуален
Мне кажется, принцип хранения кеша подсвеченного кода нужно реализовать по-другому и у меня есть 2 варианта предложения реализации
Первый в виде файловой структуры (структуры папок) кеш/раздел/тема/сообщение. Например, для темы с id=1 в разделе с id=2 будет создана папка highlight_code_cache/forum2/topic1, внутри которой будут создаваться файлы вида 123456789.php, где 123456789 - id сообщения, в каждом из подобных файлов будет храниться кеш для всего подсвеченного кода, имеющегося в данном сообщении. В дальнейшем управлять таким кешем просто, скажем, если мы удаляем тему, то не нужно парсить её сообщения, заного вычислять MD5-хеш всех встречающихся в ней вставок кода, достаточно просто удалить папку highlight_code_cache/forum2/topic1. Тоже самое справедливо и при удалении отдельных сообщений, или даже целых разделов. При этом необходимо реализовать своего рода период действия кеша, чтобы по истичении 1-2 дней с момент создания кеша код перекешировался (это на случай обновления библиотеки geshi и т.п.)
Второй вариант - сохранить уже имеющуся сейчас систему кеширования, но вынести список всех кешированных файлов в отдельный файл произвольного доступа. Тогда можно написать отдельный скрипт, который будет запускаться кроном через определённые промежутки времени и пробегаться за один запуск по некоторой части файлов кеша, сравнивая время последнего доступа к файлу (см. fileatime()) и удаляя давно невостребованный кеш. Принцип действия прост, при парсинге кода мы вычисляем его MD5-хеш, создаём кеш и помещаем MD5-хеш кода (а этот хеш есть имя файла кеша) в список файла произвольного доступа. Далее скрипт чистки запускается кроном, считывает некоторую часть списка (это важно - считывать именно часть списка, поэтому я упоминаю файл произвольного доступа, сериализацию здесь применить нельзя, тут скорее нужно применить метод, аналогичный сохранению структур в бинарные файлы на Си), сравнивает даты последнего доступа к ним и при необходимости удаляет. Можно в принципе дату последнего обращения к файлу кеша также хранить средствами скрипта (это я к тому, что на некоторых серверах и файловых системах использование fileatime() невозможно). Вариант со связкой opendir() + readdir() и подобные им не рассматриваем, т.к. при таком переборе во-первых значительно расходуются ресурсы, а во-вторых довольно сложно перейти в произвольную часть списка файлов, до которой не дошла проверка в предыдущий раз
У каждого варианта свои преимущества и недостатки, высказывайте своё отношение к ним и предлагайте свои идеи |
|
|
yura3d |
Отправлено: 6 сентября 2009 — 12:02
|
ExBB Team ExBB Developer ExBB Mods Author
Покинул форум
Сообщений всего: 3394
Дата рег-ции: Февр. 2009
Откуда: Минск, Беларусь
Репутация: 353
|
Александр Михалицын пишет:Эмм. А как ты предлагаешь контролировать изменение содержимого тега [code]?
При первом просмотре отредактированного сообщения открывается файл с кешем (как следует из 1-го предложенного мной варианта, для каждого сообщения будет отдельный файл с кешированным подсвеченным кодом, для 2-го же варианта вообще не имеет смысла отслеживать изменения). В данном файле уже будут храниться MD5-хеши ранее кешированного кода, и нам останется только сравнить сравнить старые и новые вставки кода, и если код очередной вставки не изменялся - её кеш сохраняем, если изменился, старый кеш удаляем и новый сохраняем. Таким образом этап постинга вообще не затрагивается, причём для обоих предложенных мной вариантов
Александр Михалицын пишет:Поэтому я и не писал еще чего-то большого и сложного для этой версии, ибо уже не вижу в этом смысле.
Смысл есть хотя бы потому, что многие наработки для файловой версии впоследствии можно будет без проблем применить и для ExBB 2.0. И не важно, осуществляется кеширование на уровне класса обработки бб-кодов или на уровне мода, общие принципы и методы реализации всё равно во многом сойдутся ко 2-м предлагаемым мной выше вариантам
Александр Михалицын пишет:Двойку писать надо...
Так я ведь не закрывал раздел для разработчиков ExBB 2.0, пожалуйста, предлагайте свои наработки. Я в ближайшее время выложу там полностью переписанную с нуля и отлаженную основу ядра новой версии. К сожелению, не все проблемы (особенно касаемо применения UTF-8 в новой версии) решены, и свободного времени не хватает, но если у нас будет реально команда, то мы гораздо быстрее решим многие вопросы разработки, чем я буду это делать в одиночку (одному мне, если честно, это и не нужно) |
|
|
Александр Михалицын |
Отправлено: 7 сентября 2009 — 06:59
|
Super Member
Покинул форум
Сообщений всего: 723
Дата рег-ции: Февр. 2009
Репутация: 42
|
yura3d,
Цитата:При первом просмотре отредактированного сообщения открывается файл с кешем (как следует из 1-го предложенного мной варианта, для каждого сообщения будет отдельный файл с кешированным подсвеченным кодом, для 2-го же варианта вообще не имеет смысла отслеживать изменения). В данном файле уже будут храниться MD5-хеши ранее кешированного кода, и нам останется только сравнить сравнить старые и новые вставки кода, и если код очередной вставки не изменялся - её кеш сохраняем, если изменился, старый кеш удаляем и новый сохраняем. Таким образом этап постинга вообще не затрагивается, причём для обоих предложенных мной вариантов
Ок. Сделаю.
Цитата:Смысл есть хотя бы потому, что многие наработки для файловой версии впоследствии можно будет без проблем применить и для ExBB 2.0. И не важно, осуществляется кеширование на уровне класса обработки бб-кодов или на уровне мода, общие принципы и методы реализации всё равно во многом сойдутся ко 2-м предлагаемым мной выше вариантам
Ну это смотря как писать... Если ядро писать по нормальному, то там надо будет все с нуля переписывать (все наработки), а если писать "чтоб просто работало", то да...
Но такая разработка не имеет практического интереса... Хочется написать не "еще один форум", а классный форум, с грамотным кодом и ПРАВИЛЬНЫМ применением ООП.
Цитата:Так я ведь не закрывал раздел для разработчиков ExBB 2.0, пожалуйста, предлагайте свои наработки. Я в ближайшее время выложу там полностью переписанную с нуля и отлаженную основу ядра новой версии. К сожелению, не все проблемы (особенно касаемо применения UTF-8 в новой версии) решены, и свободного времени не хватает, но если у нас будет реально команда, то мы гораздо быстрее решим многие вопросы разработки, чем я буду это делать в одиночку (одному мне, если честно, это и не нужно)
Эммм. Как так? Мы ведь даже еще не спроектировали ядро... Не разобрались какие классы будут... Какие паттерны проектирования будем применять и где... |
|
|
|